Discord.js机器人看不到消息



我的机器人应该在发送消息时在控制台中发送消息。但当我在discord服务器上写消息后,它不会触发。

Bot已联机并加入服务器。他还获得了所有必需的权限。

代码:

const Discord = require('discord.js');
const bot = new Discord.Client({disableEveryone: false, intents: ["0x0000000000000008"]});
bot.on('ready', () => {
console.log('Loaded!');
bot.user.setActivity('Running a test, hopefully.');
});
bot.on("Message", (message) => {
console.log('Message!');
});
bot.login("bot token");

您为传入消息(Message(使用了错误的事件名称。此事件的正确名称取决于您的discord.js版本。如果您使用的是v13.*或更高版本,则应使用messageCreate事件:

// Correct event name for discord.js v13+
client.on('messageCreate', message => {
console.log('Message received! Message content: ' + message.content);
});
// And this event is deprecated
client.on('message', message => {
console.log('Message received! Message content: ' + message.content);
});

关于如何初始化client的另一个注意事项是:应该在v13上使用Intents类,或者在v14上使用GatewayIntentBits类,以获得更好的可读性。您可以在这里阅读更多关于v13的意图,并在这里更改v14的初始化。

在事件监听器中,您记录了一个字符串,而不是消息对象

bot.on("message", (message) => {
console.log('Message!'); //incorrect - string, will log 'Message!'
console.log(message.content); //correct - content property of message obj, will log message content
});

您还需要添加正确的意图。由于MessageContent是一个特权网关,您需要在Discord Developer Portal中启用它。

在文档中查看一篇关于这方面的好文章。

最新更新