首页 > 解决方案 > Discord bot 不更新时间,仅在开始运行时继续打印时间(Node/Javascript)

问题描述

const Discord = require('discord.js');
const client = new Discord.Client();
var moment = require('moment');


const token = '//not telling you this';

const PREFIX = '!';



client.on('ready', () =>{
console.log('SaltBot is online');
})



var a = moment().format('LTS');


client.on('message', message=>{

let args = message.content.substring(PREFIX.length).split(" ");

 switch(args[0]){
    case 'ping':
       message.channel.send('pong!')
       break;
}


switch(args[0]){
    case 'Server':
            message.channel.send('Server status at ' + a , {files: ["//not telling either"]});

所以我为我的不和谐机器人制作了这段代码,当有人键入!服务器状态时,它基本上会发送我的世界服务器状态横幅的图像。我还想在同一条消息中包含时间,所以我使用了时刻。问题是,一旦机器人运行,每次你要求更新服务器状态时,它都会告诉你它何时上线。

我对编码很陌生,但决定是时候开始学习它了,如果这是一个明显的例子,我很抱歉。我只需要机器人告诉当前时间,每次有人在聊天中输入!服务器状态。

标签: javascriptnode.js

解决方案


表达式在评估时moment().format('LTS')获取当前时间。

当您告诉口译员进行评估时,这很重要,因为那是您将获得的时间。现在你将它分配给a你的消息处理程序之外,这意味着它是你的机器人初始启动的一部分 - 在启动期间你得到当前时间,保存它,现在你正在使用这个不变的时间来执行命令。在您的机器人的生命周期中,它只会被评估和保存一次。

您应该将表达式移动moment().format('LTS')到您的命令中,以便每次运行命令时都会重新评估它,如下所示:

message.channel.send('Server status at ' + moment().format('LTS') , {files: ["//not telling either"]});

推荐阅读