让Discord机器人每天自动做一些事情。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了让Discord机器人每天自动做一些事情。相关的知识,希望对你有一定的参考价值。
我是java脚本和discord编程的新手,我想在我的discord服务器上安装一个机器人,在早上5点进行频道清理,但是,我想在专用服务器上运行它,不知道如何正确设置时间触发机制。
if (date.getHours()==5){
//do stuff
}
工作?
答案
你可以使用 client.setInterval()
要有定时功能。
例如 client.setInterval(() => purgeChannel(), 300000);
将运行函数 purgeChannel
每5分钟(300000是5分钟的毫秒)。
另一答案
我认为最简单的方法是用一个对象将每个动作保存到一个时间。我选择使用 <HOUR><MINUTE>
来存储每个值。所以,4:12PM的时间将是。1612
. 那么一个 setInterval
每分钟运行一次,并检查是否需要做一个新的动作。
function hello() {
console.log('Hello');
}
let actions = {
"0630": function() {
console.log('Its 6:30');
},
"1200": hello, //NOON
"1400": hello, //2:00 PM
"0000": function() {
console.log('New Day / Midnight');
},
};
let codeStartTime = new Date();
function checkActions() {
let date = new Date();
let action = actions[`${date.getHours() >= 10 ? "" : "0"}${date.getHours()}${date.getMinutes() >= 9 ? "" : "0"}${date.getMinutes()}`];
if (typeof action === "function") action(); //If an action exists for this time, run it.
}
setTimeout(function() {
checkActions();
setInterval(checkActions, 60000); //Run the function every minute. Can increase/decrease this number
}, ((60 - codeStartTime.getSeconds()) * 1000) - codeStartTime.getMilliseconds()); // Start the interval at the EXACT time it starts at a new minute
/** CODE for the Stack Overflow Snippet **/
console.log(`Starting first interval in ${((60 - codeStartTime.getSeconds()))} seconds.`);
console.log(`Adding in StackOverflow function, set to run at: ${codeStartTime.getHours() >= 10 ? "" : "0"}${codeStartTime.getHours()}${codeStartTime.getMinutes() >= 9 ? "" : "0"}${codeStartTime.getMinutes() + 1}`);
actions[`${codeStartTime.getHours() >= 10 ? "" : "0"}${codeStartTime.getHours()}${codeStartTime.getMinutes() >= 9 ? "" : "0"}${codeStartTime.getMinutes() + 1}`] = function() {
console.log('Ran the StackOverflow Function');
};
以上是关于让Discord机器人每天自动做一些事情。的主要内容,如果未能解决你的问题,请参考以下文章
Discord Python Bot - Bot 的消息不会自动嵌入链接/图像/等
我该怎么做才能让我的机器人再次工作? discord.py [关闭]
您将如何使用 Discord.js 创建一个每天运行的活动?