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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
from random import choice
from nonebot.typing import T_State
from nonebot.adapters.cqhttp import Bot, MessageEvent
from ATRI.utils import CoolqCodeChecker
from ATRI.utils.limit import FreqLimiter
from ATRI.utils.apscheduler import scheduler
from .data_source import Chat
from ATRI.plugins.atri_chat_bot import ATRIChatBot
_chat_flmt = FreqLimiter(3)
_chat_flmt_notice = choice(["慢...慢一..点❤", "冷静1下", "歇会歇会~~", "我开始为你以后的伴侣担心了..."])
chat = Chat().on_message("闲聊(文爱")
@chat.handle()
async def _chat(bot: Bot, event: MessageEvent):
print(1)
user_id = event.get_user_id()
if not _chat_flmt.check(user_id):
await chat.finish(_chat_flmt_notice)
msg = str(event.message)
repo = await Chat().deal(msg, user_id)
_chat_flmt.start_cd(user_id)
try:
if repo:
await chat.finish(repo)
else: # 实在没话说就尝试 chatterbot
await chat.finish(await ATRIChatBot.get_response(msg))
except Exception:
return
my_name_is = Chat().on_command("叫我", "更改闲聊(划掉 文爱)时的称呼", aliases={"我是"}, priority=1)
@my_name_is.args_parser # type: ignore
async def _get_name(bot: Bot, event: MessageEvent, state: T_State):
msg = str(event.message).strip()
quit_list = ["算了", "罢了", "取消"]
if msg in quit_list:
await my_name_is.finish("好吧...")
if not msg:
await my_name_is.reject("欧尼酱想让咱如何称呼呢!0w0")
else:
state["name"] = msg
@my_name_is.handle()
async def _name(bot: Bot, event: MessageEvent, state: T_State):
user_id = event.get_user_id()
if not _chat_flmt.check(user_id):
await my_name_is.finish(_chat_flmt_notice)
msg = str(event.message).strip()
if msg:
state["name"] = msg
@my_name_is.got("name", "欧尼酱想让咱如何称呼呢!0w0")
async def _deal_name(bot: Bot, event: MessageEvent, state: T_State):
user_id = event.get_user_id()
new_name = state["name"]
repo = choice(
[
f"好~w 那咱以后就称呼你为{new_name}!",
f"噢噢噢!原来你叫{new_name}阿~",
f"好欸!{new_name}ちゃん~~~",
"很不错的称呼呢w",
]
)
Chat().name_is(user_id, new_name)
_chat_flmt.start_cd(user_id)
await my_name_is.finish(repo)
say = Chat().on_command("说", "别人让我说啥就说啥(", priority=1)
@say.args_parser # type: ignore
async def _get_say(bot: Bot, event: MessageEvent, state: T_State):
msg = str(event.message).strip()
quit_list = ["算了", "罢了"]
if msg in quit_list:
await say.finish("好吧...")
if not msg:
await say.reject("阿!要咱说啥呢...")
else:
state["say"] = msg
@say.handle()
async def _ready_say(bot: Bot, event: MessageEvent, state: T_State):
user_id = event.get_user_id()
if not _chat_flmt.check(user_id):
await say.finish(_chat_flmt_notice)
msg = str(event.message)
if msg:
state["say"] = msg
@say.got("say")
async def _deal_say(bot: Bot, event: MessageEvent, state: T_State):
msg = state["say"]
check = CoolqCodeChecker(msg).check
if not check:
repo = choice(["不要...", "这个咱不想复读!", "不可以", "不好!"])
await say.finish(repo)
user_id = event.get_user_id()
_chat_flmt.start_cd(user_id)
await say.finish(msg)
@scheduler.scheduled_job("interval", name="闲聊词库检查更新", hours=3, misfire_grace_time=60)
async def _check_kimo():
try:
await Chat().update_data()
except BaseException:
pass
|