feat: 添加状态监控插件和Redis原子操作支持
- 新增 `/status` 指令,展示机器人运行状态和系统指标 - 实现Redis Lua脚本支持原子化计数器操作 - 添加消息收发统计功能 - 完善文档,包括插件开发和性能优化指南 - 重构WebSocket连接池,增加健康检查机制 - 移除旧版编译脚本,优化项目结构
This commit is contained in:
@@ -9,6 +9,7 @@ from datetime import datetime
|
||||
|
||||
from core.bot import Bot
|
||||
from core.managers.command_manager import matcher
|
||||
from core.managers.redis_manager import redis_manager
|
||||
from core.utils.executor import run_in_thread_pool
|
||||
from models.events.message import MessageEvent, MessageSegment
|
||||
|
||||
@@ -91,6 +92,36 @@ async def handle_jrcd(bot: Bot, event: MessageEvent, args: list[str]):
|
||||
reply_segments = [MessageSegment.at(user_id), MessageSegment.from_text(msg_text)]
|
||||
await event.reply(reply_segments)
|
||||
|
||||
# 使用 Lua 脚本原子化地增加总调用次数
|
||||
lua_script = "return redis.call('INCR', KEYS[1])"
|
||||
try:
|
||||
total_calls = await redis_manager.execute_lua_script(
|
||||
script=lua_script,
|
||||
keys=["neobot:jrcd:total_calls"],
|
||||
args=[]
|
||||
)
|
||||
if total_calls:
|
||||
logger.info(f"jrcd 总调用次数: {total_calls}")
|
||||
except Exception as e:
|
||||
logger.error(f"jrcd 插件增加调用次数失败: {e}")
|
||||
|
||||
|
||||
@matcher.command("jrcd_stats")
|
||||
async def handle_jrcd_stats(bot: Bot, event: MessageEvent, args: list[str]):
|
||||
"""
|
||||
处理 jrcd_stats 指令,查询 /jrcd 的总调用次数。
|
||||
|
||||
:param bot: Bot 实例。
|
||||
:param event: 消息事件对象。
|
||||
:param args: 指令参数列表(未使用)。
|
||||
"""
|
||||
total_calls = await redis_manager.get("neobot:jrcd:total_calls")
|
||||
if not total_calls:
|
||||
total_calls = 0
|
||||
|
||||
reply_text = f"/jrcd 指令已被大家调用了 {total_calls} 次啦!"
|
||||
await event.reply(reply_text)
|
||||
|
||||
|
||||
@matcher.command("bbcd")
|
||||
async def handle_bbcd(bot: Bot, event: MessageEvent, args: list[str]):
|
||||
|
||||
Reference in New Issue
Block a user