summaryrefslogtreecommitdiff
path: root/ATRI/plugins/call_owner.py
blob: cd79d1c007a462ec51ab7264c9aeaad4fa5ff7cc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
from nonebot.permission import SUPERUSER
from nonebot.typing import T_State
from nonebot.adapters.cqhttp import (
    Bot,
    MessageEvent
)

from ATRI.service import Service as sv
from ATRI.config import Config
from ATRI.utils.apscheduler import scheduler
from ATRI.utils.list import count_list


repo_list = []
__doc__ = """
给维护者留言
权限组:所有人
用法:
  来杯红茶 (msg)
"""

repo = sv.on_command(cmd="来杯红茶", docs=__doc__)

@repo.args_parser  # type: ignore
async def _repo_load(bot: Bot, event: MessageEvent, state: T_State) -> None:
    msg = str(event.message)
    if msg == "算了":
        await repo.finish('好吧')
    
    if not msg:
        await repo.reject('话呢?')
    else:
        state['msg_repo'] = msg

@repo.handle()
async def _repo(bot: Bot, event: MessageEvent, state: T_State) -> None:
    msg = str(event.message).strip()
    if msg:
        state['msg_repo'] = msg

@repo.got('msg_repo', prompt="请告诉咱需要反馈的内容~!")
async def _repo_deal(bot: Bot, event: MessageEvent, state: T_State) -> None:
    global repo_list
    msg = state['msg_repo']
    user = event.user_id
    
    if count_list(repo_list, user) == 5:
        await repo.finish("吾辈已经喝了五杯红茶啦!明天再来吧。")
    
    repo_list.append(user)

    for sup in Config.BotSelfConfig.superusers:
        await bot.send_private_msg(
            user_id=sup,
            message=f"来自用户[{user}]反馈:\n{msg}"
        )
    
    await repo.finish("吾辈的心愿已由咱转告给咱的维护者了~!")


@scheduler.scheduled_job(
    "cron",
    hour=0,
    misfire_grace_time=60
)
async def _() -> None:
    global repo_list
    repo_list.clear()


__doc__ = """
重置给维护者的留言次数
权限组:维护者
用法:
  /重置红茶
"""

reset_repo = sv.on_command(
    cmd="重置红茶",
    docs=__doc__,
    permission=SUPERUSER
)

@reset_repo.handle()
async def _reset_repo(bot: Bot, event: MessageEvent) -> None:
    global repo_list
    repo_list.clear()
    await reset_repo.finish("红茶重置完成~!")