Discord.py如何获取触发bot消息之前紧邻的上一条消息的发送者
实现方法
你可以通过消息所属频道的history()接口拉取最近两条消息,默认拉取规则是最新发送的消息排在最前,因此返回结果的第二个元素就是你需要的正上方紧邻的前一条消息。
完整可运行代码
@commands.Cog.listener('on_message') async def cool(self, message): if message.author == self.bot.user : return elif "cool" in message.content.lower(): # 拉取频道最近2条消息 recent_messages = [msg async for msg in message.channel.history(limit=2)] # 边界处理:频道内仅有当前触发消息时避免索引报错 if len(recent_messages) < 2: return # 索引1对应上一条消息,mention属性直接生成@提及格式 prev_author = recent_messages[1].author response = f"{prev_author.mention} is cool!" await message.channel.send(response)
补充说明
- 如果需要获取上一条消息的内容、发送时间等其他属性,直接访问
recent_messages[1]的对应字段即可 - 若你的机器人运行环境有权限配置限制,请确认已经给机器人开启了频道消息读取权限,否则会拉取历史消息失败
内容的提问来源于stack exchange,提问作者Padsworth
相关产品推荐
相关产品推荐

