Add RadioPlay playlist support

This commit is contained in:
Christer Warén
2023-11-28 22:54:22 +02:00
parent c21082c67b
commit 2a7dca38f2
6 changed files with 114 additions and 55 deletions

View File

@@ -1,10 +1,13 @@
import { ButtonInteraction, ChatInputCommandInteraction, EmbedBuilder, StringSelectMenuInteraction } from "discord.js";
import { ApplicationCommandOptionType, ButtonInteraction, ChatInputCommandInteraction, EmbedBuilder, StringSelectMenuInteraction } from "discord.js";
import RadioClient from "../../Client";
import { station } from "../classes/Stations";
export default {
name: 'list',
description: 'List radio stations',
description: 'List stations',
options: [
{ type: ApplicationCommandOptionType.String, name: "query", description: "Select list", choices: [{"name": "1", "value": "1"},{"name": "2", "value": "2"}], required: false}
],
category: 'radio',
execute(interaction: ButtonInteraction | ChatInputCommandInteraction | StringSelectMenuInteraction, client: RadioClient) {
@@ -15,6 +18,20 @@ export default {
});
}
if(!interaction.guild) return;
let query: string | null = null;
if(interaction.isChatInputCommand()){
query = interaction.options?.getString("query");
}
if(interaction.isStringSelectMenu()){
query = interaction.values?.[0];
}
if(!query) query = "1";
if(!client.stations) {
return interaction.reply({
content: client.messages.emojis["error"] + client.messages.replace(client.messages.errorToGetPlaylist, {
@@ -24,10 +41,10 @@ export default {
});
}
const radio = client.radio?.get(interaction.guild?.id);
const radio = client.radio?.get(interaction.guild.id);
if(radio && !client.config.maintenanceMode){
client.funcs.listStations(client, interaction);
client.funcs.listStations(client, interaction, query);
} else {
let stations = `${client.stations.map((s: station) => `**#** ${s.name}`).join('\n')}`
const hashs = stations.split('**#**').length;

View File

@@ -183,7 +183,7 @@ export default {
client.user?.setStatus('idle');
client.radio?.save(client);
setInterval(() => {
let timer : NodeJS.Timeout = setInterval(() => {
if(client.radio?.size == 0 && client.config.streamerMode == "manual" && client.config.maintenanceMode){
client.streamer?.leave(client);
client.streamer = new Streamer();
@@ -195,9 +195,9 @@ export default {
}
if(!client.config.maintenanceMode){
clearInterval(undefined);
clearInterval(timer);
}
}, 500);
}, 1000);
break;
case "11":
@@ -207,7 +207,7 @@ export default {
client.user?.setStatus('idle');
client.radio?.save(client);
setInterval(() => {
let timer2 : NodeJS.Timeout = setInterval(() => {
if(client.radio?.size == 0 && client.config.streamerMode == "auto" && client.config.maintenanceMode){
client.streamer?.leave(client);
client.streamer = new Streamer();
@@ -219,9 +219,9 @@ export default {
}
if(!client.config.maintenanceMode){
clearInterval(undefined);
clearInterval(timer2);
}
}, 500);
}, 1000);
break;
default:

View File

@@ -13,6 +13,8 @@ export default {
category: "radio",
async execute(interaction: ChatInputCommandInteraction | StringSelectMenuInteraction, client: RadioClient) {
if(!interaction.guild) return;
if(client.config.maintenanceMode){
return interaction.reply({
content: client.messages.emojis["error"] + client.messages.maintenance,
@@ -40,10 +42,10 @@ export default {
}
if(!query){
return client.funcs.listStations(client, interaction);
return client.funcs.listStations(client, interaction, "1");
}
const radio = client.radio?.get(interaction.guild?.id);
const radio = client.radio?.get(interaction.guild.id);
if(!(interaction.member instanceof GuildMember)) return;
const voiceChannel = interaction.member?.voice.channel;