繁体   English   中英

如何向特定频道发送消息

[英]How to send a message to a specific channel

我正在尝试使用我的 Discord 机器人向特定频道发送消息,该机器人位于多个服务器中。 我希望机器人从一台服务器接收消息并将消息发送到我的个人服务器,在特定频道中,但我无法让它“找到”频道。 API有变化吗? 我也试过npm install discord.js来更新。

代码:

if (message.author.id == 'XXXXX' && !mess.includes("Dank") && message.channel.id != 'XXXXX') {
  bot.channels.get('XXXXX').send('memes');
}

我尝试了几件事,但没有奏效。

TypeError: Cannot read property 'send' of undefined
    at decideIfMention (C:\Users\XXXX\Desktop\Coding Crud\Discord Bot 2\bot.js:80:45)
    at Client.bot.on (C:\Users\XXXX\Desktop\Coding Crud\Discord Bot 2\bot.js:68:3)
    at emitOne (events.js:116:13)
    at Client.emit (events.js:211:7)
    at MessageCreateHandler.handle (C:\Users\XXXX\Desktop\Coding Crud\Discord Bot 2\node_modules\discord.js\src\client\websocket\packets\handlers\MessageCreate.js:9:34)
    at WebSocketPacketManager.handle (C:\Users\XXXX\Desktop\Coding Crud\Discord Bot 2\node_modules\discord.js\src\client\websocket\packets\WebSocketPacketManager.js:103:65)
    at WebSocketConnection.onPacket (C:\Users\XXXX\Desktop\Coding Crud\Discord Bot 2\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:333:35)
    at WebSocketConnection.onMessage (C:\Users\XXXX\Desktop\Coding Crud\Discord Bot 2\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:296:17)
    at WebSocket.onMessage (C:\Users\XXXX\Desktop\Coding Crud\Discord Bot 2\node_modules\ws\lib\event-target.js:120:16)
    at emitOne (events.js:116:13)

假设您有client (这将是Discord.Client一个实例)尝试使用Client.find查找所需的频道:

const channel = client.channels.cache.find(channel => channel.name === channelName)
channel.send(message)

如果您没有直接拥有client但拥有message实例,则始终可以从Message.client属性中访问它。

好吧,如果你有Discord.Client()的“ client ”实例,那么使用这个:

已更新解决方案以使用较新的 discordjs 版本

client.channels.cache.get(`channelID`).send(`Text`)

不要忘记 channeID 参数是字符串类型,而不是数字。 这真的很简单但很精确。

如果您使用的是打字稿,则需要在 Channel 上进行类型转换。 所以你可以在 TextChannel 中转换它并发送消息

const channel = client.channels.cache.find(ch => ch.name === 'compras');

if (channel.isText() {
    (<TextChannel> channel).send('message')
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM