Discord.js我的机器人如何按时间发送消息?

时间:2020-06-22 12:04:03

标签: javascript node.js discord discord.js

我正在开发一个小机器人,但我正在阻止。我想例如在中午12:00时他给我发送一条消息。我试图创建一个并行程序,但仍然无法向自己发送消息。

我的并行脚本:

const Discord = require('discord.js');
const client = new Discord.Client();
const moment = require("moment");
const cheerio = require("cheerio"); 
const request = require("request");

const prefix = 'dolores ';
const fs = require('fs')
const myip = "";
const queue = new Map();
var currentdate = new Date();

client.once('ready', () => {
    console.log('Event activate : My Body is Ready');
});

myip.send(`test`);


client.login("");

1 个答案:

答案 0 :(得分:0)

首先,您需要确定在X时希望使用什么方法来做某事。

选项1

这是我的首选方法。

function checkIfNearby(){
    let rightNow = new Date();
    let timeNow = (rightNow.getHours() * oneHour) + (rightNow.getMinutes() * 60000) + (rightNow.getSeconds() * 1000);
    if(timeNow < timeToRun && timeNow+oneHour >= timeToRun){//are within a hour's window
        setTimeout(function(){
            //DO ACTION
        },timeToRun - timeNow);
    }else{
        setTimeout(checkIfNearby,oneHour);//check again in a hour.
    }
}
client.on("ready",function(){
    checkIfNearby();
});

选项2

另一种方法是将checkIfNearby替换为:

function checkIfNearby(){
    let rightNow = new Date();
    let timeNow = (rightNow.getHours() * oneHour) + (rightNow.getMinutes() * 60000) + (rightNow.getSeconds() * 1000);
    setTimeout(function(){
        //DO ACTION
    }, timeToRun - timeNow);
}

让该人发送邮件。

因此,当我们运行//DO ACTION时,我们需要向我们的人(在本例中为您)发送一条消息。我们需要的是用户的ID和以下内容:

let user;
client.on("ready", function(){
    client.users.fetch("<USER-ID-HERE>").then((fetched) => user = fetched);
}).catch(console.error);

现在代替//DO ACTION的是if(user)user.send("Hey, it's now time");

注意:

这有效,只有一次。因此,一旦它发送了消息,就不会再做。要使其重复,请在运行checkIfNearby()

之后添加//DO ACTION