ef90ee6a0b737e8221efd0380f96f89a0367fefa
Stats panel: a persistent spinner marks whichever target is currently being scanned/reacted to, and jittered waits show a live-ticking countdown bar instead of a static "waiting Xs" line. Both the status line and countdown row are always rendered (blank when idle) so their appearing/disappearing no longer shifts the table's height. Backlog: channel_scan_state now tracks oldest_covered_at alongside newest_id_seen. If days_back is widened after a channel already has a resume checkpoint, the forward-only diff would never look back far enough to notice — now the newly-exposed gap gets backfilled first.
dc-nogi
Does the thing
Setup
- Install Python 3.10 or newer.
- Install dependencies:
pip install -r requirements.txt - Copy
config.example.jsontoconfig.jsonand fill in:token: your account token (Discord dev tools -> Network tab -> any request ->authorizationheader, while logged into the Discord web app).friend_id: your friend's numeric Discord user ID (enable Developer Mode in Discord settings, right-click their name -> Copy User ID).emoji: the unicode emoji to react with, e.g."🫄".days_back: how many days of history to scan on first run (default 10).manual_guild_ids(optional): guild IDs to always include, used as a fallback if the mutual-guilds lookup ever fails or misses a server.
- Run it:
python main.py
Usage
python main.py # run normally: backlog scan, then live watching
python main.py --undo # remove every reaction this script has ever added, then exit
Description
Languages
Python
100%