signal-bot/fake_signal
Krzysztof kuhy Rudnicki e3c7bbfe23 !good bot: thank the asker with an emoji on their message, not a reply
A compliment gets a reaction drawn from a small warm set (❤️ 🥰 😊 👍 🎉 🙏
😸) put on the compliment itself, and nothing in the group -- the one
answer that adds no line. Same cooldown as every other command.

The transport learns reactions: send_reaction on the Protocol, POST
/v1/reactions/<number> on the REST adapter with the four fields
api.SendReactionRequest requires (204 back), a recorded list on the fake.
CommandContext.react() names the target the way a quote does, and falls
back to the emoji as text for an envelope with no timestamp, so a shape
this bot has never seen is visible rather than swallowed.

The fake container gains the endpoint, strict about the schema, and
records reactions in order with the sends; a scenario can now expect
{kind: reaction, quotes: true}. First two-word trigger: fold() keeps the
inner space and the registry matches whole text first, so "!good bot"
resolves and "!good" does not; one-word spellings cover a double space.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-09-04 21:48:03 +02:00
..
proofs Let the operator add aliases from the Commands tab 2026-09-04 16:20:05 +02:00
scenarios !good bot: thank the asker with an emoji on their message, not a reply 2026-09-04 21:48:03 +02:00
__init__.py feat: rewrite the bot so it runs, and gate it like the other repos 2026-08-29 13:05:42 +02:00
cli.py feat: two commands that answer with somebody else's work 2026-08-31 21:32:07 +02:00
routes_account.py feat: discover groups from the account, so adding the bot is the whole setup 2026-08-29 15:30:08 +02:00
routes_api.py !good bot: thank the asker with an emoji on their message, not a reply 2026-09-04 21:48:03 +02:00
routes_control.py feat: add a photo to the album from the chat, tagged, stripped and verified 2026-08-31 11:20:00 +02:00
routes_fixtures.py feat: two commands that answer with somebody else's work 2026-08-31 21:32:07 +02:00
routes_groups.py feat: discover groups from the account, so adding the bot is the whole setup 2026-08-29 15:30:08 +02:00
scenario.py !good bot: thank the asker with an emoji on their message, not a reply 2026-09-04 21:48:03 +02:00
server.py feat: discover groups from the account, so adding the bot is the whole setup 2026-08-29 15:30:08 +02:00
state.py !good bot: thank the asker with an emoji on their message, not a reply 2026-09-04 21:48:03 +02:00