diff options
Diffstat (limited to 'ATRI/utils')
-rw-r--r-- | ATRI/utils/cqcode.py | 29 | ||||
-rw-r--r-- | ATRI/utils/limit.py | 58 |
2 files changed, 87 insertions, 0 deletions
diff --git a/ATRI/utils/cqcode.py b/ATRI/utils/cqcode.py new file mode 100644 index 0000000..3102a92 --- /dev/null +++ b/ATRI/utils/cqcode.py @@ -0,0 +1,29 @@ +import re +from typing import Optional + +from ATRI.service import Service as sv + + +tencent_gchat_url = "gchat.qpic.cn" +noob_code = ["record", "video", "music", "xml", "json"] + + +async def coolq_code_check(cq_code: str, + user: Optional[int] = None, + group: Optional[int] = None): + _type = re.findall(r"CQ:(.*?),", cq_code) + for i in _type: + if i == "image": + result = re.findall(r"url=(.*?)]", cq_code) + url = "" if not result else result[0] + if tencent_gchat_url not in url: + msg = "你注你🐎呢" + await sv.NetworkPost.send_msg(user_id=user, + group_id=group, + message=msg) + else: + return True + elif i in noob_code: + return False + else: + return True
\ No newline at end of file diff --git a/ATRI/utils/limit.py b/ATRI/utils/limit.py new file mode 100644 index 0000000..06b1f35 --- /dev/null +++ b/ATRI/utils/limit.py @@ -0,0 +1,58 @@ +import datetime +from random import choice + +from ATRI.config import config +from ATRI.service import Service as sv +from .list import count_list, del_list_aim +from .apscheduler import scheduler, DateTrigger + + +exciting_user_temp = [] +exciting_user = [] +exciting_repo = [ + "歇歇8,。咱8能再快了", + "太快惹,太快惹嗯", + "你吼辣么快干什么!", + "其实吧我觉得你这速度去d个vup挺适合", + "我不接受!你太快了", + "我有点担心,因为你太快了", + "请稍等!您冲得太快了!" +] + + +def del_list(user: str) -> None: + global exciting_user + exciting_user = del_list_aim(exciting_user, user) + +async def is_too_exciting(user: int, group: int, + times: int, repo: bool) -> bool: + global exciting_user + + if user in exciting_user: + if repo: + await sv.NetworkPost.send_msg(user_id=user, + group_id=group, + message=choice(exciting_repo)) + return False + else: + if count_list(exciting_user_temp, user) == times: + delta = datetime.timedelta( + seconds=config["BotSelfConfig"]["session_exciting_time"]) + trigger = DateTrigger( + run_date=datetime.datetime.now() + delta) + + scheduler.add_job( + func=del_list, + trigger=trigger, + args=(user,), + misfire_grace_time=1, + ) + + if repo: + await sv.NetworkPost.send_msg(user_id=user, + group_id=group, + message=choice(exciting_repo)) + return False + else: + exciting_user_temp.append(user) + return True |