我正在尝试制作一个不和谐的机器人,该机器人在特定的时间/日期宣布事件。
代码:
const Discord = require('discord.js');
const client = new Discord.Client();
client.on('ready', () => {
console.log('Logged in as ${client.user.tag}!');
client.channels.cache.get('id').send('test')
});
while (true){
var today = new Date();
var time = today.getHours();
var day = today.getDay();
if (day == 5) {
if (time == 0) {
client.channels.cache.get('id').send('event1');
}
}
if (day = 3) {
if (time = 15) {
client.channels.cache.get('id').send('event2')
}
}
}
client.login('token');
(显然我已经更换了一些零件)
错误消息是:
TypeError:无法读取未定义的属性“发送”
它仅在事件2出现。它还不会发送“测试”消息。
答案 0 :(得分:0)
您的代码中有几个问题。您正在这里按日期和时间执行作业:
if (day = 3) {
if (time = 15) {
client.channels.cache.get('id').send('event2')
}
}
此代码的意思是,如果javascript成功将day
设置为3
(并且将成功),并且javascript成功将time
设置为{{1} }(同样也是),然后应执行15
。
您需要使用双倍或三倍等于来检查是否相等。
这是您的client.channels.cache.get('id').send('event2')
首先引发错误的原因。这是实际上正在运行的第一行。
您正在使用client.channels.cache.get('id').send('event2')
尝试获取要广播的频道。
client.channels.cache.get('id')
只是一个占位符,需要替换为通道ID。
没有直接访问缓存的真正原因,您应该使用'id'
-再次,用通道ID替换ID。
它会自动访问缓存或查询服务器,这取决于哪个更合适。
client.channels.fetch('id')
您的代码还有其他一些问题(const Discord = require('discord.js');
const client = new Discord.Client();
client.on('ready', () => {
console.log('Logged in as ${client.user.tag}!');
client.channels.fetch('id').send('test')
});
while (true){
var today = new Date();
var time = today.getHours();
var day = today.getDay();
if (day == 5) {
if (time == 0) {
client.channels.fetch('id').send('event1');
}
}
if (day == 3) {
if (time == 15) {
client.channels.fetch('id').send('event2')
}
}
}
client.login('token');
循环将继续循环,即使它仅检查99.9%的时间)。我建议搜索人们习惯于使用discord.js实施基于时间的任务的其他模式。