加一个 status.py
This commit is contained in:
parent
475e7d8821
commit
778e4ec410
67
plugins/status.py
Normal file
67
plugins/status.py
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import time
|
||||||
|
|
||||||
|
from typing import TYPE_CHECKING, TypeVar
|
||||||
|
|
||||||
|
if TYPE_CHECKING:
|
||||||
|
from ica_typing import IcaNewMessage, IcaClient
|
||||||
|
from ica_typing import TailchatReciveMessage, TailchatClient
|
||||||
|
else:
|
||||||
|
IcaNewMessage = TypeVar("NewMessage")
|
||||||
|
IcaClient = TypeVar("IcaClient")
|
||||||
|
TailchatReciveMessage = TypeVar("TailchatReciveMessage")
|
||||||
|
TailchatClient = TypeVar("TailchatClient")
|
||||||
|
|
||||||
|
|
||||||
|
class Counter:
|
||||||
|
def __init__(self, count_time: int = 60):
|
||||||
|
self.msg_pre_min_ica = 0.0
|
||||||
|
self.ica_msg: list[float] = []
|
||||||
|
self.msg_pre_min_tc = 0.0
|
||||||
|
self.tc_msg: list[float] = []
|
||||||
|
self.count_time = count_time
|
||||||
|
|
||||||
|
def ica_update(self):
|
||||||
|
now = time.time()
|
||||||
|
self.ica_msg.append(now)
|
||||||
|
self.ica_msg = [x for x in self.ica_msg if now - x <= self.count_time]
|
||||||
|
self.msg_pre_min_ica = len(self.ica_msg) / (self.count_time / 60)
|
||||||
|
|
||||||
|
def tc_update(self):
|
||||||
|
now = time.time()
|
||||||
|
self.tc_msg.append(now)
|
||||||
|
self.tc_msg = [x for x in self.tc_msg if now - x <= self.count_time]
|
||||||
|
self.msg_pre_min_tc = len(self.tc_msg) / (self.count_time / 60)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def ica_frequence(self):
|
||||||
|
return self.msg_pre_min_ica
|
||||||
|
|
||||||
|
@property
|
||||||
|
def tc_frequence(self):
|
||||||
|
return self.msg_pre_min_tc
|
||||||
|
|
||||||
|
|
||||||
|
COUNTER = Counter(120)
|
||||||
|
|
||||||
|
def on_ica_message(msg: IcaNewMessage, client: IcaClient) -> None:
|
||||||
|
if msg.is_from_self:
|
||||||
|
return
|
||||||
|
COUNTER.ica_update()
|
||||||
|
if msg.is_reply:
|
||||||
|
return
|
||||||
|
if msg.content == "/bot-count":
|
||||||
|
reply = f"ica 每分钟消息数: {COUNTER.ica_frequence:.2f}\ntailchat 每分钟消息数: {COUNTER.tc_frequence:.2f}"
|
||||||
|
client.send_message(msg.reply_with(reply))
|
||||||
|
|
||||||
|
|
||||||
|
def on_tailchat_message(msg: TailchatReciveMessage, client: TailchatClient) -> None:
|
||||||
|
if msg.is_from_self:
|
||||||
|
return
|
||||||
|
COUNTER.tc_update()
|
||||||
|
if msg.is_reply:
|
||||||
|
return
|
||||||
|
if msg.content == "/bot-count":
|
||||||
|
reply = f"ica 每分钟消息数: {COUNTER.ica_frequence:.2f}\ntailchat 每分钟消息数: {COUNTER.tc_frequence:.2f}"
|
||||||
|
client.send_message(msg.reply_with(reply))
|
Loading…
Reference in New Issue
Block a user