aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIndrajith K L2021-06-22 21:52:15 +0530
committerIndrajith K L2021-06-22 21:52:15 +0530
commit07d768cc40b3c6a8ea68e0ce1eae17f025f5ba0f (patch)
tree8cd28bf72df180031704120e59eeb9d166dcced8
parent0ef3c83f4049227c08731e3f31e53c38e1da5957 (diff)
downloadradio-bot-07d768cc40b3c6a8ea68e0ce1eae17f025f5ba0f.tar.gz
radio-bot-07d768cc40b3c6a8ea68e0ce1eae17f025f5ba0f.tar.bz2
radio-bot-07d768cc40b3c6a8ea68e0ce1eae17f025f5ba0f.zip
Adds FM Radio Stations
``` !tune => This will play default radio station !tune next => Next Radio Station !tune prev => Previous Radio Station ```
-rw-r--r--src/commands/radioStart.js11
-rw-r--r--src/commands/tune.js64
-rw-r--r--src/configs/commands.config.json5
-rw-r--r--src/configs/radio.json32
4 files changed, 106 insertions, 6 deletions
diff --git a/src/commands/radioStart.js b/src/commands/radioStart.js
index d9c4ac1..0f0b5f7 100644
--- a/src/commands/radioStart.js
+++ b/src/commands/radioStart.js
@@ -1,6 +1,5 @@
const { VoiceChannel, TextChannel, MessageEmbed } = require("discord.js");
const axios = require('axios').default;
-
const instance = axios.create({
baseURL: 'http://retrowave.ru/api/v1'
});
@@ -10,15 +9,15 @@ const resourceUrl = 'http://retrowave.ru'
async function broadcastRadio(client, args, message, voiceChannel, textChannel) {
const connection = await voiceChannel.join();
try {
- playRadio(connection, textChannel);
+ playRadioRetroWave(connection, textChannel);
} catch (error) {
console.log(error);
textChannel.send('Something went wrong. RADIO MON got ill...😱😱');
}
-
}
-async function playRadio(connection,textChannel) {
+
+async function playRadioRetroWave(connection, textChannel) {
const nextMusic = await getNextMusic();
const { id, title, streamUrl, artworkUrl } = nextMusic;
const nowPlayingMessage = new MessageEmbed()
@@ -26,10 +25,10 @@ async function playRadio(connection,textChannel) {
.setDescription(title)
.setColor('LUMINOUS_VIVID_PINK')
.setThumbnail(`${resourceUrl}${artworkUrl}`);
- textChannel.send(nowPlayingMessage)
+ textChannel.send(nowPlayingMessage);
connection.play(`${resourceUrl}${streamUrl}`, { seek: 0, volume: 1 })
.on('finish', () => {
- playRadio(connection,textChannel);
+ playRadio(connection, textChannel);
});
}
diff --git a/src/commands/tune.js b/src/commands/tune.js
new file mode 100644
index 0000000..e00b50d
--- /dev/null
+++ b/src/commands/tune.js
@@ -0,0 +1,64 @@
+const { VoiceChannel, TextChannel, MessageEmbed } = require('discord.js');
+const fs = require('fs');
+const readFile = fs.promises.readFile;
+let radioIndex = 0;
+
+async function broadcastRadio(client, args, message, voiceChannel, textChannel) {
+ const connection = await voiceChannel.join();
+ try {
+ playRadio(connection, textChannel, args);
+ } catch (error) {
+ console.log(error);
+ textChannel.send('Something went wrong. RADIO MON got ill...😱😱');
+ }
+}
+
+async function playRadio(connection, textChannel, args) {
+ try {
+ const [radioCommand] = args;
+ const radioConfig = await readFile('src/configs/radio.json', 'utf8');
+ const radioStations = JSON.parse(radioConfig);
+ const totalRadioStations = radioStations.length;
+ let currentRadioStation;
+ if (!radioCommand) {
+ radioIndex = 0;
+ currentRadioStation = radioStations[radioIndex];
+ } else {
+ switch (radioCommand) {
+ case 'next':
+ radioIndex++;
+ if (radioIndex >= totalRadioStations) radioIndex = 0;
+ break;
+ case 'prev':
+ radioIndex--;
+ if (radioIndex < 0) radioIndex = totalRadioStations - 1;
+ currentRadioStation = radioStations[radioIndex];
+ break;
+ }
+ }
+ currentRadioStation = radioStations[radioIndex];
+ connection.play(`${currentRadioStation.url}`, { seek: 0, volume: 1 });
+ const nowPlayingMessage = new MessageEmbed()
+ .setTitle("Now Playing")
+ .setDescription(currentRadioStation.name)
+ .setColor('LUMINOUS_VIVID_PINK');
+ textChannel.send(nowPlayingMessage)
+ } catch (error) {
+ console.log(error);
+ };
+};
+
+module.exports = {
+ async execute(client, message, args) {
+ const { RADIO_CHANNEL, NOW_PLAYING_CHANNEL } = process.env;
+ if (!RADIO_CHANNEL) return message.reply(`Please add RADIO_CHANNEL to .env with a Voice Channel ID`);
+ if (!NOW_PLAYING_CHANNEL) return message.reply(`Please add NOW_PLAYING_CHANNEL to .env with a Text Channel ID`);
+
+ const voiceChannel = await client.channels.fetch(process.env.RADIO_CHANNEL);
+ const nowPlayingChannel = await client.channels.fetch(process.env.NOW_PLAYING_CHANNEL);
+ if (!(voiceChannel instanceof VoiceChannel)) return message.reply(`Please provice a Voice Channel ID to the RADIO_CHANNEL`);
+ if (!(nowPlayingChannel instanceof TextChannel)) return message.reply(`Please provice a Text Channel ID to the NOW_PLAYING_CHANNEL`);
+
+ broadcastRadio(client, args, message, voiceChannel, nowPlayingChannel);
+ }
+} \ No newline at end of file
diff --git a/src/configs/commands.config.json b/src/configs/commands.config.json
index cdb7745..9ef5a75 100644
--- a/src/configs/commands.config.json
+++ b/src/configs/commands.config.json
@@ -9,6 +9,11 @@
"name": "radioStop",
"description": "Stop Radio",
"file": "./commands/radioStop.js"
+ },
+ {
+ "name": "tune",
+ "description": "FM Radio Tune IN",
+ "file": "./commands/tune.js"
}
]
} \ No newline at end of file
diff --git a/src/configs/radio.json b/src/configs/radio.json
new file mode 100644
index 0000000..2626cdc
--- /dev/null
+++ b/src/configs/radio.json
@@ -0,0 +1,32 @@
+[
+ {
+ "id": "ananthapuriFM",
+ "name": "Ananthapuri FM",
+ "url": "https://air.pc.cdn.bitgravity.com/air/live/pbaudio229/playlist.m3u8"
+ },
+ {
+ "id": "clubFM",
+ "name": "Club FM 99.6",
+ "url": "https://22243.live.streamtheworld.com/CLUBFMUAEAAC.aac"
+ },
+ {
+ "id": "nigthRide",
+ "name": "Nightride FM",
+ "url": "https://stream.nightride.fm/nightride.m4a"
+ },
+ {
+ "id": "recordSynthwave",
+ "name": "Record Synthwave",
+ "url": "http://air.radiorecord.ru:805/synth_320"
+ },
+ {
+ "id": "radioMango",
+ "name": "Radio Mango 91.9",
+ "url": "https://bcovlive-a.akamaihd.net/19b535b7499a4719a5c19e043063f5d9/ap-southeast-1/6034685947001/playlist.m3u8"
+ },
+ {
+ "id": "oneFM",
+ "name": "One FM 91.3 Singapore",
+ "url": "https://22253.live.streamtheworld.com/ONE_FM_913AAC.aac?dist=sphradio-web"
+ }
+] \ No newline at end of file