类似于this question,但是我希望能够将其发送到它可以访问的每个频道! 在通过ID和发出的命令验证我自己的身份后,我正在使用此代码:
const listedChannels = [];
msg.guild.channels.forEach(channel => {
//get all channels
client.channels.get(channel.id).send("you like bred? (message) ");
//send a message to every channel in this guild
});
但是我收到.send不是函数的错误...
有人告诉我在获取频道ID后要使用.send
答案 0 :(得分:0)
如果要遍历所有频道,则需要将您的内容发送到已经从msg.guild.channels.forEach(channel => {//code})
获得的频道。
将.forEach
块中的内容替换为;
channel.send("You like bred? (message)");
尽管这会发送You like bred? (message)
如果您想找回答案,也许看看this answer,它解释了如何通过对不和谐消息的反应来收集响应。
答案 1 :(得分:0)
您可以为此使用client.channels
。检查频道类型是否为公会文本频道,然后尝试发送消息。
client.channels.forEach(channel => {
if(channel.type === 'text') channel.send('MSG').catch(console.error)
})
答案 2 :(得分:0)
以下说明仅适用于v11(稳定版)。
Client.channels
是您的机器人正在观看的Collection中的Channel。您只能将消息发送到文本通道,并且此收藏集还将包括DM通道。因此,我们可以使用Collection.filter()
来检索行会中仅文本通道的新Collection。最后,您可以遍历通道并在每个通道上调用TextChannel.send()
。因为您要处理Promise,所以建议使用Promise.all()
/ Collection.map()
组合(请参阅超链接的文档)。
例如...
// assuming "client" is your Discord Bot
const channels = client.channels.filter(c => c.guild && c.type === 'text');
Promise.all(channels.map(c => c.send('Hello, world!')))
.then(msgs => console.log(`${msgs.length} successfully sent.`))
.catch(console.error);