javascript - 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"]});
所以我为我的不和谐机器人制作了这段代码,当有人键入!服务器状态时,它基本上会发送我的世界服务器状态横幅的图像。我还想在同一条消息中包含时间,所以我使用了时刻。问题是,一旦机器人运行,每次你要求更新服务器状态时,它都会告诉你它何时上线。
我对编码很陌生,但决定是时候开始学习它了,如果这是一个明显的例子,我很抱歉。我只需要机器人告诉当前时间,每次有人在聊天中输入!服务器状态。
解决方案
表达式在评估时moment().format('LTS')
获取当前时间。
当您告诉口译员进行评估时,这很重要,因为那是您将获得的时间。现在你将它分配给a
你的消息处理程序之外,这意味着它是你的机器人初始启动的一部分 - 在启动期间你得到当前时间,保存它,现在你正在使用这个不变的时间来执行命令。在您的机器人的生命周期中,它只会被评估和保存一次。
您应该将表达式移动moment().format('LTS')
到您的命令中,以便每次运行命令时都会重新评估它,如下所示:
message.channel.send('Server status at ' + moment().format('LTS') , {files: ["//not telling either"]});
推荐阅读
- kotlin-exposed - 一种通过使用 uuid 访问实体来插入(选择)记录的方法,在数据库中具有 BINARY 形式的 uuid
- if-statement - 如何计算最弱条件?
- java - 这个视图的名称是什么,我如何在我的 android 应用程序中实现它
- browserstack - 如何在 BrowserStack app-automate 中获得实时网络调用?
- sql - 如何获取月份的最后一个日期
- leaflet - 单击按钮删除使用 React-leaflet-draw 绘制的形状
- typescript - TypeScript - 变量在某些无法确定其类型的位置隐式具有类型“任何”
- json - 使用 bash、sed、grep 或 awk 从无效 JSON 中提取数据?
- macos - 如何从我的计算机中删除反击文件
- python - 创建多个子进程