目前我正在开发一个事件机器人,并且该机器人在Discord中的几个组中使用。 所以现在我有这个代码:
if (command === "init")
{
//var d = new Date();
//var n = d.getHours();
message.channel.send("BunnBot starting...");
var interval = setInterval (function () {
message.channel.send("123")
//message.channel.send(n);
}, 30 * 1000);
}
问题是,此命令仅适用于当前组,意味着在任何其他组中我也必须使用init命令。
我该如何解决?我怎样才能让我的机器人向每个小组发送消息?
编辑: 好的,我稍微更改了代码,现在我正在使用它: 好的,这是我的新代码,现在我遇到了错误信息,发送不是函数
client.on("ready", () => {
console.log('Logged in as BunnyBot');
setInterval (function () {
client.guilds.forEach(() => { //for each guild the bot is in
let defaultChannel = "";
client.guilds.forEach((channel) => {
if(channel.type == "text" && defaultChannel == "") {
if(channel.permissionsFor(guild.me).has("SEND_MESSAGES")) {
defaultChannel = channel;
}
}
})
message.defaultChannel.send("Message here"); //send it to whatever channel the bot has permissions to send on
console.log("Sending Messages");
})
}, 1 * 1000);
})
问题:现在我收到一条错误消息,发送不是函数。
答案 0 :(得分:1)
暂时忽略my_list = ['ab', 'sd', 'ef', 'de']
d = {item: idx for idx, item in enumerate(my_list)}
items_to_find = ['sd', 'ef', 'sd']
>>> [d.get(item) for item in items_to_find]
[1, 2, 1]
的情况,您可以通过以下方式完成所有公会发布:
编辑:
#general-channel
此代码应该发送到你的机器人所在的所有公会,你想要的时间间隔你想要的信息,尽管可能不是你想要的频道。
答案 1 :(得分:0)
node.js版本12.x进行了一些更改,要修复代码,您需要编辑一些内容:
bot.guilds.cache.forEach((guild) => { //for each guild the bot is in
let defaultChannel = "";
guild.channels.cache.forEach((channel) => {
if(channel.type == "text" && defaultChannel == "") {
if(channel.permissionsFor(guild.me).has("SEND_MESSAGES")) {
defaultChannel = channel;
}
}
})
setInterval (function () {
defaultChannel.send("Message here") //send it to whatever channel the bot has permissions to send on
}, 5000);})
答案 2 :(得分:0)
只是一个简单的解决方案,可能不是最好的,但它是一个解决方案。
while(0 == 0) {
channel = client.channels.cache.get('channel-id');
channel.send("message you want to sent")
sleep.sleep(seconds);
}
你需要名为 sleep 的 npm 包
npm 安装睡眠