feat: 添加状态监控插件和Redis原子操作支持
- 新增 `/status` 指令,展示机器人运行状态和系统指标 - 实现Redis Lua脚本支持原子化计数器操作 - 添加消息收发统计功能 - 完善文档,包括插件开发和性能优化指南 - 重构WebSocket连接池,增加健康检查机制 - 移除旧版编译脚本,优化项目结构
This commit is contained in:
@@ -127,6 +127,19 @@ class MessageHandler(BaseHandler):
|
||||
"""
|
||||
处理消息事件,分发给命令处理器或通用消息处理器
|
||||
"""
|
||||
# 原子化地增加接收消息总数
|
||||
from ..managers.redis_manager import redis_manager
|
||||
from ..utils.logger import logger
|
||||
try:
|
||||
lua_script = "return redis.call('INCR', KEYS[1])"
|
||||
await redis_manager.execute_lua_script(
|
||||
script=lua_script,
|
||||
keys=["neobot:stats:messages_received"],
|
||||
args=[]
|
||||
)
|
||||
except Exception as e:
|
||||
logger.error(f"接收消息计数失败: {e}")
|
||||
|
||||
from ..managers import permission_manager
|
||||
for handler_info in self.message_handlers:
|
||||
consumed = await self._run_handler(handler_info["func"], bot, event)
|
||||
@@ -165,6 +178,19 @@ class MessageHandler(BaseHandler):
|
||||
await bot.send(event, message_template.format(permission_name=permission_name))
|
||||
return
|
||||
|
||||
# 在执行指令前,原子化地增加指令调用次数
|
||||
from ..managers.redis_manager import redis_manager
|
||||
from ..utils.logger import logger
|
||||
try:
|
||||
lua_script = "return redis.call('HINCRBY', KEYS[1], ARGV[1], 1)"
|
||||
await redis_manager.execute_lua_script(
|
||||
script=lua_script,
|
||||
keys=["neobot:command_stats"],
|
||||
args=[command_name]
|
||||
)
|
||||
except Exception as e:
|
||||
logger.error(f"指令 /{command_name} 调用次数统计失败: {e}")
|
||||
|
||||
await self._run_handler(
|
||||
func,
|
||||
bot,
|
||||
|
||||
Reference in New Issue
Block a user