Radio Stations from JSON file

This commit is contained in:
Christer Warén 2020-03-09 01:26:24 +02:00
parent e0d25d97a5
commit 6e11029461
9 changed files with 60 additions and 23 deletions

View File

@ -20,8 +20,9 @@ module.exports = {
const embed = new Discord.MessageEmbed() const embed = new Discord.MessageEmbed()
.setTitle(`Found a bug with ${client.user.username}?\nDM the core developer:`) .setTitle(`Found a bug with ${client.user.username}?\nDM the core developer:`)
.setColor(client.config.embedColor)
.setDescription(`${developers}\nOr join the support server: ${client.config.supportGuild}`) .setDescription(`${developers}\nOr join the support server: ${client.config.supportGuild}`)
.setColor(client.config.embedColor); .setFooter('EximiaBots by Warén Media');
msg.channel.send(embed); msg.channel.send(embed);
}, },
}; };

View File

@ -11,9 +11,9 @@ module.exports = {
const command = client.commands.get(args[1]); const command = client.commands.get(args[1]);
const embed = new Discord.MessageEmbed() const embed = new Discord.MessageEmbed()
.setTitle(`${client.global.db.guilds[msg.guild.id].prefix}${command.name} ${command.usage}`) .setTitle(`${client.global.db.guilds[msg.guild.id].prefix}${command.name} ${command.usage}`)
.setDescription(command.description)
.setFooter(`Command Alias: \`${command.alias}\``)
.setColor(client.config.embedColor) .setColor(client.config.embedColor)
.setDescription(command.description + `\n Command Alias: \`${command.alias}\``)
.setFooter('EximiaBots by Warén Media')
msg.channel.send(embed); msg.channel.send(embed);
} else { } else {
const categories = []; const categories = [];
@ -26,9 +26,9 @@ module.exports = {
} }
const embed = new Discord.MessageEmbed() const embed = new Discord.MessageEmbed()
.setTitle(`${client.user.username} help:`) .setTitle(`${client.user.username} help:`)
.setDescription(commands)
.setFooter(`"${client.config.prefix}help <command>" to see more information about a command.`)
.setColor(client.config.embedColor) .setColor(client.config.embedColor)
.setDescription(commands + `\n "${client.config.prefix}help <command>" to see more information about a command.`)
.setFooter('EximiaBots by Warén Media');
msg.channel.send(embed); msg.channel.send(embed);
} }
} }

View File

@ -8,8 +8,9 @@ module.exports = {
execute(msg, args, client, Discord, prefix) { execute(msg, args, client, Discord, prefix) {
const embed = new Discord.MessageEmbed() const embed = new Discord.MessageEmbed()
.setTitle(`Invite ${client.user.username} to your Discord server!`) .setTitle(`Invite ${client.user.username} to your Discord server!`)
.setURL(client.config.invite)
.setColor(client.config.embedColor) .setColor(client.config.embedColor)
.setURL(client.config.invite)
.setFooter('EximiaBots by Warén Media');
return msg.channel.send(embed); return msg.channel.send(embed);
} }
}; };

View File

@ -11,11 +11,14 @@ module.exports = {
if (!radio.playing) return msg.channel.send('<:redx:674263474704220182> There is nothing playing.'); if (!radio.playing) return msg.channel.send('<:redx:674263474704220182> There is nothing playing.');
radio.time = radio.connection.dispatcher.streamTime; radio.time = radio.connection.dispatcher.streamTime;
const completed = (radio.time.toFixed(0)); const completed = (radio.time.toFixed(0));
const stations = await client.funcs.radiostations();
const embed = new Discord.MessageEmbed() const embed = new Discord.MessageEmbed()
.setTitle("__Now playing__") .setTitle("<a:aNotes:674602408105476106> Now Playing")
.setDescription(`<a:aNotes:674602408105476106>**Now playing:** ${radio.url}\n\`${client.funcs.msToTime(completed, "hh:mm:ss")}\``)
.setColor(client.config.embedColor) .setColor(client.config.embedColor)
.setDescription(`**${stations[radio.station].name}** \n Owner: ${stations[radio.station].owner} \n\`${client.funcs.msToTime(completed, "hh:mm:ss")}\``)
.setFooter('EximiaBots by Warén Media');
return msg.channel.send(embed); return msg.channel.send(embed);
} }
}; };

View File

@ -6,7 +6,7 @@ module.exports = {
permission: 'none', permission: 'none',
category: 'music', category: 'music',
async execute(msg, args, client, Discord, prefix) { async execute(msg, args, client, Discord, prefix) {
const url = args[1] ? args[1].replace(/<(.+)>/g, "$1") : ""; const station = args[1] ? args[1].replace(/<(.+)>/g, "$1") : "";
const radio = client.radio.get(msg.guild.id); const radio = client.radio.get(msg.guild.id);
const voiceChannel = msg.member.voice.channel; const voiceChannel = msg.member.voice.channel;
if (!radio) { if (!radio) {
@ -25,25 +25,26 @@ module.exports = {
if (radio) { if (radio) {
radio.connection.dispatcher.destroy(); radio.connection.dispatcher.destroy();
client.funcs.play(msg.guild, client, url); radio.station = station;
client.funcs.play(msg.guild, client, station);
return; return;
} }
const construct = { const construct = {
textChannel: msg.channel, textChannel: msg.channel,
voiceChannel: voiceChannel, voiceChannel: voiceChannel,
connection: null, connection: null,
playing: false, playing: false,
url: url, station: station-1,
name: null, name: null,
volume: client.config.volume, volume: client.config.volume,
}; };
client.radio.set(msg.guild.id, construct); client.radio.set(msg.guild.id, construct);
try { try {
const connection = await voiceChannel.join(); const connection = await voiceChannel.join();
construct.connection = connection; construct.connection = connection;
client.funcs.play(msg.guild, client, url); client.funcs.play(msg.guild, client, station);
} catch (error) { } catch (error) {
client.radio.delete(msg.guild.id); client.radio.delete(msg.guild.id);
client.debug_channel.send("Error with connecting to voice channel: " + error); client.debug_channel.send("Error with connecting to voice channel: " + error);

View File

@ -20,6 +20,7 @@
"discord.js": "^12.0.1", "discord.js": "^12.0.1",
"dotenv": "^8.2.0", "dotenv": "^8.2.0",
"fs": "0.0.1-security", "fs": "0.0.1-security",
"node-fetch": "^2.6.0",
"path": "^0.12.7" "path": "^0.12.7"
} }
} }

View File

@ -1,7 +1,7 @@
const { Client, Collection } = require('discord.js'); const { Client, Collection } = require('discord.js');
const Discord = require('discord.js'); const Discord = require('discord.js');
const fs = require('fs'); const fs = require('fs');
const path = require('path') const path = require('path');
const events = '../events/'; const events = '../events/';
module.exports = class extends Client { module.exports = class extends Client {
@ -29,10 +29,6 @@ module.exports = class extends Client {
this.commandAliases.set(command.alias, command); this.commandAliases.set(command.alias, command);
} }
if (this.config.devMode) {
this.config.token = this.config.devToken;
}
this.on('ready', () => { this.on('ready', () => {
require(`${events}ready`).execute(this, Discord); require(`${events}ready`).execute(this, Discord);
}); });

View File

@ -1,6 +1,26 @@
module.exports = async function (guild, client, url) { module.exports = async function (guild, client, station) {
const radio = client.radio.get(guild.id); const radio = client.radio.get(guild.id);
const stations = await client.funcs.radiostations();
let url = "";
if(isNaN(station)){
radio.voiceChannel.leave();
return radio.textChannel.send('<:redx:674263474704220182> An error has occured while playing radio!');
}
if(station-1 > stations.length-1){
radio.voiceChannel.leave();
return radio.textChannel.send('<:redx:674263474704220182> An error has occured while playing radio!');
}
url = stations[station-1].stream[stations[station-1].stream.default];
if(!url) {
radio.voiceChannel.leave();
return radio.textChannel.send('<:redx:674263474704220182> An error has occured while playing radio!');
}
const dispatcher = radio.connection const dispatcher = radio.connection
.play(url, { bitrate: 1024, passes: 10, volume: 1, highWaterMark: 1 << 25 }) .play(url, { bitrate: 1024, passes: 10, volume: 1, highWaterMark: 1 << 25 })
.on("finish", () => { .on("finish", () => {
@ -8,16 +28,21 @@ module.exports = async function (guild, client, url) {
client.radio.delete(guild.id); client.radio.delete(guild.id);
return; return;
}); });
dispatcher.on('start', () => { dispatcher.on('start', () => {
dispatcher.player.streamingData.pausedTime = 0; dispatcher.player.streamingData.pausedTime = 0;
}); });
dispatcher.on('error', error => { dispatcher.on('error', error => {
console.error(error); console.error(error);
radio.voiceChannel.leave(); radio.voiceChannel.leave();
client.radio.delete(guild.id); client.radio.delete(guild.id);
return radio.textChannel.send('<:redx:674263474704220182> An error has occured while playing radio!'); return radio.textChannel.send('<:redx:674263474704220182> An error has occured while playing radio!');
}); });
dispatcher.setVolume(radio.volume / 10); dispatcher.setVolume(radio.volume / 10);
radio.textChannel.send('Start playing'); radio.textChannel.send('Start playing');
radio.playing = true; radio.playing = true;
} }

View File

@ -0,0 +1,9 @@
module.exports = async function () {
const fetch = require('node-fetch');
let data = fetch('https://gitea.cwinfo.org/cwchristerw/radio/raw/branch/master/playlist.json')
.then(res => res.json());
return data;
}