我对编程非常非常陌生,我正试图建立一个基本的不和谐机器人,每周五发送一个视频。目前我有:
Index.js包含:
const Discord = require("discord.js");
const fs = require("fs");
require("dotenv").config()
const token = process.env.token;
const { prefix } = require("./config.js");
const client = new Discord.Client();
const commands = {};
// load commands
const commandFiles = fs.readdirSync("./commands").filter(file => file.endsWith(".js"));
for (const file of commandFiles) {
const command = require(`./commands/${file}`);
commands[command.name] = command;
}
// login bot
client.on("ready", () => {
console.log(`Logged in as ${client.user.tag}`);
});
client.on("message", message => {
if(!message.content.startsWith(prefix) || message.author.bot) return;
const args = message.content.slice(prefix.length).trim().split(/ +/);
const command = args.shift().toLowerCase();
let cmd = commands[command];
if(cmd)
cmd.execute(message, args)
});
client.login(token);
和一个包含beeame.js的命令文件夹,其中包含:
module.exports = {
name: "beeame",
description: "b",
execute: (message) => {
message.channel.send("It's Friday!", { files: ["./beeame.mp4"] });
}
}
我听说过cron作业和间隔,但我不确定如何将这些添加到我目前拥有的代码中。
任何帮助将是超级感激!
Nate,
这里有一些基础知识,让你开始。您所展示的现有项目将设置您的bot,以便在消息到达时处理消息。那里的一切都保持原样。您需要添加一个新的部分来处理计时器。
首先,这里是一个必须处理Cron作业的实用程序文件的片段:
const CronJob = require('cron').CronJob;
const job = new CronJob('* * * * *', function() {
const d = new Date();
console.log('At each 1 Minute:', d);
});
job.start();
要研究和注意的是'* * *'区域。您将需要理解这一点,以便正确设置时间。
所以用你的消息替换控制台日志,正确设置你的时间,你应该很好去。另一件要记住的事情是,无论你的机器人在哪里运行,时区可能与你(或其他人)所在的时区不同……所以如果你有特定的时间需求,你可能需要调整一下。
编辑:根据后续问题....注意,我没有把时间调对。你真的需要做更多的研究来理解它。
const cron = require('cron').CronJob;
const sendMessageWeekly = new cron('* * * * *', async function() {
const guild = client.guilds.cache.get(server_id_number);
if (guild) {
const ch = guild.channels.cache.get(channel_id_number);
await ch.send({ content: 'This is friendly reminder it is Friday somewhere' })
.catch(err => {
console.error(err);
});
}
});
sendMessageWeekly.start();