Features
Every Cookiebot feature, what it must keep doing, and whether v2 does it yet
One page per feature. The header block on each is generated from the migration spec and the last test run; everything under it is written by whoever ported the feature — what it does, what a group would notice if it changed, and how to check it by hand.
This section is the build view: one page per unit of porting work, in the spec's vocabulary. If you run a group and want to know what a command does, Using Cookiebot is the same behaviour written for you.
Status means exactly one thing here:
| Done | Implemented, with at least one scenario executing green |
| Partial | Implemented, but the spec is incomplete or scenarios are missing |
| Planned | Scheduled in a milestone, not started |
| Blocked | Cannot start until something else lands |
Core moderation
The survival set: what a group needs the bot to do while nobody is watching.
| Feature | Status | Milestone | Layer | Scenarios | Triggers |
|---|---|---|---|---|---|
| List available commands core_listcommand | Done | M1 | gateway | 6 green | /commands/comandos |
| Privacy policy core_privacy | Done | M1 | gateway | 8 green | /privacy/privacidade/privacidad |
| Reload cached admins and settings core_reload | Done | M1 | gateway | 3 green | /reload/recarregar |
| Group rules and /newrules core_rules | Done | M1 | gateway | 14 green | /rules/regras/newrules/novasregras |
| Welcome message and /newwelcome core_welcome | Done | M1 | gateway | 18 green | /newwelcome/novobemvindo |
| Join captcha core_groupguardian | Done | M1 | gateway | 9 green | — |
| Anti sticker spam core_stickerspam | Done | M1 | gateway | 9 green | — |
| Media restriction for new members core_mediarestrict | Done | M1 | gateway | 9 green | — |
| Language selection core_setlang | Done | M1 | gateway | 8 green | — |
| Per-event bot skins core_botskins | Done | M1 | gateway | 5 green | — |
| Identify music in voice notes core_musicdetection | Done | M3 | worker | 5 green | — |
Utility
| Feature | Status | Milestone | Layer | Scenarios | Triggers |
|---|---|---|---|---|---|
| Health check from chat util_isalive | Done | M0 | gateway | 4 green | /isalive/tavivo |
| Admin configuration menu util_config | Done | M1 | gateway | 6 green | /config/configure/configurar |
| Block listed users from joining util_doomlist | Done | M1 | gateway | 4 green | — |
| Today's birthdays util_birthday | Done | M2 | worker | 3 green | /birthday/aniversario/cumpleanos |
| Upcoming birthdays util_nextbirthday | Done | M2 | gateway | 2 green | /nextbirthday/proximosaniversarios |
| Ping every member util_everyone | Done | M2 | worker | 3 green | /everyone@everyone |
| Call the admins util_calladms | Done | M2 | worker | 7 green | /adm@admin/report |
| Rewrite social links util_embedder | Done | M2 | gateway | 16 green | — |
| YouTube search util_youtube | Done | M2 | worker | 1 green | /youtube |
| Cross-group post forwarding util_postforwarder | Done | M3 | worker | 8 green | /divulgar/publish/publicar/repost/repostar/reenviar |
| Receive forwarded posts util_postgetter | Done | M3 | gateway | 4 green | — |
| Delete scheduled reposts util_deletereposts | Done | M3 | gateway | 2 green | /deletereposts/deleteposts/apagarposts |
| Giveaways x_giveaways | Done | M3 | gateway | 10 green | /giveaway |
| Voice transcription x_speech_to_text | Done | M3 | gateway | 6 green | /transcribe/transcrever/transcribir |
| Reverse image search x_reverse_search | Done | M3 | worker | 6 green | /searchsource/buscarfonte/buscarfuente |
| Owner-only operations x_owner_commands | Done | M3 | gateway | 9 green | /grupos/groups/broadcast/leave/blacklist/unblacklist/stop/restart |
| Image search (v1's catch-all) x_image_search | Done | M3 | gateway | 10 green | /qualquercoisa/anything/cualquiercosa |
| Message analysis (reply_to_message dump) x_analysis | Done | M3 | gateway | 7 green | /analise/analisis/analysis |
Fun
The reason members interact with the bot at all — and the reason v1 got installed in the first place.
| Feature | Status | Milestone | Layer | Scenarios | Triggers |
|---|---|---|---|---|---|
| Roll an n-sided die fun_dice | Done | M2 | gateway | 9 green | /dice/dado/d20 |
| Ship two members fun_ship | Done | M2 | gateway | 8 green | /ship/shippar/shipp |
| Random cause of death fun_death | Done | M2 | gateway | 8 green | /death/morte/muerte |
| Meme generator fun_meme | Done | M2 | worker | 4 green | /meme |
| Battle poll fun_battle | Done | M2 | gateway | 10 green | /battle/batalha/batalla |
| Random media from the group fun_random | Done | M2 | gateway | 33 green | /random/aleatorio |
| Firecracker sequence fun_firecracker | Done | M2 | gateway | 2 green | /firecracker/rojao/fogos |
| Complaint bit fun_complaint | Done | M2 | gateway | 4 green | /complaint/milton/reclamacao/reclamação/queja |
| Partnered convention posters fun_partneredcons | Done | M2 | gateway | 10 green | /bff/patas/fursmeet/trex/furcamp/pawstral |
| Conversational AI replies x_conversational_ai | Done | M3 | gateway | 7 green | — |
| Media distortion x_distortion | Done | M3 | worker | 12 green | /destroy/zoar/destruir |
| Per-group custom commands x_custom_commands | Done | M3 | gateway | 6 green | — |
| Age guess (agify.io) x_age_guess | Done | M3 | gateway | 7 green | /idade/age/edad |
| Gender guess (genderize.io) x_gender_guess | Done | M3 | gateway | 8 green | /genero/gênero/gender |
| Unearth a random old message x_unearth | Done | M3 | gateway | 6 green | /desenterrar/unearth |
| Fortune cookie x_fortune_cookie | Done | M3 | gateway | 5 green | /sorte/fortunecookie/suerte |
| Drawing idea prompt x_drawing_idea | Done | M3 | gateway | 5 green | /ideiadesenho/drawingidea/ideadibujo |
| Sticker DB auto-reply x_sticker_autoreply | Done | M3 | gateway | 6 green | — |
Platform
Not user-visible, but everything above stands on it.
Carried v1 defects
Thirteen defects found in v1, each owed a regression test in v2
Per-event bot skins
one process serves every skin; cb_core/skins.py adds the two behavioural forks v1 keys on is_alternate_bot (intro animation, fun-override flair) plus the per-skin asset override tree; all 5 personas configured (0007). Handler packs landed with x_custom_commands - see cb_gateway/packs.py