No description
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-05 01:46:18 +03:00
clipboard_windows.go initial commit 2026-09-05 01:46:18 +03:00
clipboard_windows_test.go initial commit 2026-09-05 01:46:18 +03:00
flags.go initial commit 2026-09-05 01:46:18 +03:00
go.mod initial commit 2026-09-05 01:46:18 +03:00
input_unsupported.go initial commit 2026-09-05 01:46:18 +03:00
input_windows.go initial commit 2026-09-05 01:46:18 +03:00
main.go initial commit 2026-09-05 01:46:18 +03:00
main_test.go initial commit 2026-09-05 01:46:18 +03:00
posts.txt initial commit 2026-09-05 01:46:18 +03:00
README.md initial commit 2026-09-05 01:46:18 +03:00
rumbleposter.exe initial commit 2026-09-05 01:46:18 +03:00

rumbleposter

A small Go CLI that automates posting into an online chat by driving the mouse and keyboard. Each post is one cycle:

  1. left-click at the current mouse cursor position,
  2. paste a random line from your posts file (Ctrl+V),
  3. press Enter.

It has no dependencies and no CGO — mouse clicks, keystrokes, and the clipboard go straight through the Win32 API (user32!SendInput, CF_UNICODETEXT).

Build

go build -o rumbleposter.exe .

Requires Go 1.26+. Posting works on 64-bit Windows; the tool still builds and runs -dry-run elsewhere.

Usage

rumbleposter [options]
Option Default Meaning
-file, -f posts.txt File with the lines to post, one per line
-interval, -i 30s Wait between posts
-delay, -d 10s Wait before the first post
-jitter, -j 0 Add a random 0..J on top of each interval
-count, -n 0 Stop after N posts (0 = until Ctrl+C)
-dry-run off Print the lines instead of clicking and typing

Examples:

rumbleposter -f posts.txt -i 45s -d 15s
rumbleposter -f posts.txt -i 1m -j 20s -n 10
rumbleposter -f posts.txt -i 5s -dry-run

How to run it

The click happens wherever the cursor already is — rumbleposter never moves the mouse. So:

  1. Start the tool, giving yourself enough -delay to get ready.
  2. During that delay, move the mouse pointer over the chat's message box.
  3. Leave it there. Every -interval, the click lands on the input box, the line is pasted, and Enter sends it.

Press Ctrl+C at any time to stop.

Posts file

One message per line. Blank lines and lines starting with # are skipped, and surrounding whitespace is trimmed:

# rumbleposter picks one line at random for each post.
Let's go!
Great stream today
Hello from the chat

A line is picked at random each time, independently, so repeats are possible.

Notes

  • The tool uses the system clipboard to paste, so it overwrites whatever you have copied. It does not restore the previous contents.
  • Keep the chat window focused. The synthesized click and keystrokes go to whatever window is under the cursor / has focus at that moment, so an interruption (a popup stealing focus, you clicking elsewhere) can send the text somewhere you did not intend. -dry-run is there to rehearse timings.
  • Automated posting may break the terms of service of the chat platform you point it at, and many sites rate-limit or ban for it. Set a sane -interval and use it where it is allowed.

Tests

go test ./...          # includes a real clipboard round-trip
go test -short ./...   # skips the test that overwrites your clipboard