Discord机器人如何实现@用户ID触发指定回复功能
Discord机器人@指定用户触发回复实现方法
实现逻辑说明
Discord中@用户的消息会被自动解析到message.mentions列表中,你可以通过判断该列表是否包含目标用户ID来触发回复,相比直接匹配文本的方式兼容性更高,也能同时识别带昵称的@格式。
代码修改示例
方式一:匹配实际@用户操作(推荐)
# 替换为你要触发的目标用户ID,注意为整数类型 TARGET_USER_ID = 2647388376563834 # 排除机器人自己发的消息,避免循环触发 if message.author == client.user: return # 检查消息中是否@了目标用户 if any(user.id == TARGET_USER_ID for user in message.mentions): await message.channel.send(Nico)
方式二:匹配纯文本@用户ID格式
如果你的触发场景是用户手动输入@2647388376563834纯文本而不是真正@用户,用以下写法:
# 替换为你要匹配的文本内容 TARGET_TRIGGER = "@2647388376563834" if message.author == client.user: return if TARGET_TRIGGER in message.content: await message.channel.send(Nico)
注意事项
- discord.py v2.0及以上版本需要提前开启权限:
- 进入Discord开发者后台,找到对应Bot的设置页,开启
message content intent权限 - 初始化Bot时添加权限配置:
import discord intents = discord.Intents.default() intents.message_content = True # 如需读取服务器成员信息可额外开启members权限 intents.members = True client = discord.Client(intents=intents) - 进入Discord开发者后台,找到对应Bot的设置页,开启
内容的提问来源于stack exchange,提问作者edoardo bighi
相关产品推荐
相关产品推荐

