Discord. js Отправка сообщения на указанный c канал с помощью бота - PullRequest
0 голосов
/ 13 марта 2020

Я пытался отправить сообщение на указанный c канал , используя бот discord , и я пробовал множество онлайн-примеров, которые присутствуют в сети, но ни один из них работает и выдает ту же ошибку каждый раз.
Ниже приведена реализация кода:

client.on('ready', () => {
  console.log('Bot is now connected')
  try {
    client.channels.find('test').send("Hello there!");
  } catch (e) {
    console.log('[ERROR:]',e);
  }
});

Но каждый раз появляется одно и то же сообщение об ошибке:

[ERROR:] TypeError: client.channels.find is not a function
    at Client.client.on (/Users/Kartikeya 1/discordBot/index.js:9:34)
    at Client.emit (events.js:198:13)
    at WebSocketManager.triggerClientReady (/Users/Kartikeya 1/discordBot/node_modules/discord.js/src/client/websocket/WebSocketManager.js:433:17)
    at WebSocketManager.checkShardsReady (/Users/Kartikeya 1/discordBot/node_modules/discord.js/src/client/websocket/WebSocketManager.js:417:10)
    at WebSocketShard.shard.on.unavailableGuilds (/Users/Kartikeya 1/discordBot/node_modules/discord.js/src/client/websocket/WebSocketManager.js:199:14)
    at WebSocketShard.emit (events.js:198:13)
    at WebSocketShard.checkReady (/Users/Kartikeya 1/discordBot/node_modules/discord.js/src/client/websocket/WebSocketShard.js:466:12)
    at WebSocketShard.onPacket (/Users/Kartikeya 1/discordBot/node_modules/discord.js/src/client/websocket/WebSocketShard.js:438:16)
    at WebSocketShard.onMessage (/Users/Kartikeya 1/discordBot/node_modules/discord.js/src/client/websocket/WebSocketShard.js:293:10)
    at WebSocket.onMessage (/Users/Kartikeya 1/discordBot/node_modules/ws/lib/event-target.js:120:16)

Может кто-нибудь, пожалуйста, дайте мне знать какой шаг пропущен или не обработан.
Я использую следующую версию узла: v10.16.3

1 Ответ

0 голосов
/ 13 марта 2020

Каналы Discord имеют много параметров, поэтому вам нужно указать, что это за параметр test.

Рекомендую никогда не искать каналы по названию, лучше использовать ID. Как

client.channels.get('ID') or client.channels.cache.get('ID')

    client.on('ready', () => {
      console.log('Bot is now connected')
        client.channels.find(channel => channel.name === 'test').send("Hello there!"); // for discord v11
        client.channels.cache.find(channel => channel.name === 'test').send("Hello there!"); // for discord v12
    });

Вы можете использовать npm list discord.js для проверки вашего разногласия. js версия

Для список каналов

let channelsList = ['ID1', 'ID2', 'ID3']
channelsList.forEach(channel => {
    let targetChannel = client.channels.get(channel)
    if (targetChannel) {
        targetChannel.send('TEXT').then(() => {
            console.log(`succes send message to channel ${targetChannel.name}`)
        }).catch(err => console.error)
    }
})
...