summaryrefslogtreecommitdiff
path: root/ATRI/plugins/wife
diff options
context:
space:
mode:
authorKyomotoi <[email protected]>2021-07-31 16:21:23 +0800
committerKyomotoi <[email protected]>2021-07-31 16:21:23 +0800
commit1d54ec291f2c25cc01f24d0d0163d0bf889457fd (patch)
tree251004df3f659f79b96b9abce59cc1140e24498c /ATRI/plugins/wife
parentbeb16b60fe4d8586436f5ada5fdabb6db23f5a29 (diff)
parent36d26d1dc61c36b4601aaf75e148060c5bcb98a7 (diff)
downloadATRI-1d54ec291f2c25cc01f24d0d0163d0bf889457fd.tar.gz
ATRI-1d54ec291f2c25cc01f24d0d0163d0bf889457fd.tar.bz2
ATRI-1d54ec291f2c25cc01f24d0d0163d0bf889457fd.zip
Merge branch 'main' of https://github.com/Kyomotoi/ATRI into main
Diffstat (limited to 'ATRI/plugins/wife')
-rw-r--r--ATRI/plugins/wife/__init__.py68
-rw-r--r--ATRI/plugins/wife/data_source.py25
2 files changed, 53 insertions, 40 deletions
diff --git a/ATRI/plugins/wife/__init__.py b/ATRI/plugins/wife/__init__.py
index a113b8a..7773057 100644
--- a/ATRI/plugins/wife/__init__.py
+++ b/ATRI/plugins/wife/__init__.py
@@ -14,14 +14,17 @@ from .data_source import Wife
_tietie_flmt = FreqLimiter(600)
-tietie_superuser = Wife().on_message("只与维护者贴贴w", rule=Rule(), permission=SUPERUSER, block=False)
+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))
@@ -29,6 +32,7 @@ async def _tietie_superuser(bot: Bot, event: MessageEvent):
_wife_flmt = FreqLimiter(10)
+
class MarryInfo(BaseModel):
name: str
sex: str
@@ -37,46 +41,42 @@ class MarryInfo(BaseModel):
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_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}!"
- )
+
+ 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_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[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
+ 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)
@@ -85,18 +85,21 @@ async def _get_wife(bot: Bot, event: GroupMessageEvent):
_call_wife_flmt = FreqLimiter(60)
-call_wife = Wife().on_command("老婆", "呼唤老婆/老公!", aliases={"老公", "老婆!", "老公!"}, permission=USER("114514"))
+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 "老婆"
@@ -107,30 +110,33 @@ async def _call_wife(bot: Bot, event: MessageEvent):
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))
+ 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)
diff --git a/ATRI/plugins/wife/data_source.py b/ATRI/plugins/wife/data_source.py
index 38e8be4..670f862 100644
--- a/ATRI/plugins/wife/data_source.py
+++ b/ATRI/plugins/wife/data_source.py
@@ -18,10 +18,9 @@ __doc__ = """
class Wife(Service):
-
def __init__(self):
Service.__init__(self, "老婆", __doc__, rule=is_in_service("老婆"))
-
+
def to_superuser(self, user_id: str):
"""
全自动贴贴机,限制只有超级管理员才能贴贴
@@ -30,10 +29,18 @@ class Wife(Service):
[
"mua!",
"贴贴!",
- MessageSegment.image(file="https://cdn.jsdelivr.net/gh/Kyomotoi/CDN@master/project/ATRI/wife0.jpg"),
- MessageSegment.image(file="https://cdn.jsdelivr.net/gh/Kyomotoi/CDN@master/project/ATRI/wife1.jpg"),
- MessageSegment.image(file="https://cdn.jsdelivr.net/gh/Kyomotoi/CDN@master/project/ATRI/wife2.jpg"),
- MessageSegment.image(file="https://cdn.jsdelivr.net/gh/Kyomotoi/CDN@master/project/ATRI/wife3.jpg")
+ MessageSegment.image(
+ file="https://cdn.jsdelivr.net/gh/Kyomotoi/CDN@master/project/ATRI/wife0.jpg"
+ ),
+ MessageSegment.image(
+ file="https://cdn.jsdelivr.net/gh/Kyomotoi/CDN@master/project/ATRI/wife1.jpg"
+ ),
+ MessageSegment.image(
+ file="https://cdn.jsdelivr.net/gh/Kyomotoi/CDN@master/project/ATRI/wife2.jpg"
+ ),
+ MessageSegment.image(
+ file="https://cdn.jsdelivr.net/gh/Kyomotoi/CDN@master/project/ATRI/wife3.jpg"
+ ),
]
)
result = MessageSegment.at(user_id) + content
@@ -49,10 +56,10 @@ class Wife(Service):
if not path.is_file():
with open(path, "w", encoding="utf-8") as w:
w.write(json.dumps({}))
-
+
data = json.loads(path.read_bytes())
return data
-
+
@staticmethod
def save_marry_list(data: dict) -> None:
"""
@@ -63,6 +70,6 @@ class Wife(Service):
if not path.is_file():
with open(path, "w", encoding="utf-8") as w:
w.write(json.dumps({}))
-
+
with open(path, "w", encoding="utf-8") as w:
w.write(json.dumps(data, indent=4))