我正在使用 NodeJS,并尝试使用 DiscordJS 创建一个机器人,它会查找所有命名相同的频道,并向每个频道发送一条消息。
const PREFIX = "<";
const { Client, DiscordAPIError }= require('discord.js');
const { findSourceMap } = require('module');
const disclient = new Client();
require('dotenv').config();
disclient.login(process.env.DISCORDJS_BOT_TOKEN);
disclient.on('ready',() => {
console.log('Discord logged on');
});
disclient.on('message', (message) => {
if (message.author.bot) return;
if (message.content.startsWith(PREFIX)){
const [CMD_NAME, ...args] = message.content
.trim()
.substring(PREFIX.length)
.split(/\s+/);
let channels = message.guild.channels.cache;
if (CMD_NAME === "findchannel"){
let clamnewschan = disclient.channels.cache.find(channels => channels.name === "clamnews");
};
};
});
我不知道该怎么做,但我设法获得了名为“clamnews”的频道,我只需要它的 ID,以便我可以在其中发帖。
编辑:固定的,更新了下面的代码。
const PREFIX = "<";
const { Client, DiscordAPIError }= require('discord.js');
const { findSourceMap } = require('module');
const disclient = new Client();
require('dotenv').config();
disclient.login(process.env.DISCORDJS_BOT_TOKEN);
disclient.on('ready',() => {
console.log('Discord logged on');
});
disclient.on('message', (message) => {
if (message.author.bot) return;
if (message.content.startsWith(PREFIX)){
const [CMD_NAME, ...args] = message.content
.trim()
.substring(PREFIX.length)
.split(/\s+/);
let channels = disclient.channels.cache.filter(ch => ch.name === "clamnews");
if (CMD_NAME === "findchannel"){
channels.forEach(channel => channel.send("test"))
};
};
});
答案 0 :(得分:0)
如果您想找到具有相同名称的频道并将其发布到其中,您可以这样做:
let channels = disclient.channels.cache.filter(ch => ch.name === "clamnews");
channels.forEach(channel => channel.send("test"))
此示例过滤掉名为 clamnews
的每个频道。这存储在 channels
中。然后您只需使用 forEach
函数将消息发送到具有相同名称的每个频道。