功能:通过 HTTP API 实现 Danding_QqPush 插件,用于 QQ 群通知

- 增加了通过外部 HTTP API 向 QQ 群组发送消息的核心功能。
- 实现了对长文本消息的图片渲染,以避免被认定为垃圾信息。
- 支持在消息中提及特定的 QQ 用户。
- 创建了用于 API 令牌和图片渲染设置的配置选项。
- 开发了一个测试脚本以验证 API 功能。
- 对现有代码进行了重构,以提高组织性和可维护性。
This commit is contained in:
2026-01-20 21:19:05 +08:00
parent 4a944316fe
commit dedc872f1b
14 changed files with 1065 additions and 48 deletions

View File

@@ -0,0 +1,69 @@
"""Danding_QqPush 插件初始化模块"""
from nonebot import get_driver, get_bots
from nonebot.log import logger
from nonebot.plugin import PluginMetadata
from .config import Config
from .api import create_routes
from .sender import sender
__plugin_meta__ = PluginMetadata(
name="danding_qqpush",
description="通过外部 HTTP API 向 QQ 群定向推送通知",
usage="""
API 接口:
POST /danding/qqpush/{token}
请求参数:
{
"group_id": 123456789,
"qq": 987654321,
"text": "系统告警#数据库连接失败#请立即处理"
}
说明:
- text 中的 # 表示换行
- 消息会自动渲染为图片并发送到指定群
""",
config=Config,
)
# 加载配置
plugin_config = Config.parse_obj(get_driver().config)
def register_routes():
"""注册 FastAPI 路由"""
driver = get_driver()
# 创建并注册路由
routes = create_routes(plugin_config.Token, plugin_config)
driver.server_app.include_router(routes)
logger.info(f"[Danding_QqPush] API 路由已注册: /danding/qqpush/{plugin_config.Token}")
def init_bot():
"""初始化 Bot 实例"""
try:
bots = get_bots()
if bots:
# 获取第一个可用的 Bot
bot = list(bots.values())[0]
sender.set_bot(bot)
logger.info(f"[Danding_QqPush] Bot 已连接: {bot.self_id}")
else:
logger.warning("[Danding_QqPush] 未找到可用的 Bot 实例")
except Exception as e:
logger.warning(f"[Danding_QqPush] 初始化 Bot 失败: {str(e)}")
# 插件加载时注册路由并初始化 Bot
try:
register_routes()
init_bot()
logger.info("[Danding_QqPush] 插件加载成功")
except Exception as e:
logger.error(f"[Danding_QqPush] 插件加载失败: {str(e)}")