🐛 fix bug founded during test in mirai adapter

This commit is contained in:
Mix 2021-02-07 12:17:21 +08:00
parent 49010bf5b7
commit 85aba9e36f
3 changed files with 9 additions and 7 deletions

View File

@ -253,10 +253,9 @@ class Bot(BaseBot):
* ``message: Union[MessageChain, MessageSegment, str]``: 要发送的消息 * ``message: Union[MessageChain, MessageSegment, str]``: 要发送的消息
* ``at_sender: bool``: 是否 @ 事件主体 * ``at_sender: bool``: 是否 @ 事件主体
""" """
if isinstance(message, MessageSegment): print(event, message, at_sender)
if not isinstance(message, MessageChain):
message = MessageChain(message) message = MessageChain(message)
elif isinstance(message, str):
message = MessageChain(MessageSegment.plain(message))
if isinstance(event, FriendMessage): if isinstance(event, FriendMessage):
return await self.send_friend_message(target=event.sender.id, return await self.send_friend_message(target=event.sender.id,
message_chain=message) message_chain=message)

View File

@ -273,12 +273,14 @@ class MessageChain(BaseMessage):
""" """
@overrides(BaseMessage) @overrides(BaseMessage)
def __init__(self, message: Union[List[Dict[str, Any]], def __init__(self, message: Union[List[Dict[str,
Iterable[MessageSegment], MessageSegment], Any]], Iterable[MessageSegment],
**kwargs): MessageSegment, str], **kwargs):
super().__init__(**kwargs) super().__init__(**kwargs)
if isinstance(message, MessageSegment): if isinstance(message, MessageSegment):
self.append(message) self.append(message)
elif isinstance(message, str):
self.append(MessageSegment.plain(text=message))
elif isinstance(message, Iterable): elif isinstance(message, Iterable):
self.extend(self._construct(message)) self.extend(self._construct(message))
else: else:

View File

@ -149,6 +149,7 @@ def process_nick(bot: "Bot", event: GroupMessage) -> GroupMessage:
nick_regex = '|'.join(filter(lambda x: x, bot.config.nickname)) nick_regex = '|'.join(filter(lambda x: x, bot.config.nickname))
matched = re.search(rf"^({nick_regex})([\s,]*|$)", text, re.IGNORECASE) matched = re.search(rf"^({nick_regex})([\s,]*|$)", text, re.IGNORECASE)
if matched is not None: if matched is not None:
event.to_me = True
nickname = matched.group(1) nickname = matched.group(1)
Log.info(f'User is calling me {nickname}') Log.info(f'User is calling me {nickname}')
plain.data['text'] = text[matched.end():] plain.data['text'] = text[matched.end():]
@ -159,7 +160,7 @@ def process_nick(bot: "Bot", event: GroupMessage) -> GroupMessage:
def process_reply(bot: "Bot", event: GroupMessage) -> GroupMessage: def process_reply(bot: "Bot", event: GroupMessage) -> GroupMessage:
reply = event.message_chain.extract_first(MessageType.QUOTE) reply = event.message_chain.extract_first(MessageType.QUOTE)
if reply is not None: if reply is not None:
if reply.data['sender_id'] == event.self_id: if reply.data['senderId'] == event.self_id:
event.to_me = True event.to_me = True
else: else:
event.message_chain.insert(0, reply) event.message_chain.insert(0, reply)