discord.js机器人终端运行正常但Discord端无消息回复如何解决
问题原因
- 事件命名错误:discord.js v13及以上版本已废弃
message事件,需替换为messageCreate事件。 - 缺少必要网关意图:读取服务器消息内容需要额外添加
GUILD_MESSAGES、MESSAGE_CONTENT两个意图,同时需要进入Discord开发者后台的对应机器人设置页面,开启特权网关意图分类下的「Message Content Intent」开关。 - 额外风险:当前代码未过滤机器人自身发送的消息,会触发消息循环,需要增加判断条件跳过机器人发送的消息。
修正后代码
require('dotenv').config(); const { Client, Intents } = require('discord.js'); const client = new Client({ intents: [ Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES, Intents.FLAGS.MESSAGE_CONTENT ] }) client.on('ready', () => { console.log(`It's welcome time`); }); client.on('messageCreate', msg => { // 过滤机器人消息避免循环 if (msg.author.bot) return if (msg.content === 'Hi') { msg.reply('Welcome wallet warrior!'); msg.channel.send('Welcome wallet warrior!'); } else { msg.channel.send('Hi, please introduce yourself') }; }); const TOKEN = '(ERASED MY TOKEN)'; console.log(TOKEN) client.login(TOKEN);
内容的提问来源于stack exchange,提问作者thaghost
相关产品推荐
相关产品推荐

