我需要帮助的场景是这样的。我有几个频道想要发送消息,其名称都以“事件”一词结尾(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)
答案 0 :(得分:1)
您可以通过频道名称.filter()
集合并使用.endsWith()
方法检查频道名称是否以某个字符串结尾。当 .filter()
返回一个新集合时,您可以对其进行迭代并在每个通道上发送消息。
您还可以检查频道的 type
是 text
还是 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()
。