以一条消息启动机器人并以其他命令结束
Start bot with one message and end with other command
我基本上是在创建一个执行循环的机器人,我希望它在您说 *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 次)
可能你打错了???
client.on('message', message => {
if (message.content.startsWith('parar')){
clearInterval(interval)
}
});
尝试如下操作:基本上您要做的是将您的间隔保存到一个变量中,稍后可以访问该变量以便再次停止您的间隔。
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");
},
};
我基本上是在创建一个执行循环的机器人,我希望它在您说 *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 次)
可能你打错了???
client.on('message', message => {
if (message.content.startsWith('parar')){
clearInterval(interval)
}
});
尝试如下操作:基本上您要做的是将您的间隔保存到一个变量中,稍后可以访问该变量以便再次停止您的间隔。
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");
},
};