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

如何使用Discord.py实现机器人响应特定用户提及并自动回复?

Discord机器人提及特定用户自动回复的实现方案

你的思路方向是对的,但直接用@user_id匹配会有小问题——Discord里提及用户的格式并不是简单的@user_id,实际消息里会转换成两种格式:<@用户ID>(普通提及)或<@!用户ID>(当用户有服务器昵称时)。所以得调整判断逻辑来覆盖这两种情况,下面是修正后的完整实现:

完整代码示例

import discord
from discord.ext import commands

# 开启必要的权限意图,必须开启message_content才能读取消息内容
intents = discord.Intents.default()
intents.message_content = True

client = commands.Bot(command_prefix="!", intents=intents)

@client.event
async def on_message(message):
    # 忽略机器人自身发送的消息,避免无限循环
    if message.author == client.user:
        return
    
    # 替换成你的个人账号ID(字符串格式)
    TARGET_USER_ID = "123456789012345678"
    
    # 生成两种可能的提及格式
    standard_mention = f"<@{TARGET_USER_ID}>"
    nickname_mention = f"<@!{TARGET_USER_ID}>"
    
    # 检查消息内容是否包含任一提及格式
    if standard_mention in message.content or nickname_mention in message.content:
        await message.channel.send('我现在不在,请留言!')

# 替换成你的机器人令牌
client.run("YOUR_BOT_TOKEN_HERE")

关键细节说明

  • 意图权限:现在Discord要求必须开启message_content意图才能让机器人读取消息内容,所以初始化Bot时一定要配置好这部分,否则机器人会无法检测到提及内容。
  • 提及格式匹配:覆盖两种提及格式能确保不管用户有没有服务器昵称,机器人都能正确识别到对你的提及。
  • 避免自触发:判断message.author == client.user是为了防止机器人回复自己的消息,引发循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:08:42