"""AuthBot 入口:组装 qqbotsdk 的 Bot 与验证业务并启动。 首次使用请复制 .env.example 为 .env 并填入 APPID/APPSECRET, 事件订阅开关在 intents.toml。WebSocket 方式直接 `python main.py`。 """ from loguru import logger from qqbotsdk import Bot from qqbotsdk.events import Event from qqbotsdk.model import Opcode from authbot.config import AuthConfig from authbot.handlers import setup def _log_every_event(bot: Bot) -> None: """给分发器加一层观测:任何业务事件到达即记日志。 SDK 对未注册 handler 的事件是静默跳过的,线上排查"平台到底推没推" 必须能看到每一个到达的 op=0 事件。 """ orig_emit = bot._emitter.emit async def logging_emit(payload: dict) -> None: t = payload.get("t") if payload.get("op") == Opcode.DISPATCH and isinstance(t, str): logger.info(f"收到网关事件: {t}") await orig_emit(payload) bot._emitter.emit = logging_emit def main() -> None: bot = Bot() # 构造时读 .env,缺 APPID/APPSECRET 会直接报错退出 cfg = AuthConfig.load() setup(bot, cfg) _log_every_event(bot) bot.run() if __name__ == "__main__": main()