如何让Discord机器人响应指令,sendMessage不存在报错如何解决
问题原因
- discord.js v13 及以上版本移除了旧的
sendMessage方法,你需要调用send方法实现频道发消息功能,这是你报错提示属性不存在的原因。 - 你监听的
message事件为 v12 及更早版本的旧事件,v13 开始该事件已更名为messageCreate,事件名称不匹配导致你的指令逻辑完全无法触发,所以机器人收不到指令、也不会响应。
修复后的完整代码
const { Client, Intents } = require('discord.js'); const bot = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] }); const token ='MY TOKEN'; const PREFIX ='!'; var version = '1.0.1'; bot.on('ready', () =>{ console.log('This bot is online!'); }) // 替换旧的message事件为新版messageCreate事件 bot.on("messageCreate", message=>{ // 新增过滤逻辑:忽略机器人发送的消息、忽略非指定前缀开头的消息,避免逻辑误触发 if(message.author.bot || !message.content.startsWith(PREFIX)) return; let args = message.content.substring(PREFIX.length).split(" "); switch(args[0]){ case 'ping': // 替换旧的sendMessage为新版send方法 message.channel.send('pong!') break; case 'website': message.channel.send('youtube.com') break; case 'info': if (args[1] === 'version'){ message.channel.send('Version ' + version); }else{ message.channel.send('Invalid Args') } break; } }) bot.login(token);
内容的提问来源于stack exchange,提问作者Asuka
相关产品推荐
相关产品推荐

