Archived
1
0
Fork 0
This repository has been archived on 2024-04-26. You can view files and clone it, but cannot push or open issues or pull requests.
akari-bot/core/utils/cooldown.py
2023-10-25 22:07:11 +08:00

42 lines
1.1 KiB
Python

import datetime
from core.types import MessageSession
from typing import Union
_cd_lst = {}
class CoolDown:
def __init__(self, k, msg: Union[MessageSession, str], all=False):
self.k = k
self.msg = msg
self.sender_id = self.msg
if isinstance(self.sender_id, MessageSession):
if all:
self.sender_id = self.msg.target.target_id
else:
self.sender_id = self.sender_id.target.sender_id
def add(self):
if self.k not in _cd_lst:
_cd_lst[self.k] = {}
_cd_lst[self.k][self.sender_id] = datetime.datetime.now().timestamp()
def check(self, delay):
if self.k not in _cd_lst:
return 0
if self.sender_id in _cd_lst[self.k]:
if (d := (datetime.datetime.now().timestamp() - _cd_lst[self.k][self.sender_id])) > delay:
return 0
else:
return d
else:
return 0
def reset(self):
if self.k in _cd_lst:
if self.sender_id in _cd_lst[self.k]:
_cd_lst[self.k].pop(self.sender_id)
self.add()