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

如何让Discord机器人读取回复内容及被回复的消息内容?

实现Discord机器人读取回复内容与被回复消息的方法

核心思路是利用Discord消息的reference属性,它会记录当前消息回复的目标消息。结合on_message事件,就能同时获取回复内容和被回复的消息内容,进而实现移除电影的功能。

具体步骤与代码示例

以下以discord.py库为例(你熟悉的on_message属于这个库的事件):

  1. 开启必要的机器人权限
    在Discord开发者后台的机器人设置中,开启Message Content Intent和Messages Intent,否则无法读取消息内容与引用信息。

  2. 编写on_message事件逻辑

import discord
from discord.ext import commands

# 初始化机器人,开启所需意图
intents = discord.Intents.default()
intents.message_content = True
intents.messages = True
bot = commands.Bot(command_prefix='!', intents=intents)

# 你的电影推荐列表
movie_list = ["星际穿越", "盗梦空间", "泰坦尼克号"]

@bot.event
async def on_message(message):
    # 处理现有命令(如果有),避免冲突
    await bot.process_commands(message)
    
    # 跳过机器人自身发送的消息
    if message.author == bot.user:
        return
    
    # 判断当前消息是否为回复消息
    if message.reference and message.reference.resolved:
        # 获取被回复的原始消息对象
        referenced_msg = message.reference.resolved
        
        # 确认被回复的消息是当前机器人发送的
        if referenced_msg.author == bot.user:
            # 检查回复内容是否为指定触发词(比如"移除")
            if message.content.strip() == "移除":
                # 从机器人的推荐消息中提取电影名称
                # 这里要和你机器人发送推荐消息的格式匹配,示例格式为"推荐电影:XXX"
                movie_name = referenced_msg.content.replace("推荐电影:", "").strip()
                
                # 移除列表中的对应电影
                if movie_name in movie_list:
                    movie_list.remove(movie_name)
                    await message.channel.send(f"已移除电影:{movie_name}")
                else:
                    await message.channel.send("该电影不在推荐列表中")

# 替换为你的机器人Token并启动
bot.run("YOUR_BOT_TOKEN")

关键细节说明

  • message.reference.resolved:返回被回复的消息对象,若被回复消息已删除则为None,建议实际使用时可增加非空判断。
  • 电影名称提取逻辑:必须和你机器人发送推荐消息的格式一致,比如如果你的推荐语是“今日推荐:《星际穿越》”,就要调整字符串处理代码为movie_name = referenced_msg.content.replace("今日推荐:《", "").replace("》", "").strip()。
  • 触发词可自定义:将"移除"替换成你想要的词汇即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 01:28:17