|
1 | 1 | import random |
2 | 2 | from nonebot.params import Depends |
3 | | -from nonebot.adapters.onebot.v11 import Message, MessageEvent |
| 3 | +from nonebot.adapters.onebot.v11 import Bot,Message, MessageEvent , MessageSegment, Message, GroupMessageEvent |
4 | 4 | from nonebot.matcher import Matcher |
5 | 5 | from nonebot.params import CommandArg, Arg |
6 | 6 | from nonebot.plugin import PluginMetadata |
|
19 | 19 |
|
20 | 20 |
|
21 | 21 | @catch_str.handle(parameterless=[Depends(check_CD)]) |
22 | | -async def _(matcher: Matcher, arg: Message = CommandArg()): |
23 | | - if arg.extract_plain_text().strip(): |
24 | | - matcher.set_arg("target", arg) |
25 | | - |
| 22 | +async def _(matcher: Matcher,bot: Bot, event: GroupMessageEvent, arg: Message = CommandArg()): |
| 23 | + msg = event.get_message() |
| 24 | + if "at" in msg: |
| 25 | + gid = event.group_id # 获取群号 |
| 26 | + uid = event.user_id |
| 27 | + qid = await get_at(event) |
| 28 | + target_str = "" |
| 29 | + print(qid) |
| 30 | + if not qid: |
| 31 | + if arg.extract_plain_text().strip(): |
| 32 | + matcher.set_arg("target", arg) |
| 33 | + else: |
| 34 | + await bot.call_api('get_group_member_list', group_id=gid) |
| 35 | + member_info = await bot.get_group_member_info(group_id=gid, user_id=qid) |
| 36 | + card_name = member_info['card'] if member_info['card'] else member_info['nickname'] |
| 37 | + target_str = card_name |
| 38 | + print(qid) |
| 39 | + await bot.call_api('get_group_member_list', group_id=gid) |
| 40 | + member_info = await bot.get_group_member_info(group_id=gid, user_id=uid) |
| 41 | + card_name = member_info['card'] if member_info['card'] else member_info['nickname'] |
| 42 | + msg1 = f"{card_name}说:\n-----------\n" |
| 43 | + msg = msg1 + random.choice(DATA).format(target_name=target_str) |
| 44 | + await matcher.finish(message=msg, reply_message=True) |
| 45 | + else: |
| 46 | + if arg.extract_plain_text().strip(): |
| 47 | + matcher.set_arg("target", arg) |
26 | 48 |
|
27 | 49 | @catch_str.got("target", "你要对哪个人发病呢?") |
28 | | -async def _(matcher: Matcher, target: Message = Arg("target")): |
| 50 | +async def _(matcher: Matcher,bot: Bot, event: GroupMessageEvent, target: Message = Arg("target")): |
29 | 51 | target_str = target.extract_plain_text().strip() |
| 52 | + gid = event.group_id # 获取群号 |
| 53 | + uid = event.user_id |
| 54 | + qid = await get_at(event) |
| 55 | + print(qid) |
30 | 56 | if not target_str: |
31 | | - await matcher.reject("你发的消息中没有文本,请重新输入!") |
| 57 | + await bot.call_api('get_group_member_list', group_id=gid) |
| 58 | + member_info = await bot.get_group_member_info(group_id=gid, user_id=qid) |
| 59 | + card_name = member_info['card'] if member_info['card'] else member_info['nickname'] |
| 60 | + target_str = card_name |
| 61 | + print(target_str) |
| 62 | + if not card_name: |
| 63 | + await matcher.reject("你发的消息中没有文本,请重新输入!") |
32 | 64 |
|
33 | 65 | msg = random.choice(DATA).format(target_name=target_str) |
34 | 66 | await matcher.finish(message=msg, reply_message=True) |
| 67 | + |
| 68 | +async def get_at(event: GroupMessageEvent) -> int: |
| 69 | + """获取被艾特用户 ID""" |
| 70 | + msg = event.get_message() |
| 71 | + for msg_seg in msg: |
| 72 | + if msg_seg.type == "at": |
| 73 | + return -1 if msg_seg.data["qq"] == "all" else int(msg_seg.data["qq"]) |
| 74 | + return -1 |
0 commit comments