【问题标题】:Start bot with one message and end with other command以一条消息启动机器人并以其他命令结束
【发布时间】:2021-08-20 03:12:18
【问题描述】:

我基本上是在创建一个执行循环的机器人,我希望它在你说 *parar 时结束,但我不知道如何实现。

这里有一些代码来解释我的问题

module.exports = {
    name: 'epico',
    execute(message, args, Discord, client){

    //this is the loop
    var interval = setInterval(function(){...}, 1000)

}

循环在我输入*epico 时开始,我希望它在用户发送*parar 时停止

我正在尝试这样的事情:

client.on('message', message =>{
    if(message.content.startsWith('parar')){clearInterval(interval)}
}

但这一直有效,直到我关闭机器人(我希望它只工作 1 次)

【问题讨论】:

  • 您的 if 语句中缺少 )
  • 代码是在同一个文件中,还是在不同的文件中?我假设该命令在另一个文件中,如果是这样,您需要将 interval 函数传递给您的主代码。或者向我们展示更多您的代码? (尤其是两个文件之间的交互)。

标签: javascript node.js discord.js setinterval


【解决方案1】:

尝试以下操作:基本上,您要做的是将间隔保存到稍后可访问的变量中,以便再次停止间隔。

const Discord = require("discord.js");
const client = new Discord.Client();

let interval;

client.on("message", async (message) => {
  if (message.content.startsWith("*epico")) {
    return (interval = setInterval(() => {
      console.log("do something");
    }, 1000));
  }

  if (message.content.startsWith("*parar")) {
    clearInterval(interval);
    return console.log("stopped interval");
  }
});

client.login("your-token");

我假设您在几个不同的文件中使用多个命令。如果是这种情况,我只需将时间间隔保存到您的*epico 命令文件中的客户端对象,因为无论如何您都将client 传递给您的execute 函数。

module.exports = {
  name: "epico",
  execute(message, args, Discord, client) {
    return (client.interval = setInterval(() => {
      console.log("do something");
    }, 1000));
  },
};

然后只需清除*parar 命令中的间隔即可。也不要忘记检查client.interval 是否已设置;)

module.exports = {
  name: "parar",
  execute(message, args, Discord, client) {
    client.interval && clearInterval(client.interval);
    return console.log("stopped interval");
  },
};

【讨论】:

    【解决方案2】:

    也许你有错字???

    client.on('message', message => {
        if (message.content.startsWith('parar')){
            clearInterval(interval)
        }
    });
    

    【讨论】:

    • nono,代码工作正常,但它只是继续工作,如果相反 clearInterval 它是 message.channel.send 并且我说'parar'它将发送消息,但如果我没有什么再次说“para”,直到发送 de 消息。我清楚了吗?我不会说英语,如果你听不懂我很抱歉:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 2023-03-12
    • 1970-01-01
    • 2020-12-23
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多