33 lines
1.1 KiB
JavaScript
Executable File
33 lines
1.1 KiB
JavaScript
Executable File
'use strict';
|
|
|
|
const config = require('config');
|
|
const os = require('os');
|
|
const { intervalToDuration } = require('date-fns');
|
|
|
|
const start = Date.now();
|
|
|
|
function getDurationString(duration) {
|
|
return Object.entries(duration)
|
|
.filter(([, value]) => !!value)
|
|
.map(([key, value]) => `${value} ${key}`)
|
|
.join(', ');
|
|
}
|
|
|
|
function onCommand(args, context) {
|
|
const duration = intervalToDuration({ start, end: Date.now() });
|
|
const durationString = getDurationString(duration);
|
|
|
|
if (['sys', 'system'].includes(context.subcommand || args[0]) && config.operators.includes(context.user.username)) {
|
|
const osDuration = intervalToDuration({ start: 0, end: os.uptime() * 1000 });
|
|
const osDurationString = getDurationString(osDuration);
|
|
|
|
context.sendMessage(`I've been awake for ${durationString}. My host '${os.hostname()}' has been running for ${osDurationString}.`, context.room.id, null, context.message.user?.recipient);
|
|
|
|
return;
|
|
}
|
|
|
|
context.sendMessage(`I've been awake for ${durationString}.`, context.room.id, null, context.message.user?.recipient);
|
|
}
|
|
|
|
module.exports = { onCommand };
|