使用部分名称查找频道

时间:2021-05-07 08:41:08

标签: javascript discord.js

我需要帮助的场景是这样的。我有几个频道想要发送消息,其名称都以“事件”一词结尾(PC 事件、Xbox 事件等)。

与其一遍又一遍地输入以下代码,我想找到一种方法来搜索包含/以事件一词结尾的所有频道,然后向他们发送消息。

const xboxEvents = bot.channels.cache.find(channel => channel.id === '111111111111111111')
const pcEvents = bot.channels.cache.find(channel => channel.id === '111111111111111111')
const psnEvents = bot.channels.cache.find(channel => channel.id === '111111111111111111')
xboxEvents.send(eventsEmbed)
pcEvents.send(eventsEmbed)
psnEvents.send(eventsEmbed)

1 个答案:

答案 0 :(得分:1)

您可以通过频道名称.filter() 集合并使用.endsWith() 方法检查频道名称是否以某个字符串结尾。当 .filter() 返回一个新集合时,您可以对其进行迭代并在每个通道上发送消息。

您还可以检查频道的 typetext 还是 news,因为只有它们具有 .send() 方法。

const channels = bot.channels.cache.filter(
  (channel) =>
    channel.name.endsWith('event') && ['text', 'news'].includes(channel.type)
);

channels.each((channel) => channel.send(eventsEmbed).catch(console.error));

如果您想检查频道名称是否包含字符串“event”,您可以使用 .includes() 而不是 .endsWith()