我为 Discord 服务器编写了自己的机器人。所以,我想创建命令,它可以每 3 秒更改一次您的昵称(是的,它是如此无用,但很有趣:3)。所以,我编写了启动程序,但我不知道如何在不崩溃的情况下停止这台机器。我想做单独的参数“停止”,这将停止循环并恢复旧昵称。我怎样才能在一个脚本中做到这一点? Discord 中的命令看起来像 ?nicks start 和 ?nicks stop。 我有一个处理程序脚本,它检查 config.json 中的命令巧合并从命令传递参数和消息对象。所以,我的目标是在一个脚本中启动和停止函数。 Cylce 由 setInterval() 重新实现,我必须停止它。我希望有人会明白我想要什么...) P.S.对不起我的英语:3
'use strict';
const Discord = require('discord.js');
const config = require('../config.json');
const writeLogs = require('../writeLogs.js');
const fs = require('fs');
function creepingLine(msg, args) {
const user = msg.guild.member(msg.author)
const firstNickname = user.nickname; // backup for stopping
if (args[0] === "старт") {
let nicks = args.slice(1);
let pointer = 0;
function changeNick() {
user.setNickname(nicks[pointer]);
if (pointer === nicks.length - 1) {
pointer = 0;
}
else pointer++;
}
let timer = setInterval(changeNick, 3000);
}
}
module.exports = creepingLine;
答案 0 :(得分:0)
您可以创建一个对象来保留对间隔的引用,如下所示:
...
const intervals = {};
function creepingLine(msg, args) {
...
intervals[msg.author] = setInterval(changeNick, 3000);
}
}
然后用它来停止间隔
function stopInterval(author) {
clearInterval(intervals[author]);
}