From 03c7b59df5467bd8aedf938b399b8edea739653f Mon Sep 17 00:00:00 2001 From: synodriver <624805065@qq.com> Date: Thu, 19 Nov 2020 13:07:02 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86at=E6=9C=BA?= =?UTF-8?q?=E5=99=A8=E4=BA=BA=E6=97=B6=E7=9A=84bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nonebot/adapters/cqhttp/__init__.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/nonebot/adapters/cqhttp/__init__.py b/nonebot/adapters/cqhttp/__init__.py index 88b71820..f6e91681 100644 --- a/nonebot/adapters/cqhttp/__init__.py +++ b/nonebot/adapters/cqhttp/__init__.py @@ -112,14 +112,14 @@ async def _check_reply(bot: "Bot", event: "Event"): return msg_seg = event.message[index] event.reply = await bot.get_msg(message_id=msg_seg.data["id"]) - if event.reply["sender"]["user_id"] == event.self_id: + if event.reply["sender"]["user_id"] == int(event.self_id): # TODO 这里一个int一个str需要修改 event.to_me = True del event.message[index] if not event.message: event.message.append(MessageSegment.text("")) -def _check_at_me(bot: "Bot", event: "Event"): +def _check_at_me(bot: "Bot", event: "Event"): # TODO 只有开头at机器人才会识别,其他的不管 应该删除前面两个如果存在的at以及后面正文前面的空格 """ :说明: @@ -138,8 +138,8 @@ def _check_at_me(bot: "Bot", event: "Event"): else: at_me_seg = MessageSegment.at(event.self_id) - # check the first segment - if event.message[0] == at_me_seg: + # check the first segment at 空 at + if event.message[0] == at_me_seg: # TODO 有时候不能正常判断 event.to_me = True del event.message[0] if event.message[0].type == "text": @@ -147,13 +147,14 @@ def _check_at_me(bot: "Bot", event: "Event"): "text"].lstrip() if not event.message[0].data["text"]: del event.message[0] - if event.message[0] == at_me_seg: - del event.message[0] - if event.message[0].type == "text": - event.message[0].data["text"] = event.message[0].data[ - "text"].lstrip() - if not event.message[0].data["text"]: - del event.message[0] + if event.message: + if event.message[0] == at_me_seg: + del event.message[0] + if event.message[0].type == "text": + event.message[0].data["text"] = event.message[0].data[ + "text"].lstrip() + if not event.message[0].data["text"]: + del event.message[0] if not event.to_me: # check the last segment From 9e1eee166b39eb1d3a1c97b5e302984effd57adc Mon Sep 17 00:00:00 2001 From: yanyongyu Date: Thu, 19 Nov 2020 13:57:49 +0800 Subject: [PATCH 2/2] :bug: fix index error when check to me --- nonebot/adapters/cqhttp/__init__.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/nonebot/adapters/cqhttp/__init__.py b/nonebot/adapters/cqhttp/__init__.py index f6e91681..546fe862 100644 --- a/nonebot/adapters/cqhttp/__init__.py +++ b/nonebot/adapters/cqhttp/__init__.py @@ -112,14 +112,15 @@ async def _check_reply(bot: "Bot", event: "Event"): return msg_seg = event.message[index] event.reply = await bot.get_msg(message_id=msg_seg.data["id"]) - if event.reply["sender"]["user_id"] == int(event.self_id): # TODO 这里一个int一个str需要修改 + # ensure string comparation + if str(event.reply["sender"]["user_id"]) == str(event.self_id): event.to_me = True del event.message[index] if not event.message: event.message.append(MessageSegment.text("")) -def _check_at_me(bot: "Bot", event: "Event"): # TODO 只有开头at机器人才会识别,其他的不管 应该删除前面两个如果存在的at以及后面正文前面的空格 +def _check_at_me(bot: "Bot", event: "Event"): """ :说明: @@ -138,23 +139,22 @@ def _check_at_me(bot: "Bot", event: "Event"): # TODO 只有开头at机器人才 else: at_me_seg = MessageSegment.at(event.self_id) - # check the first segment at 空 at - if event.message[0] == at_me_seg: # TODO 有时候不能正常判断 + # check the first segment + if event.message[0] == at_me_seg: event.to_me = True del event.message[0] - if event.message[0].type == "text": + if event.message and event.message[0].type == "text": event.message[0].data["text"] = event.message[0].data[ "text"].lstrip() if not event.message[0].data["text"]: del event.message[0] - if event.message: - if event.message[0] == at_me_seg: - del event.message[0] - if event.message[0].type == "text": - event.message[0].data["text"] = event.message[0].data[ - "text"].lstrip() - if not event.message[0].data["text"]: - del event.message[0] + if event.message and event.message[0] == at_me_seg: + del event.message[0] + if event.message and event.message[0].type == "text": + event.message[0].data["text"] = event.message[0].data[ + "text"].lstrip() + if not event.message[0].data["text"]: + del event.message[0] if not event.to_me: # check the last segment