加一个 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