Бот Discord не будет регистрировать сообщения

#javascript #discord.js

Вопрос:

В настоящее время новичок в кодировании ботов Discord и следил за онлайн-учебником.

Я застрял в попытке заставить метод сообщений клиента регистрировать сообщение, введенное пользователем.

Вот мой код:

   require('dotenv').config(); 
  const Discord = require('discord.js');
  const client = new Discord.Client({ intents: ["GUILD_MESSAGES"] });
  client.on('ready', () => {
     console.log(`${client.user.tag} has logged in`);
  });

 client.on('message', (msg) => {
    console.log(msg.content);
 });

 client.login(process.env.TOKEN);
 

Учебник немного устарел с тех пор, как был обновлен Discordjs, и я не уверен, связана ли проблема с намерением или чем-то еще.

Бот может войти на сервер и отображается как онлайн, при этом консоль регистрирует логин.

Однако консоль никогда не сможет регистрировать отправленные сообщения. Любая помощь будет признательна.

Комментарии:

1. Содержимое сообщения будет устаревшим, если оно вам действительно не нужно. Сообщение от discord об этом: support-dev.discord.com/hc/en-us/articles/… Вы все еще можете получить сообщение, если ваш бот был упомянут. В противном случае рассмотрите возможность использования команд. Ответ был правильным, моя точка зрения остается в силе.

Ответ №1:

Вам нужно включить оба намерения:

 intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES]
 

Вы все еще можете использовать client.on('message') , но он будет сопровождаться DEPRACATED предупреждением, поэтому, начиная с версии 13, вы должны использовать client.on('messageCreate')

Ответ №2:

Согласно документам:

 //discord.js V12
-client.on('message', (msg) => {
//discord.js V13
 client.on('messageCreate', (msg) => {