【问题标题】:Discord.js Send message to a specific channel using a botDiscord.js 使用机器人向特定频道发送消息
【发布时间】:2020-03-13 15:27:42
【问题描述】:

我一直在尝试使用 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

【问题讨论】:

    标签: node.js bots discord.js


    【解决方案1】:

    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 来检查您的 discord.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)
        }
    })
    

    【讨论】:

    • 那么如果我必须将其仅发送到指定频道的列表中,必须使用什么分隔符之王?
    • 我在我的答案中添加示例
    猜你喜欢
    • 2021-06-10
    • 2021-08-21
    • 2020-04-04
    • 1970-01-01
    • 1970-01-01
    • 2021-08-09
    • 2020-05-22
    • 1970-01-01
    相关资源
    最近更新 更多