You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Discord Bot获取命令所回复的目标消息?

如何在Discord Bot中获取用户回复的目标消息

不管你用的是Python的discord.py还是JavaScript的discord.js,都可以通过消息对象的引用属性来获取被回复的目标消息,以下是具体实现方式:

使用discord.py(Python)

  • 命令上下文里的message对象自带reference属性,指向用户回复的消息引用。调用resolve()异步方法就能拿到完整的目标消息对象。
  • 示例代码:
@bot.command()
async def vote(ctx):
    # 检查当前命令消息是否是回复别人的消息
    if ctx.message.reference:
        try:
            # 获取目标消息
            target_message = await ctx.message.reference.resolve()
            # 后续可对target_message做处理,比如获取内容、作者ID等
            await ctx.send(f"找到目标消息:{target_message.content}")
        except discord.NotFound:
            await ctx.send("目标消息已被删除或无法访问")
    else:
        await ctx.send("请先回复一条消息再执行这个命令")

使用discord.js(JavaScript)

  • 消息对象的reference属性里包含目标消息的ID,通过频道的messages.fetch()方法可以获取到目标消息。
  • 示例代码:
client.on('messageCreate', async (message) => {
    if (message.content === '!vote') {
        if (message.reference) {
            try {
                // 通过消息ID获取目标消息
                const targetMessage = await message.channel.messages.fetch(message.reference.messageId);
                message.channel.send(`找到目标消息:${targetMessage.content}`);
            } catch (error) {
                message.channel.send("目标消息已被删除或无法访问");
            }
        } else {
            message.channel.send("请先回复一条消息再执行这个命令");
        }
    }
});

注意事项

  • 确保Bot拥有对应频道的读取消息历史权限,否则会获取失败。
  • 若目标消息被删除、所在频道Bot无权访问,会触发异常,必须做捕获处理避免Bot崩溃。

内容的提问来源于stack exchange,提问作者Mildly Intelligent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 01:42:20