Unknown differences

This commit is contained in:
Christer Warén 2020-04-04 07:23:29 +03:00
parent ac6cdf9f2f
commit 8db8115ce3
8 changed files with 293 additions and 293 deletions

View File

@ -1,17 +1,17 @@
module.exports = { module.exports = {
name: 'maintenance', name: 'maintenance',
alias: 'm', alias: 'm',
usage: '', usage: '',
description: 'Bot Maintenance', description: 'Bot Maintenance',
permission: 'none', permission: 'none',
category: 'info', category: 'info',
execute(msg, args, client, Discord, command) { execute(msg, args, client, Discord, command) {
const embed = new Discord.MessageEmbed() const embed = new Discord.MessageEmbed()
.setTitle(client.messages.maintenanceTitle) .setTitle(client.messages.maintenanceTitle)
.setThumbnail("https://cdn.discordapp.com/emojis/" + client.messageEmojis["maintenance"].replace(/[^0-9]+/g, '')) .setThumbnail("https://cdn.discordapp.com/emojis/" + client.messageEmojis["maintenance"].replace(/[^0-9]+/g, ''))
.setColor(client.config.embedColor) .setColor(client.config.embedColor)
.setDescription(client.messages.maintenanceDescription) .setDescription(client.messages.maintenanceDescription)
.setFooter('EximiaBots by Warén Media', "https://cdn.discordapp.com/emojis/" + client.messageEmojis["eximiabots"].replace(/[^0-9]+/g, '')); .setFooter('EximiaBots by Warén Media', "https://cdn.discordapp.com/emojis/" + client.messageEmojis["eximiabots"].replace(/[^0-9]+/g, ''));
return msg.channel.send(embed); return msg.channel.send(embed);
} }
}; };

View File

@ -1,39 +1,39 @@
module.exports = { module.exports = {
name: 'statistics', name: 'statistics',
alias: 'stats', alias: 'stats',
usage: '', usage: '',
description: 'Show usage statistics.', description: 'Show usage statistics.',
permission: 'none', permission: 'none',
category: 'info', category: 'info',
execute(msg, args, client, Discord, command) { execute(msg, args, client, Discord, command) {
let message = {}; let message = {};
let stations = client.stations; let stations = client.stations;
let currentGuild = client.datastore.getEntry(msg.guild.id); let currentGuild = client.datastore.getEntry(msg.guild.id);
let statistics = ""; let statistics = "";
if(!client.stations) { if(!client.stations) {
message.errorToGetPlaylist = client.messages.errorToGetPlaylist.replace("%client.config.supportGuild%", client.config.supportGuild); message.errorToGetPlaylist = client.messages.errorToGetPlaylist.replace("%client.config.supportGuild%", client.config.supportGuild);
return msg.channel.send(client.messageEmojis["error"] + message.errorToGetPlaylist); return msg.channel.send(client.messageEmojis["error"] + message.errorToGetPlaylist);
} }
if(!currentGuild || currentGuild && !currentGuild.statistics){ if(!currentGuild || currentGuild && !currentGuild.statistics){
statistics = "You have not listened any radio station"; statistics = "You have not listened any radio station";
} else { } else {
Object.keys(stations).forEach(function(station) { Object.keys(stations).forEach(function(station) {
if(currentGuild.statistics[stations[station].name] && currentGuild.statistics[stations[station].name].time && parseInt(currentGuild.statistics[stations[station].name].time) > 0 && currentGuild.statistics[stations[station].name].used && parseInt(currentGuild.statistics[stations[station].name].used) > 0){ if(currentGuild.statistics[stations[station].name] && currentGuild.statistics[stations[station].name].time && parseInt(currentGuild.statistics[stations[station].name].time) > 0 && currentGuild.statistics[stations[station].name].used && parseInt(currentGuild.statistics[stations[station].name].used) > 0){
statistics += `**${parseInt(station) + 1}** ` + stations[station].name + " \n"; statistics += `**${parseInt(station) + 1}** ` + stations[station].name + " \n";
statistics += "Time: " + client.funcs.msToTime(currentGuild.statistics[stations[station].name].time, "hh:mm:ss") + "\n"; statistics += "Time: " + client.funcs.msToTime(currentGuild.statistics[stations[station].name].time, "hh:mm:ss") + "\n";
statistics += "Used: " + currentGuild.statistics[stations[station].name].used + "\n"; statistics += "Used: " + currentGuild.statistics[stations[station].name].used + "\n";
} }
}); });
} }
const embed = new Discord.MessageEmbed() const embed = new Discord.MessageEmbed()
.setTitle(client.messages.statisticsTitle) .setTitle(client.messages.statisticsTitle)
.setThumbnail("https://cdn.discordapp.com/emojis/" + client.messageEmojis["statistics"].replace(/[^0-9]+/g, '')) .setThumbnail("https://cdn.discordapp.com/emojis/" + client.messageEmojis["statistics"].replace(/[^0-9]+/g, ''))
.setColor(client.config.embedColor) .setColor(client.config.embedColor)
.setDescription(statistics) .setDescription(statistics)
.setFooter('EximiaBots by Warén Media', "https://cdn.discordapp.com/emojis/" + client.messageEmojis["eximiabots"].replace(/[^0-9]+/g, '')); .setFooter('EximiaBots by Warén Media', "https://cdn.discordapp.com/emojis/" + client.messageEmojis["eximiabots"].replace(/[^0-9]+/g, ''));
return msg.channel.send(embed); return msg.channel.send(embed);
} }
}; };

View File

@ -1,126 +1,126 @@
const fs = require('fs'); const fs = require('fs');
const path = require('path'); const path = require('path');
module.exports = class { module.exports = class {
constructor() { constructor() {
this.map = new Map(); this.map = new Map();
this.loadData(); this.loadData();
} }
loadData() { loadData() {
//console.log(""); //console.log("");
const dataFiles = fs.readdirSync(path.join(path.dirname(__dirname), 'datastore')).filter(f => f.endsWith('.json')); const dataFiles = fs.readdirSync(path.join(path.dirname(__dirname), 'datastore')).filter(f => f.endsWith('.json'));
for (const file of dataFiles) { for (const file of dataFiles) {
try { try {
const json = require(`../datastore/${file}`); const json = require(`../datastore/${file}`);
this.map.set(json.guild.id, json); this.map.set(json.guild.id, json);
//console.log('[LOADED] ' + file + " (" + json.guild.id + ")"); //console.log('[LOADED] ' + file + " (" + json.guild.id + ")");
//console.log(JSON.stringify(json, null, 4)); //console.log(JSON.stringify(json, null, 4));
} catch (error) { } catch (error) {
//console.log('[ERROR] Loading ' + file + ' failed'); //console.log('[ERROR] Loading ' + file + ' failed');
} }
} }
//console.log(""); //console.log("");
} }
calculateGlobal(client){ calculateGlobal(client){
let guilds = this.map.keys(); let guilds = this.map.keys();
let stations = client.stations; let stations = client.stations;
let statistics = {}; let statistics = {};
if(!client.stations) return; if(!client.stations) return;
let calculation = guilds.next(); let calculation = guilds.next();
while (!calculation.done) { while (!calculation.done) {
let currentGuild = this.getEntry(calculation.value); let currentGuild = this.getEntry(calculation.value);
if(calculation.value == 'global'){ if(calculation.value == 'global'){
return calculation = guilds.next(); return calculation = guilds.next();
} }
if(stations){ if(stations){
Object.keys(stations).forEach(function(station) { Object.keys(stations).forEach(function(station) {
if(currentGuild.statistics[stations[station].name] && currentGuild.statistics[stations[station].name].time && !parseInt(currentGuild.statistics[stations[station].name].time) == 0 && currentGuild.statistics[stations[station].name].used && !parseInt(currentGuild.statistics[stations[station].name].used) == 0){ if(currentGuild.statistics[stations[station].name] && currentGuild.statistics[stations[station].name].time && !parseInt(currentGuild.statistics[stations[station].name].time) == 0 && currentGuild.statistics[stations[station].name].used && !parseInt(currentGuild.statistics[stations[station].name].used) == 0){
if(!statistics[stations[station].name]){ if(!statistics[stations[station].name]){
statistics[stations[station].name] = {}; statistics[stations[station].name] = {};
statistics[stations[station].name].time = 0; statistics[stations[station].name].time = 0;
statistics[stations[station].name].used = 0; statistics[stations[station].name].used = 0;
} }
statistics[stations[station].name].time = parseInt(statistics[stations[station].name].time)+parseInt(currentGuild.statistics[stations[station].name].time); statistics[stations[station].name].time = parseInt(statistics[stations[station].name].time)+parseInt(currentGuild.statistics[stations[station].name].time);
statistics[stations[station].name].used = parseInt(statistics[stations[station].name].used)+parseInt(currentGuild.statistics[stations[station].name].used); statistics[stations[station].name].used = parseInt(statistics[stations[station].name].used)+parseInt(currentGuild.statistics[stations[station].name].used);
} }
}); });
} }
calculation = guilds.next(); calculation = guilds.next();
} }
let newData = {}; let newData = {};
newData.guild = {}; newData.guild = {};
newData.guild.id = "global"; newData.guild.id = "global";
newData.guild.name = "global"; newData.guild.name = "global";
newData.statistics = statistics; newData.statistics = statistics;
this.updateEntry(newData.guild, newData); this.updateEntry(newData.guild, newData);
} }
checkEntry(id){ checkEntry(id){
if(!this.map.has(id)){ if(!this.map.has(id)){
this.createEntry(id); this.createEntry(id);
//this.showEntry(this.getEntry(id)); //this.showEntry(this.getEntry(id));
} else { } else {
//this.showEntry(this.getEntry(id)); //this.showEntry(this.getEntry(id));
} }
} }
createEntry(id){ createEntry(id){
let newData = {}; let newData = {};
newData.guild = {}; newData.guild = {};
newData.guild.id = id; newData.guild.id = id;
newData.statistics = {}; newData.statistics = {};
this.map.set(id, newData); this.map.set(id, newData);
this.saveEntry(id, newData); this.saveEntry(id, newData);
} }
getEntry(id){ getEntry(id){
return this.map.get(id); return this.map.get(id);
} }
updateEntry(guild, newData) { updateEntry(guild, newData) {
newData.guild.name = guild.name; newData.guild.name = guild.name;
this.map.set(guild.id, newData); this.map.set(guild.id, newData);
this.saveEntry(guild.id, newData); this.saveEntry(guild.id, newData);
//this.showEntry(this.getEntry(guild.id)); //this.showEntry(this.getEntry(guild.id));
} }
showEntry(data){ showEntry(data){
console.log(data); console.log(data);
} }
createTestFile () { createTestFile () {
let newData = { let newData = {
"guild": { "guild": {
"id": "test", "id": "test",
"name": "Test" "name": "Test"
}, },
"statistics": { "statistics": {
"test": { "test": {
"time": 0, "time": 0,
"used": 0 "used": 0
} }
} }
} }
this.updateEntry(newData.guild, newData); this.updateEntry(newData.guild, newData);
} }
saveEntry(file, data) { saveEntry(file, data) {
data = JSON.stringify(data, null, 4); data = JSON.stringify(data, null, 4);
fs.writeFile(path.join(path.dirname(__dirname), 'datastore') + "/" + file + ".json", data, 'utf8', function(err) { fs.writeFile(path.join(path.dirname(__dirname), 'datastore') + "/" + file + ".json", data, 'utf8', function(err) {
if (err) { if (err) {
//console.log(err); //console.log(err);
} }
}); });
} }
}; };

View File

@ -1,38 +1,38 @@
module.exports = { module.exports = {
name: 'emojis', name: 'emojis',
async execute(client) { async execute(client) {
let customEmojis = { let customEmojis = {
logo: "<:RadioX:688765708808487072>", logo: "<:RadioX:688765708808487072>",
eximiabots: "<:EximiaBots:693277919929303132>", eximiabots: "<:EximiaBots:693277919929303132>",
list: "<:RadioXList:688541155519889482>", list: "<:RadioXList:688541155519889482>",
play: "<:RadioXPlay:688541155712827458>", play: "<:RadioXPlay:688541155712827458>",
stop: "<:RadioXStop:688541155377414168>", stop: "<:RadioXStop:688541155377414168>",
statistics: "<:RadioXStatistics:694954485507686421>", statistics: "<:RadioXStatistics:694954485507686421>",
maintenance: "<:RadioXMaintenance:695043843057254493>", maintenance: "<:RadioXMaintenance:695043843057254493>",
error: "<:RadioXError:688541155792781320>" error: "<:RadioXError:688541155792781320>"
}; };
let fallbackEmojis = { let fallbackEmojis = {
logo: "RadioX", logo: "RadioX",
eximiabots: "EximiaBots", eximiabots: "EximiaBots",
list: "📜", list: "📜",
play: "▶️", play: "▶️",
stop: "⏹️", stop: "⏹️",
statistics: "📊", statistics: "📊",
maintenance: "🛠️", maintenance: "🛠️",
error: "❌" error: "❌"
}; };
client.messageEmojis = {}; client.messageEmojis = {};
for (customEmojiName in customEmojis) { for (customEmojiName in customEmojis) {
customEmojiID = customEmojis[customEmojiName].replace(/[^0-9]+/g, ''); customEmojiID = customEmojis[customEmojiName].replace(/[^0-9]+/g, '');
customEmoji = client.emojis.cache.get(customEmojiID); customEmoji = client.emojis.cache.get(customEmojiID);
if (customEmoji) { if (customEmoji) {
client.messageEmojis[customEmojiName] = customEmojis[customEmojiName]; client.messageEmojis[customEmojiName] = customEmojis[customEmojiName];
} else { } else {
client.messageEmojis[customEmojiName] = fallbackEmojis[customEmojiName]; client.messageEmojis[customEmojiName] = fallbackEmojis[customEmojiName];
} }
} }
} }
} }

View File

@ -1,17 +1,17 @@
module.exports = function msToTime(duration, format) { module.exports = function msToTime(duration, format) {
var seconds = Math.floor((duration / 1000) % 60), var seconds = Math.floor((duration / 1000) % 60),
minutes = Math.floor((duration / (1000 * 60)) % 60), minutes = Math.floor((duration / (1000 * 60)) % 60),
hours = Math.floor((duration / (1000 * 60 * 60)) % 24); hours = Math.floor((duration / (1000 * 60 * 60)) % 24);
days = Math.floor((duration / (1000 * 60 * 60 * 24)) % 24); days = Math.floor((duration / (1000 * 60 * 60 * 24)) % 24);
days = (days < 10) ? "0" + days : days; days = (days < 10) ? "0" + days : days;
hours = (hours < 10) ? "0" + hours : hours; hours = (hours < 10) ? "0" + hours : hours;
minutes = (minutes < 10) ? "0" + minutes : minutes; minutes = (minutes < 10) ? "0" + minutes : minutes;
seconds = (seconds < 10) ? "0" + seconds : seconds; seconds = (seconds < 10) ? "0" + seconds : seconds;
if (format === "hh:mm:ss") { if (format === "hh:mm:ss") {
return `${hours}:${minutes}:${seconds}`; return `${hours}:${minutes}:${seconds}`;
} else if (format === "dd:hh:mm:ss") { } else if (format === "dd:hh:mm:ss") {
return `${days}:${hours}:${minutes}:${seconds}`; return `${days}:${hours}:${minutes}:${seconds}`;
} }
} }

View File

@ -1,25 +1,25 @@
module.exports = function statisticsUpdate(client, guild, radio) { module.exports = function statisticsUpdate(client, guild, radio) {
client.datastore.checkEntry(guild.id); client.datastore.checkEntry(guild.id);
radio.currentGuild = client.datastore.getEntry(guild.id); radio.currentGuild = client.datastore.getEntry(guild.id);
if(!radio.currentGuild.statistics[radio.station.name]){ if(!radio.currentGuild.statistics[radio.station.name]){
radio.currentGuild.statistics[radio.station.name] = {}; radio.currentGuild.statistics[radio.station.name] = {};
radio.currentGuild.statistics[radio.station.name].time = 0; radio.currentGuild.statistics[radio.station.name].time = 0;
radio.currentGuild.statistics[radio.station.name].used = 0; radio.currentGuild.statistics[radio.station.name].used = 0;
client.datastore.updateEntry(guild, radio.currentGuild); client.datastore.updateEntry(guild, radio.currentGuild);
} }
if(!radio.connection.dispatcher){ if(!radio.connection.dispatcher){
let date = new Date(); let date = new Date();
radio.currentTime = date.getTime(); radio.currentTime = date.getTime();
radio.playTime = parseInt(radio.currentTime)-parseInt(radio.startTime); radio.playTime = parseInt(radio.currentTime)-parseInt(radio.startTime);
radio.currentGuild.statistics[radio.station.name].time = parseInt(radio.currentGuild.statistics[radio.station.name].time)+parseInt(radio.playTime); radio.currentGuild.statistics[radio.station.name].time = parseInt(radio.currentGuild.statistics[radio.station.name].time)+parseInt(radio.playTime);
} else { } else {
radio.currentGuild.statistics[radio.station.name].time = parseInt(radio.currentGuild.statistics[radio.station.name].time)+parseInt(radio.connection.dispatcher.streamTime.toFixed(0)); radio.currentGuild.statistics[radio.station.name].time = parseInt(radio.currentGuild.statistics[radio.station.name].time)+parseInt(radio.connection.dispatcher.streamTime.toFixed(0));
} }
radio.currentGuild.statistics[radio.station.name].used = parseInt(radio.currentGuild.statistics[radio.station.name].used)+1; radio.currentGuild.statistics[radio.station.name].used = parseInt(radio.currentGuild.statistics[radio.station.name].used)+1;
client.datastore.updateEntry(guild, radio.currentGuild); client.datastore.updateEntry(guild, radio.currentGuild);
} }

View File

@ -1,36 +1,36 @@
module.exports = { module.exports = {
wrongVoiceChannel: "You need to be in the same voice channel as RadioX to use this command!", wrongVoiceChannel: "You need to be in the same voice channel as RadioX to use this command!",
noPerms: "You need the %command.permission% permission to use this command!", noPerms: "You need the %command.permission% permission to use this command!",
notPlaying: "There is nothing playing!", notPlaying: "There is nothing playing!",
runningCommandFailed: "Running this command failed!", runningCommandFailed: "Running this command failed!",
noPermsEmbed: "I cannot send embeds (Embed links).", noPermsEmbed: "I cannot send embeds (Embed links).",
bugTitle: "Found a bug with %client.user.username%?\nDM one of the core developers:", bugTitle: "Found a bug with %client.user.username%?\nDM one of the core developers:",
bugDescription: "%client.developers%\nOr join the support server: %client.config.supportGuild%", bugDescription: "%client.developers%\nOr join the support server: %client.config.supportGuild%",
helpTitle: "%client.user.username% help:", helpTitle: "%client.user.username% help:",
helpDescription: "%commands% \n %client.config.prefix%help <command> to see more information about a command.", helpDescription: "%commands% \n %client.config.prefix%help <command> to see more information about a command.",
helpCommandTitle: "%client.config.prefix%%command.name% %command.usage%", helpCommandTitle: "%client.config.prefix%%command.name% %command.usage%",
helpCommandDescription: "%command.description% \n Command Alias: %command.alias%", helpCommandDescription: "%command.description% \n Command Alias: %command.alias%",
inviteTitle: "Invite %client.user.username% to your Discord server!", inviteTitle: "Invite %client.user.username% to your Discord server!",
listTitle: "Radio Stations", listTitle: "Radio Stations",
nowplayingTitle: "Now Playing", nowplayingTitle: "Now Playing",
nowplayingDescription: "**%radio.station.name%** \n Owner: %radio.station.owner% \n %client.funcs.msToTime(completed, \"hh:mm:ss\")%", nowplayingDescription: "**%radio.station.name%** \n Owner: %radio.station.owner% \n %client.funcs.msToTime(completed, \"hh:mm:ss\")%",
noVoiceChannel: "You need to be in a voice channel to play radio!", noVoiceChannel: "You need to be in a voice channel to play radio!",
noQuery: "You need to use a number or search for a supported station!", noQuery: "You need to use a number or search for a supported station!",
noPermsConnect: "I cannot connect to your voice channel.", noPermsConnect: "I cannot connect to your voice channel.",
noPermsSpeak: "I cannot speak in your voice channel.", noPermsSpeak: "I cannot speak in your voice channel.",
wrongStationNumber: "No such station!", wrongStationNumber: "No such station!",
tooShortSearch: "Station must be over 2 characters!", tooShortSearch: "Station must be over 2 characters!",
noSearchResults: "No stations found!", noSearchResults: "No stations found!",
errorPlaying: "An error has occured while playing radio!", errorPlaying: "An error has occured while playing radio!",
play: "Start playing: %radio.station.name%", play: "Start playing: %radio.station.name%",
stop: "Stopped playback!", stop: "Stopped playback!",
currentVolume: "Current volume: **%radio.volume%**", currentVolume: "Current volume: **%radio.volume%**",
maxVolume: "The max volume is `100`!", maxVolume: "The max volume is `100`!",
invalidVolume: "You need to enter a valid __number__.", invalidVolume: "You need to enter a valid __number__.",
negativeVolume: "The volume needs to be a positive number!", negativeVolume: "The volume needs to be a positive number!",
newVolume: "Volume is now: **%volume%**", newVolume: "Volume is now: **%volume%**",
statisticsTitle: "Statistics", statisticsTitle: "Statistics",
maintenanceTitle: "Maintenance", maintenanceTitle: "Maintenance",
maintenanceDescription: "This command is not ready to be used by anyone.", maintenanceDescription: "This command is not ready to be used by anyone.",
errorToGetPlaylist: "You can't use this bot because it has no playlist available. Check more information in our Discord support server %client.config.supportGuild% !" errorToGetPlaylist: "You can't use this bot because it has no playlist available. Check more information in our Discord support server %client.config.supportGuild% !"
}; };

View File

@ -1,2 +1,2 @@
const radioClient = require("./client/class.js"); const radioClient = require("./client/class.js");
const client = new radioClient(); const client = new radioClient();