Skip to content

Commit 7f4b5a7

Browse files
committed
feat(metrics): 优化消息计数指标并添加适配器维度
- 在 received_messages_counter 和 sent_messages_counter 中添加 adapter_name 标签 - 更新 sent_messages_counter 以支持多种适配器的发送消息 API - 优化 metrics.py 文件结构,提高可读性和可维护性
1 parent b932c62 commit 7f4b5a7

File tree

2 files changed

+34
-6
lines changed

2 files changed

+34
-6
lines changed

nonebot_plugin_prometheus/metrics.py

+33-5
Original file line numberDiff line numberDiff line change
@@ -41,24 +41,52 @@ async def handle_bot_disconnect(bot: Bot):
4141

4242

4343
received_messages_counter = Counter(
44-
"nonebot_received_messages", "Total number of received messages", ["bot_id"]
44+
"nonebot_received_messages",
45+
"Total number of received messages",
46+
["bot_id", "adapter_name"],
4547
)
4648

4749

4850
@on_message(block=False).handle()
4951
async def handle_message(bot: Bot):
50-
received_messages_counter.labels(bot.self_id).inc()
52+
received_messages_counter.labels(bot.self_id, bot.adapter.get_name()).inc()
5153

5254

5355
sent_messages_counter = Counter(
54-
"nonebot_sent_messages", "Total number of sent messages", ["bot_id", "user_id"]
56+
"nonebot_sent_messages",
57+
"Total number of sent messages",
58+
["bot_id", "adapter_name", "user_id"],
5559
)
5660

5761

5862
@Bot.on_calling_api
5963
async def handle_api_call(bot: Bot, api: str, data: Dict[str, Any]):
60-
if api == "send_msg":
61-
sent_messages_counter.labels(bot.self_id, data["user_id"]).inc()
64+
send_msg_apis = {
65+
# OneBot v11 https://github.com/nonebot/adapter-onebot/blob/027ee801b947578b19868f6ac9ece110335619e1/nonebot/adapters/onebot/v11/bot.pyi#L72
66+
"send_msg",
67+
# OneBot v12 https://github.com/nonebot/adapter-onebot/blob/027ee801b947578b19868f6ac9ece110335619e1/nonebot/adapters/onebot/v12/bot.pyi#L183
68+
# Telegram https://github.com/nonebot/adapter-telegram/blob/d2b60fbd26ed57f7912191b1a405939b95a4e634/nonebot/adapters/telegram/api.py#L96
69+
# Red
70+
"send_message",
71+
# Discord https://github.com/nonebot/adapter-discord/blob/5794c0b53b4fe1f41726fd09b4db1a5239ef965b/nonebot/adapters/discord/api/client.pyi#L408
72+
"create_message",
73+
# Dodo
74+
"set_channel_message_send",
75+
# Feishu
76+
"im/v1/messages",
77+
"im/v1/images",
78+
# QQ
79+
"post_messages",
80+
"post_group_messages",
81+
# Satori
82+
"message_create"
83+
# Kaiheila
84+
"directMessage_create",
85+
}
86+
if api in send_msg_apis:
87+
sent_messages_counter.labels(
88+
bot.self_id, bot.adapter.get_name(), data["user_id"]
89+
).inc()
6290

6391

6492
matcher_calling_counter = Counter(

pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "nonebot-plugin-prometheus"
3-
version = "0.3.7"
3+
version = "0.3.8"
44
description = "为 NoneBot 和其他插件提供 Prometheus 监控支持"
55
readme = "README.md"
66
requires-python = ">=3.9, <4.0"

0 commit comments

Comments
 (0)