summaryrefslogtreecommitdiff
path: root/ATRI/rule.py
diff options
context:
space:
mode:
Diffstat (limited to 'ATRI/rule.py')
-rw-r--r--ATRI/rule.py114
1 files changed, 55 insertions, 59 deletions
diff --git a/ATRI/rule.py b/ATRI/rule.py
index 19930e5..586faf9 100644
--- a/ATRI/rule.py
+++ b/ATRI/rule.py
@@ -1,106 +1,102 @@
import datetime
from random import choice
-from nonebot.adapters import Event
from nonebot.rule import Rule
-from nonebot.adapters.cqhttp import GroupMessageEvent
+from nonebot.adapters.cqhttp.event import Event
+from nonebot.adapters.cqhttp import GroupMessageEvent, PokeNotifyEvent
-from .service.switch import Switch
-from .service.banlist import BanList
-from .service.dormant import Dormant
-from .apscheduler import scheduler, DateTrigger
from .config import config
-from .utils import count_list, del_list_aim
-
-
-warting_list = []
-fast_user_list = []
+from .service.limit import Limit
+from .service.banlist import BanSystem
+from .service import Service
+from .utils.list import count_list, del_list_aim
+from .utils.apscheduler import scheduler, DateTrigger
def is_in_service(service: str) -> Rule:
async def _is_in_service(bot, event, state) -> bool:
if isinstance(event, GroupMessageEvent):
- return await Switch.auth_service(service, event.group_id)
- return await Switch.auth_service(service)
-
+ return await Limit.auth_service(service, event.group_id)
+ return await Limit.auth_service(service)
+
return Rule(_is_in_service)
-def is_in_ban_list() -> Rule:
- async def _is_in_ban_list(bot, event, state) -> bool:
- return BanList.is_in_list(event.get_user_id())
-
- return Rule(_is_in_ban_list)
+def is_in_banlist() -> Rule:
+ async def _is_in_banlist(bot, event, state) -> bool:
+ return BanSystem.is_in_list(str(event.get_user_id()))
+
+ return Rule(_is_in_banlist)
def is_in_dormant() -> Rule:
async def _is_in_dormant(bot, event, state) -> bool:
- return Dormant.is_sleep()
-
- return Rule(_is_in_dormant)
-
-def is_max_times(max_times: int, time_day: int,
- time_hour: int, time_min: int) -> Rule:
- async def _is_max_times(bot, event: Event, state) -> bool:
- global warting_list
- user = event.get_user_id()
- if user in warting_list:
- return False
-
-
-
-
- return True
+ return Service.is_dormant()
- return Rule(_is_max_times)
+ return Rule(_is_in_dormant)
-def is_too_fast(times: int, _type: str) -> Rule:
- def remove_list(user: str) -> None:
- global fast_user_list
- fast_user_list = del_list_aim(fast_user_list, user)
-
- async def _is_too_fast(bot, event: Event, state) -> bool:
- global fast_user_list
+exciting_user = []
+exciting_repo = [
+ "歇歇8,。咱8能再快了",
+ "太快惹,太快惹嗯",
+ "你吼辣么快干什么!",
+ "其实吧我觉得你这速度去d个vup挺适合",
+ "我不接受!你太快了",
+ "我有点担心,因为你太快了",
+ "请稍等!您冲得太快了!"
+]
+
+def is_too_exciting(times: int) -> Rule:
+ def del_list(user: str) -> None:
+ global exciting_user
+ exciting_user = del_list_aim(exciting_user, user)
+
+ async def _is_too_exciting(bot, event, state) -> bool:
+ global exciting_user
user = event.get_user_id()
-
- if user in fast_user_list:
+
+ if user in exciting_user:
await bot.send(
- event, choice(config['bot']['session_waiting_repo']))
+ event,
+ choice(exciting_repo)
+ )
return False
else:
- if count_list(fast_user_list, user) == times:
+ if count_list(exciting_user, user) == times:
delta = datetime.timedelta(
- seconds=config['bot']['session_waiting_time'])
+ seconds=config["BotSelfConfig"]["session_exciting_time"])
trigger = DateTrigger(
run_date=datetime.datetime.now() + delta)
scheduler.add_job(
- func=remove_list,
+ func=del_list,
trigger=trigger,
args=(user,),
misfire_grace_time=1,
)
-
+
await bot.send(
- event, choice(config['bot']['session_waiting_repo']))
+ event,
+ choice(exciting_repo)
+ )
return False
else:
- fast_user_list.append(user)
+ exciting_user.append(user)
return True
- return Rule(_is_too_fast)
+ return Rule(_is_too_exciting)
def to_bot() -> Rule:
- async def _to_bot(bot, event: Event, state) -> bool:
+ async def _to_bot(bot, event, state) -> bool:
return event.is_tome()
return Rule(_to_bot)
-def poke() -> Rule:
- async def _poke(bot, event, state) -> bool:
- return True if event.is_tome() else False
-
- return Rule(_poke)
+def poke(bot, event: PokeNotifyEvent, state):
+ if event.is_tome():
+ return True
+ else:
+ return False