The official leaked source code of the Dyno Discord Bot.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

69 lines
2.1 KiB

'use strict';
const { Command } = require('@dyno.gg/dyno-core');
const moment = require('moment');
require('moment-duration-format');
class Sessions extends Command {
constructor(...args) {
super(...args);
this.aliases = ['sessions'];
this.group = 'Admin';
this.description = 'Get session data';
this.usage = 'uptime';
this.cooldown = 10000;
this.hideFromHelp = true;
this.permissions = 'admin';
this.overseerEnabled = true;
this.expectedArgs = 0;
}
permissionsFn({ message }) {
if (!message.member) return false;
if (message.guild.id !== this.config.dynoGuild) return false;
if (this.isServerAdmin(message.member, message.channel)) return true;
if (this.isServerMod(message.member, message.channel)) return true;
let allowedRoles = [
'225209883828420608', // Accomplices
'222393180341927936', // Regulars
'355054563931324420', // Trusted
];
const roles = message.guild.roles.filter(r => allowedRoles.includes(r.id));
if (roles && message.member.roles.find(r => roles.find(role => role.id === r))) return true;
return false;
}
async execute({ message }) {
try {
var data = await this.client.getBotGateway();
} catch (err) {
return this.error(message.channel, err);
}
let resetAfter = moment.duration(data.session_start_limit.reset_after, 'milliseconds'),
resetAfterDate = moment().subtract(data.session_start_limit.reset_after, 'milliseconds').format('llll');
const embed = {
color: this.utils.getColor('blue'),
title: 'Session Data',
fields: [
{ name: 'Recommended Shards', value: data.shards.toString(), inline: true },
{ name: 'Session Limit', value: data.session_start_limit.total.toString(), inline: true },
{ name: 'Session Remaining', value: data.session_start_limit.remaining.toString(), inline: true },
{ name: 'Reset After', value: resetAfter.format('d [days], h [hrs], m [min], s [sec]') },
{ name: 'Reset After Date', value: resetAfterDate },
],
timestamp: (new Date()).toISOString(),
};
return this.sendMessage(message.channel, { embed });
}
}
module.exports = Sessions;