Firecracker sequence
fun · M2
/firecracker/rojao/fogos- v1 scenarios
- 1
- Ported
- 2
- Green
- 2
- Failing
- —
Miscellaneous.py:226-238What it does
Any of five spellings — /rojao, /rojão, /acende, /fogos,
/firecracker — sets off a firecracker in the chat. The bot reacts 🎉, replies
with a fuse ("fiiiiiiii.... "), pauses briefly, then fires a burst of pra
messages of random length before ending with a bang
("💥POOOOOOOWW💥"). The number of burst messages varies from run to run — it
is not a fixed animation, it is a small random walk, exactly as it always was.
Behaviour that must not change
All five triggers work with or without extra text after them and with or
without @botname tacked on. The three output strings — the fuse, the pra
repeats, and the bang — are never translated: v1 never localised them, and
localising them now would change what every existing group sees for a command
they already know. There is no cooldown and no admin check. If fun functions
are turned off in /config, the bot says so with the "fun functions are off"
reply instead of ignoring the command.
The burst itself is a flood risk by design (up to ~21 messages per invocation) — that risk is preserved, not throttled, because adding pacing would change timing users already know. What changed is only how it's run: the sequence never blocks the bot from handling other chats' messages while it plays out.
The full behaviour contract lives in docs/contracts/fun_firecracker.md.
How to verify it
qa/features/fun_firecracker.feature — two scenarios (the firecracker
sequence, and the fun-off gate), run with python scripts/cb.py test. By hand
in the sandbox: send /firecracker in a group and watch the reaction, fuse,
burst and bang play out.
Roll an n-sided die
QA says 'roll 6'; v1 ships /dado and /d<N> - alias table already covers both
Meme generator
v1's 97kB metadata CSV ships as package data, its 110MB of templates go to object storage via `cb.py meme-seed`; Pillow compositing in cb-worker; v1's roster fallback was dead code and its empty-pool branch a NameError, both fixed - see docs/contracts/fun_meme.md; QA authored (4 scenarios)