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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
import asyncio
from random import choice
from pydantic import BaseModel
from nonebot.permission import USER
from nonebot.rule import Rule
from nonebot.permission import SUPERUSER
from nonebot.adapters.cqhttp import Bot, MessageEvent, GroupMessageEvent, Message
from ATRI.utils.limit import FreqLimiter
from .data_source import Wife
_tietie_flmt = FreqLimiter(600)
tietie_superuser = Wife().on_message("只与维护者贴贴w", rule=Rule(), permission=SUPERUSER, block=False)
@tietie_superuser.handle()
async def _tietie_superuser(bot: Bot, event: MessageEvent):
user_id = event.get_user_id()
if not _tietie_flmt.check(user_id):
await tietie_superuser.finish()
result = Wife().to_superuser(user_id)
_tietie_flmt.start_cd(user_id)
await tietie_superuser.finish(Message(result))
_wife_flmt = FreqLimiter(10)
class MarryInfo(BaseModel):
name: str
sex: str
wife: str
get_wife = Wife().on_command("抽老婆", "随机选择一位幸运裙友成为老婆!")
@get_wife.handle()
async def _get_wife(bot: Bot, event: GroupMessageEvent):
user_id = event.get_user_id()
if not _wife_flmt.check(user_id):
await get_wife.finish()
group_id = event.group_id
req_user_info: dict = await bot.get_group_member_info(group_id=group_id, user_id=int(user_id))
req_user_card = req_user_info["card"]
req_user_sex = req_user_info["sex"]
is_nick = "老公" if req_user_sex == "male" else "老婆"
repo_0 = (
"现在咱将随机抽取一位幸运裙友\n"
f"成为{req_user_card}的{is_nick}!"
)
await bot.send(event, repo_0)
await asyncio.sleep(10)
prep_list = await bot.get_group_member_list(group_id=group_id)
prep_list = [prep.get("user_id", 114514) for prep in prep_list]
lucky_user = choice(prep_list)
lucky_user_info: dict = await bot.get_group_member_info(group_id=group_id, user_id=lucky_user)
lucky_user_card = lucky_user_info["card"]
lucky_user_sex = lucky_user_info["sex"]
data = Wife().load_marry_list()
data[lucky_user] = MarryInfo(
name=req_user_card,
sex=is_nick,
wife=user_id
).dict()
data[user_id] = MarryInfo(
name=lucky_user_card,
sex=lucky_user_sex,
wife=lucky_user
).dict()
Wife().save_marry_list(data)
repo_1 = f"好欸!{lucky_user_card}成为了{req_user_card}的{is_nick}"
_wife_flmt.start_cd(user_id)
await get_wife.finish(repo_1)
_call_wife_flmt = FreqLimiter(60)
call_wife = Wife().on_command("老婆", "呼唤老婆/老公!", aliases={"老公", "老婆!", "老公!"}, permission=USER("114514"))
@call_wife.handle()
async def _call_wife(bot: Bot, event: MessageEvent):
user_id = event.get_user_id()
if not _wife_flmt.check(user_id):
await call_wife.finish()
data = Wife().load_marry_list()
if user_id not in data:
return
wife = data[user_id].get("wife", "ignore")
sex = data[user_id].get("sex", "male")
is_nick = "老公" if sex == "male" else "老婆"
repo = f"你已经有{is_nick}啦!是{wife}噢~"
_call_wife_flmt.start_cd(user_id)
await call_wife.finish(repo)
discard_wife = Wife().on_command("我要离婚", "离婚!")
@discard_wife.handle()
async def _discard_wife(bot: Bot, event: GroupMessageEvent):
user_id = event.get_user_id()
if not _wife_flmt.check(user_id):
await discard_wife.finish()
await bot.send(event, "真的吗...(y/是)")
msg = str(event.message).strip()
rd_list = ["y", "Y", "是", "确认", "对"]
if msg not in rd_list:
await discard_wife.finish("")
group_id = event.group_id
group_info: dict = await bot.get_group_member_info(group_id=group_id, user_id=int(user_id))
user_card = group_info.get("card", "老婆")
data = Wife().load_marry_list()
if user_id not in data:
await discard_wife.finish("你还没对象呐...")
discard_user_info = data[user_id]
discard_user_card = discard_user_info["name"]
discard_user_id = discard_user_info["wife"]
data.pop(user_id)
data.pop(discard_user_id)
Wife().save_marry_list(data)
repo = f"悲,{user_card}抛弃了{discard_user_card}..."
_wife_flmt.start_cd(user_id)
await discard_wife.finish(repo)
|