使用discord.js开发Discord bot 私信自动回复功能失效如何解决
Discord.js 私信自动回复功能修复方案
你原有代码无效主要是版本适配、配置缺失的问题,按以下步骤修改即可:
1. 版本适配注意事项
当前discord.js v13及以上的主流版本,已经废弃了message事件,替换为messageCreate事件,同时要求显式声明网关意图才能接收对应消息。
2. 客户端初始化添加必要配置
创建客户端实例时,需要添加私信相关的意图和partial配置,同时要先前往Discord开发者后台的Bot管理页,在「Privileged Gateway Intents」分区开启Message Content Intent开关,否则无法读取消息内容。
const { Client, GatewayIntentBits } = require('discord.js'); const client = new Client({ intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.DirectMessages, // 接收私信消息的必要意图 GatewayIntentBits.MessageContent // 读取消息内容的特权意图 ], partials: [ 'Channel' // 私信频道属于partial类型,必须添加该配置才能正常识别 ] });
3. 修正事件监听代码
client.on('messageCreate', async msg => { // 过滤Bot自身发送的消息,避免触发死循环 if (msg.author.bot) return; // 判断当前频道是否为私信频道 if (msg.channel.isDMBased()) { await msg.reply('抱歉,您无法向我发送私信,请改用工单系统提交需求'); } });
额外说明
如果你使用的是v12及更早的旧版discord.js,可保留原message事件,但仍需配置对应的私信意图,官方已停止维护旧版本,建议升级到最新稳定版使用。
内容的提问来源于stack exchange,提问作者Avtester
相关产品推荐
相关产品推荐

