在每个组/公会的Discord上每x小时发送一条消息

时间:2018-01-18 01:34:28

标签: javascript discord discord.js

目前我正在开发一个事件机器人,并且该机器人在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);
})

问题:现在我收到一条错误消息,发送不是函数。

3 个答案:

答案 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 安装睡眠