我做了一个不和谐的机器人,这里是代码
const Discord = require("discord.js");
const client = new Discord.Client();
client.on("ready", () => {
console.log("I am ready!");
});
client.on("message", (message) => {
if (message.content.startsWith("!kevin")) {
message.channel.send("i'm kevin");
}
if (message.content.startsWith("!thomas")) {
message.channel.send("random text blabla");
}
基本上,当我输入!something时,我的机器人在聊天室中按正确的路线回答,我当前的问题是我现在的不和谐情绪很大,我想将机器人限制为每分钟仅X条消息,但我找不到一个简单的函数可以做到这一点
我的问题:
是否有可能在机器人发送的2条消息之间设置一个计时器,因为如果没有,我的机器人只是对输入!somethingsomething
的每个用户发送垃圾邮件,我希望我的机器人在有人键入{ {1}},该漫游器会锁定自己以X的时间回复其他任何!something
示例
用户1:!thomas
用户2:!thomas
用户3:!thomas
但是该漫游器仅回复其中一个并给自己设置了一个计时器,然后才能发送新的!something
回复
因此,基本上,是让机器人每分钟回复X量的!cmd还是限制机器人发送2条消息之间的冷却时间的任何方法
这里是我的脚本:https://i.imgur.com/Q7w98Rm.jpg(我知道它很糟糕,特别是因为它有9000多个!cmd,但是我很快转换了一个旧的MIRC脚本,并且在javascript上很糟糕)
答案 0 :(得分:1)
因此,我从您的评论中发现,您希望机器人仅每隔“ X”次运行一次命令。我不建议这样做,我建议只是防止用户每隔“ X”时间注册一个cmd。在此示例中,我已经将它们包括在内。
svcGrid = GridSearchCV(svc,
cv = 4,
n_jobs = 10,
param_grid = {'kernel':['rbf', 'linear',
'poly']})
#run the parameters tuning
svcGrid.fit(X_train,y_train)
print(svcGrid.cv_results_)
#pick and predict using the best estimators
best_svc =svcGrid.best_estimator_
print(best_svc)
y_predict = best_svc.predict(X_test)
print("BEST SVC ACCURACY:", accuracy_score(y_test, y_predict))
答案 1 :(得分:0)
仅存储命令运行的日期,然后检查自设置日期以来是否经过了一定的金额。
示例:
经过编辑以支持多个命令
let date = false;
let commandsTimers = {
"!kevin":{
waitTime: 5 * 60000, // 5 minutes wait for this particular command.
lastUsed: false,
}
}
let defaultWaitTime = 60000 * 2; //User needs to wait 2 minutes for each command unless specified
client.on("message", (message) => {
let msgSentDate = Date.now();
let commandWaitTimer = commandsTimers[message.content.split(" ")[0]] || {waitTime:defaultWaitTime, lastUsed:false};
if((commandWaitTimer.lastUsed !== false ? msgSentDate - commandWaitTimer.lastUsed < commandWaitTimer.waitTime : false)){
console.log('User needs to wait: ' + (commandWaitTimer.waitTime - (msgSentDate - commandWaitTimer .lastUsed)) / 1000 + ' seconds');
return
}
commandsTimers[message.content.split(" ")[0]].lastUsed = msgSentDate;
if (message.content.startsWith("!thomas")) {
message.channel.send("random text blabla");
}
if (message.content.startsWith("!kevin")) {
message.channel.send("Kevin!");
}
});