Add SHUTDOWN_MODE kill switch with farewell announcement#20
Merged
Conversation
When SHUTDOWN_MODE is truthy, the first middleware intercepts every update and replies with SHUTDOWN_MESSAGE (or the bundled default). No command, scene or callback handler runs while it is on.
Drop the env-var message override, the TRUTHY-spelling set, the callback_query ack and the try/catch/chat guards. The middleware is now a single conditional reply with the bundled farewell.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
SHUTDOWN_MODEenv flag flips the bot into "answer-only" mode: a single Telegraf middleware intercepts every update before session/scenes/handlers and replies with the shutdown announcement.SHUTDOWN_MESSAGEenv var overrides the bundled default text (src/helpers/shutdownMode.ts:DEFAULT_SHUTDOWN_MESSAGE).callback_queryupdates are acknowledged viaanswerCbQueryso buttons don't spin; reply errors are swallowed and logged so a bad update can't crash the bot.How to use
Set in
.env(or DigitalOcean App Platform env vars) and restart:Flip
SHUTDOWN_MODEoff (or unset) to restore normal operation. Cron checkers (price alerts etc.) are not gated by this flag.Test plan
npm run lintpassesnpm run buildpassesnpx jest— 72/72 green, including 13 new tests covering env parsing, override,callback_query, missingctx.chat, and reply errorsSHUTDOWN_MODE=trueon a staging bot, confirm/start, plain messages and inline-button presses all receive the announcement and no other handler fires