Files
snowy-yang 755013b9db 初始提交:QQ 群入群验证机器人
基于 qqbotsdk-py 的入群验证:进群发按钮验证码、完成前禁言、
超时踢出(11253 时兜底长期禁言)、乱点他人按钮处罚、状态持久化
与重启恢复。38 个单元/集成测试。
2026-10-04 18:44:08 +08:00

44 lines
1.2 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""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()