"""JIGAIDO Telegram bot entrypoint.""" import logging import os import sys from telegram.ext import Application, CommandHandler, MessageHandler, filters from commands import ( cmd_add, cmd_bounty, cmd_delete, cmd_edit, cmd_help, cmd_my, cmd_start, cmd_timezone, cmd_track, cmd_untrack, cmd_update, ) logging.basicConfig( format="%(asctime)s %(levelname)s %(name)s: %(message)s", level=logging.INFO, ) log = logging.getLogger(__name__) BOT_TOKEN = os.environ.get("JIGAIDO_BOT_TOKEN", "") def build_app() -> Application: app = Application.builder().token(BOT_TOKEN).build() app.add_handler(CommandHandler("start", cmd_start)) app.add_handler(CommandHandler("help", cmd_help)) app.add_handler(CommandHandler("bounty", cmd_bounty)) app.add_handler(CommandHandler("my", cmd_my)) app.add_handler(CommandHandler("add", cmd_add)) app.add_handler(CommandHandler("edit", cmd_edit)) app.add_handler(CommandHandler("update", cmd_update)) app.add_handler(CommandHandler("delete", cmd_delete)) app.add_handler(CommandHandler("track", cmd_track)) app.add_handler(CommandHandler("untrack", cmd_untrack)) app.add_handler(CommandHandler("timezone", cmd_timezone)) app.add_handler(MessageHandler(filters.COMMAND, cmd_help)) return app async def post_init(app: Application) -> None: await app.bot.set_my_commands( [ ("bounty", "List bounties"), ("my", "Your tracked bounties"), ("add", "Add a bounty"), ("edit", "Edit a bounty"), ("track", "Track a bounty"), ("untrack", "Stop tracking"), ("timezone", "Get/set room timezone"), ("help", "Show help"), ] ) def main() -> None: if not BOT_TOKEN: log.error("JIGAIDO_BOT_TOKEN environment variable not set.") sys.exit(1) app = build_app() app.post_init = post_init log.info("JIGAIDO starting...") app.run_polling(drop_pending_updates=True) if __name__ == "__main__": main()