Add Telegram bot entry point and handler registration
This commit is contained in:
@@ -0,0 +1,111 @@
|
|||||||
|
"""Puppy Bot entry point. Run with: python bot.py"""
|
||||||
|
import logging
|
||||||
|
import sys
|
||||||
|
|
||||||
|
from telegram.ext import (
|
||||||
|
ApplicationBuilder,
|
||||||
|
CommandHandler,
|
||||||
|
InlineQueryHandler,
|
||||||
|
MessageHandler,
|
||||||
|
filters,
|
||||||
|
)
|
||||||
|
|
||||||
|
from config import TELEGRAM_TOKEN
|
||||||
|
import services.auth as auth
|
||||||
|
from services import settings as settings_store
|
||||||
|
from handlers import chat, inline
|
||||||
|
from handlers import admin
|
||||||
|
from handlers.help import cmd_help
|
||||||
|
from utils import context as runtime_context
|
||||||
|
|
||||||
|
logging.basicConfig(
|
||||||
|
format="%(asctime)s | %(name)s | %(levelname)s | %(message)s",
|
||||||
|
level=logging.INFO,
|
||||||
|
stream=sys.stdout,
|
||||||
|
)
|
||||||
|
logging.getLogger("httpx").setLevel(logging.WARNING)
|
||||||
|
logging.getLogger("telegram").setLevel(logging.WARNING)
|
||||||
|
|
||||||
|
logger = logging.getLogger("puppy")
|
||||||
|
|
||||||
|
async def _error_handler(update, ctx):
|
||||||
|
err = getattr(ctx, "error", None)
|
||||||
|
logger.exception("Unhandled bot error: %s", err)
|
||||||
|
runtime_context.record_error(f"Unhandled bot error: {err}")
|
||||||
|
|
||||||
|
|
||||||
|
def _register_handlers(app):
|
||||||
|
# ── General / all-auth ─────────────────────────────────
|
||||||
|
app.add_handler(CommandHandler("start", admin.cmd_start))
|
||||||
|
app.add_handler(CommandHandler("help", cmd_help))
|
||||||
|
app.add_handler(CommandHandler("ping", admin.cmd_ping))
|
||||||
|
app.add_handler(CommandHandler("clear", admin.cmd_clear))
|
||||||
|
app.add_handler(CommandHandler("myhistory", admin.cmd_myhistory))
|
||||||
|
app.add_handler(CommandHandler("setmaxtoken", admin.cmd_setmaxtoken))
|
||||||
|
app.add_handler(CommandHandler("getmaxtoken", admin.cmd_getmaxtoken))
|
||||||
|
app.add_handler(CommandHandler("resettoken", admin.cmd_resettoken))
|
||||||
|
app.add_handler(CommandHandler("setlang", admin.cmd_setlang))
|
||||||
|
app.add_handler(CommandHandler("status", admin.cmd_status))
|
||||||
|
app.add_handler(CommandHandler("model", admin.cmd_model))
|
||||||
|
app.add_handler(CommandHandler("togglesearch", admin.cmd_togglesearch))
|
||||||
|
app.add_handler(CommandHandler("search", admin.cmd_search))
|
||||||
|
app.add_handler(CommandHandler("ocr", admin.cmd_ocr))
|
||||||
|
app.add_handler(CommandHandler("imagine", admin.cmd_imagine))
|
||||||
|
app.add_handler(CommandHandler("myid", admin.cmd_myid))
|
||||||
|
|
||||||
|
# ── Owner-only ─────────────────────────────────────────
|
||||||
|
app.add_handler(CommandHandler("stats", admin.cmd_stats))
|
||||||
|
app.add_handler(CommandHandler("dashboard", admin.cmd_stats))
|
||||||
|
app.add_handler(CommandHandler("uptime", admin.cmd_uptime))
|
||||||
|
app.add_handler(CommandHandler("version", admin.cmd_version))
|
||||||
|
app.add_handler(CommandHandler("addauth", admin.cmd_addauth))
|
||||||
|
app.add_handler(CommandHandler("removeauth", admin.cmd_removeauth))
|
||||||
|
app.add_handler(CommandHandler("listauth", admin.cmd_listauth))
|
||||||
|
app.add_handler(CommandHandler("ban", admin.cmd_ban))
|
||||||
|
app.add_handler(CommandHandler("unban", admin.cmd_unban))
|
||||||
|
app.add_handler(CommandHandler("listban", admin.cmd_listban))
|
||||||
|
app.add_handler(CommandHandler("userinfo", admin.cmd_userinfo))
|
||||||
|
app.add_handler(CommandHandler("broadcast", admin.cmd_broadcast))
|
||||||
|
app.add_handler(CommandHandler("clearall", admin.cmd_clearall))
|
||||||
|
app.add_handler(CommandHandler("setpersonality", admin.cmd_setpersonality))
|
||||||
|
app.add_handler(CommandHandler("resetpersonality",admin.cmd_resetpersonality))
|
||||||
|
app.add_handler(CommandHandler("setmodel", admin.cmd_setmodel))
|
||||||
|
app.add_handler(CommandHandler("setprovider", admin.cmd_setprovider))
|
||||||
|
app.add_handler(CommandHandler("models", admin.cmd_models))
|
||||||
|
app.add_handler(CommandHandler("unlock", admin.cmd_unlock))
|
||||||
|
app.add_handler(CommandHandler("lock", admin.cmd_lock))
|
||||||
|
app.add_handler(CommandHandler("reload", admin.cmd_reload))
|
||||||
|
|
||||||
|
# ── Message handlers ───────────────────────────────────
|
||||||
|
app.add_handler(MessageHandler(filters.PHOTO & ~filters.COMMAND, chat.message_handler))
|
||||||
|
app.add_handler(MessageHandler(filters.Document.IMAGE & ~filters.COMMAND, chat.message_handler))
|
||||||
|
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, chat.message_handler))
|
||||||
|
|
||||||
|
# ── Inline mode ────────────────────────────────────────
|
||||||
|
app.add_handler(InlineQueryHandler(inline.inline_handler))
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
if not TELEGRAM_TOKEN:
|
||||||
|
logger.error("TELEGRAM_TOKEN is not set.")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
auth.load()
|
||||||
|
settings_store.load()
|
||||||
|
logger.info("Auth loaded — %d authorized, %d banned",
|
||||||
|
len(auth.get_authorized()), len(auth.get_banned()))
|
||||||
|
|
||||||
|
app = (
|
||||||
|
ApplicationBuilder()
|
||||||
|
.token(TELEGRAM_TOKEN)
|
||||||
|
.build()
|
||||||
|
)
|
||||||
|
_register_handlers(app)
|
||||||
|
app.add_error_handler(_error_handler)
|
||||||
|
|
||||||
|
logger.info("Puppy is starting…")
|
||||||
|
app.run_polling(drop_pending_updates=True)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
Reference in New Issue
Block a user