diff options
author | Kyomotoi <[email protected]> | 2021-07-31 16:21:23 +0800 |
---|---|---|
committer | Kyomotoi <[email protected]> | 2021-07-31 16:21:23 +0800 |
commit | 1d54ec291f2c25cc01f24d0d0163d0bf889457fd (patch) | |
tree | 251004df3f659f79b96b9abce59cc1140e24498c /ATRI/plugins/wife | |
parent | beb16b60fe4d8586436f5ada5fdabb6db23f5a29 (diff) | |
parent | 36d26d1dc61c36b4601aaf75e148060c5bcb98a7 (diff) | |
download | ATRI-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__.py | 68 | ||||
-rw-r--r-- | ATRI/plugins/wife/data_source.py | 25 |
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)) |