refactor(plugins): comprehensive code review - ~35 fixes across 14 plugins
Phase 1 - Plugin code review (14/14 plugins): - Security: 3x token leak in print→logger.debug, Bearer prefix handling - Bug: bare except→specific exceptions, HorseState type safety, sync→async - Critical: response_model undefined, route dead code, sync blocking event loop - Quality: 11x print()→logger, variable name shadowing, consistent logging Phase 2 - Deep analysis: - Fix: payout int truncation→max(1, round(amount*odds)) - Fix: room_store get_lock race condition→dict.setdefault() - Verify: data_manager f-string SQL is safe (uses ? placeholders) Infrastructure: review reports generated for all plugins.
This commit is contained in:
@@ -1,69 +1,65 @@
|
||||
"""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.model_validate(get_driver().config.dict())
|
||||
|
||||
|
||||
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)}")
|
||||
"""Danding_QqPush 插件初始化模块"""
|
||||
from nonebot import get_driver
|
||||
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.model_validate(get_driver().config.model_dump())
|
||||
|
||||
|
||||
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}")
|
||||
|
||||
|
||||
# 插件加载时注册路由
|
||||
try:
|
||||
register_routes()
|
||||
logger.info("[Danding_QqPush] 插件加载成功")
|
||||
except Exception as e:
|
||||
logger.error(f"[Danding_QqPush] 插件加载失败: {str(e)}")
|
||||
|
||||
|
||||
# Bot 连接时自动初始化 sender
|
||||
driver = get_driver()
|
||||
@driver.on_bot_connect
|
||||
async def _(bot):
|
||||
"""Bot 连接时自动设置 sender"""
|
||||
try:
|
||||
sender.set_bot(bot)
|
||||
logger.info(f"[Danding_QqPush] Bot 已连接: {bot.self_id}")
|
||||
except Exception as e:
|
||||
logger.error(f"[Danding_QqPush] Bot 连接初始化失败: {e}")
|
||||
|
||||
Reference in New Issue
Block a user