如何将消息发送到特定频道

时间:2018-07-01 02:56:53

标签: javascript bots channel discord.js

我正在尝试使用我的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)

3 个答案:

答案 0 :(得分:3)

假设您拥有client(将是<div class="results">Hello</div> 的实例),请尝试使用Client.find查找所需的频道:

Discord.Client()

如果您没有直接拥有const channel = client.channels.find('name', channelName) channel.send(message) 却拥有message实例,则始终可以从Message.client属性中访问它。

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:0)

好吧,如果您拥有client的“ Discord.Client()”实例,请使用此实例:

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

这真的很简单但很精确。