mirror of
https://github.com/warengroup/eximiabots-radiox.git
synced 2024-12-22 23:53:17 +00:00
Removed createDiscordJSAdapter
This commit is contained in:
parent
ee13f11f71
commit
0b7da1937b
@ -4,7 +4,6 @@ const {
|
|||||||
getVoiceConnection,
|
getVoiceConnection,
|
||||||
joinVoiceChannel
|
joinVoiceChannel
|
||||||
} = require("@discordjs/voice");
|
} = require("@discordjs/voice");
|
||||||
const { createDiscordJSAdapter } = require("../utils/adapter");
|
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: "play",
|
name: "play",
|
||||||
@ -92,7 +91,7 @@ module.exports = {
|
|||||||
|
|
||||||
radio.station = station;
|
radio.station = station;
|
||||||
radio.textChannel = interaction.channel;
|
radio.textChannel = interaction.channel;
|
||||||
play(interaction, interaction.guild, client, url);
|
play(interaction, interaction.guild, client, url, Discord);
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -101,6 +100,7 @@ module.exports = {
|
|||||||
textChannel: interaction.channel,
|
textChannel: interaction.channel,
|
||||||
voiceChannel: voiceChannel,
|
voiceChannel: voiceChannel,
|
||||||
connection: null,
|
connection: null,
|
||||||
|
message: null,
|
||||||
audioPlayer: createAudioPlayer(),
|
audioPlayer: createAudioPlayer(),
|
||||||
station: station
|
station: station
|
||||||
};
|
};
|
||||||
@ -112,12 +112,12 @@ module.exports = {
|
|||||||
joinVoiceChannel({
|
joinVoiceChannel({
|
||||||
channelId: voiceChannel.id,
|
channelId: voiceChannel.id,
|
||||||
guildId: voiceChannel.guild.id,
|
guildId: voiceChannel.guild.id,
|
||||||
adapterCreator: createDiscordJSAdapter(voiceChannel)
|
adapterCreator: voiceChannel.guild.voiceAdapterCreator
|
||||||
});
|
});
|
||||||
construct.connection = connection;
|
construct.connection = connection;
|
||||||
let date = new Date();
|
let date = new Date();
|
||||||
construct.startTime = date.getTime();
|
construct.startTime = date.getTime();
|
||||||
play(interaction, interaction.guild, client, url);
|
play(interaction, interaction.guild, client, url, Discord);
|
||||||
|
|
||||||
client.datastore.checkEntry(interaction.guild.id);
|
client.datastore.checkEntry(interaction.guild.id);
|
||||||
construct.currentGuild = client.datastore.getEntry(interaction.guild.id);
|
construct.currentGuild = client.datastore.getEntry(interaction.guild.id);
|
||||||
@ -136,7 +136,7 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
function play(interaction, guild, client, url) {
|
async function play(interaction, guild, client, url, Discord) {
|
||||||
let message = {};
|
let message = {};
|
||||||
const radio = client.radio.get(guild.id);
|
const radio = client.radio.get(guild.id);
|
||||||
const resource = createAudioResource(url);
|
const resource = createAudioResource(url);
|
||||||
@ -163,8 +163,32 @@ function play(interaction, guild, client, url) {
|
|||||||
return interaction.reply(client.messages.errorPlaying);
|
return interaction.reply(client.messages.errorPlaying);
|
||||||
});
|
});
|
||||||
|
|
||||||
message.play = client.messages.play.replace("%radio.station.name%", radio.station.name);
|
message.nowplayingDescription = client.messages.nowplayingDescription.replace("%radio.station.name%", radio.station.name);
|
||||||
interaction.reply(client.messageEmojis["play"] + message.play);
|
message.nowplayingDescription = message.nowplayingDescription.replace("%radio.station.owner%", radio.station.owner);
|
||||||
|
message.nowplayingDescription = message.nowplayingDescription.replace("%client.funcs.msToTime(completed)%", "--:--");
|
||||||
|
|
||||||
|
const embed = new Discord.MessageEmbed()
|
||||||
|
.setTitle("RadioX")
|
||||||
|
.setThumbnail("https://cdn.discordapp.com/emojis/" + client.messageEmojis["play"].replace(/[^0-9]+/g, ''))
|
||||||
|
.setColor(client.config.embedColor)
|
||||||
|
.setDescription(message.nowplayingDescription)
|
||||||
|
.setFooter(client.messages.footerText, "https://cdn.discordapp.com/emojis/" + client.messageEmojis["eximiabots"].replace(/[^0-9]+/g, ''));
|
||||||
|
|
||||||
|
if(!radio.message){
|
||||||
|
radio.message = await radio.textChannel.send({ embeds: [embed] });
|
||||||
|
} else {
|
||||||
|
radio.message.edit({ embeds: [embed] });
|
||||||
|
}
|
||||||
|
|
||||||
|
setTimeout(function() {
|
||||||
|
message.play = client.messages.play.replace("%radio.station.name%", radio.station.name);
|
||||||
|
|
||||||
|
interaction.reply({
|
||||||
|
content: client.messageEmojis["play"] + message.play,
|
||||||
|
ephemeral: true
|
||||||
|
});
|
||||||
|
}, 1500)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function searchStation(key, client) {
|
function searchStation(key, client) {
|
||||||
|
@ -2,7 +2,6 @@ const {
|
|||||||
getVoiceConnection,
|
getVoiceConnection,
|
||||||
joinVoiceChannel
|
joinVoiceChannel
|
||||||
} = require("@discordjs/voice");
|
} = require("@discordjs/voice");
|
||||||
const { createDiscordJSAdapter } = require("../utils/adapter");
|
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
name: "voiceStateUpdate",
|
name: "voiceStateUpdate",
|
||||||
@ -30,7 +29,7 @@ module.exports = {
|
|||||||
radio.connection = joinVoiceChannel({
|
radio.connection = joinVoiceChannel({
|
||||||
channelId: oldState.channel.id,
|
channelId: oldState.channel.id,
|
||||||
guildId: oldState.channel.guild.id,
|
guildId: oldState.channel.guild.id,
|
||||||
adapterCreator: createDiscordJSAdapter(oldState.channel)
|
adapterCreator: oldState.channel.guild.voiceAdapterCreator
|
||||||
})
|
})
|
||||||
//radio.connection = await oldState.channel.join()
|
//radio.connection = await oldState.channel.join()
|
||||||
),
|
),
|
||||||
|
@ -1,70 +0,0 @@
|
|||||||
import { DiscordGatewayAdapterCreator, DiscordGatewayAdapterLibraryMethods } from '@discordjs/voice';
|
|
||||||
import { VoiceChannel, Snowflake, Client, Constants, WebSocketShard, Guild, StageChannel } from 'discord.js';
|
|
||||||
import { GatewayVoiceServerUpdateDispatchData, GatewayVoiceStateUpdateDispatchData } from 'discord-api-types/v9';
|
|
||||||
|
|
||||||
const adapters = new Map<Snowflake, DiscordGatewayAdapterLibraryMethods>();
|
|
||||||
const trackedClients = new Set<Client>();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Tracks a Discord.js client, listening to VOICE_SERVER_UPDATE and VOICE_STATE_UPDATE events.
|
|
||||||
* @param client - The Discord.js Client to track
|
|
||||||
*/
|
|
||||||
function trackClient(client: Client) {
|
|
||||||
if (trackedClients.has(client)) return;
|
|
||||||
trackedClients.add(client);
|
|
||||||
client.ws.on(Constants.WSEvents.VOICE_SERVER_UPDATE, (payload: GatewayVoiceServerUpdateDispatchData) => {
|
|
||||||
adapters.get(payload.guild_id)?.onVoiceServerUpdate(payload);
|
|
||||||
});
|
|
||||||
client.ws.on(Constants.WSEvents.VOICE_STATE_UPDATE, (payload: GatewayVoiceStateUpdateDispatchData) => {
|
|
||||||
if (payload.guild_id && payload.session_id && payload.user_id === client.user?.id) {
|
|
||||||
adapters.get(payload.guild_id)?.onVoiceStateUpdate(payload);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
const trackedGuilds = new Map<WebSocketShard, Set<Snowflake>>();
|
|
||||||
|
|
||||||
function cleanupGuilds(shard: WebSocketShard) {
|
|
||||||
const guilds = trackedGuilds.get(shard);
|
|
||||||
if (guilds) {
|
|
||||||
for (const guildID of guilds.values()) {
|
|
||||||
adapters.get(guildID)?.destroy();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function trackGuild(guild: Guild) {
|
|
||||||
let guilds = trackedGuilds.get(guild.shard);
|
|
||||||
if (!guilds) {
|
|
||||||
const cleanup = () => cleanupGuilds(guild.shard);
|
|
||||||
guild.shard.on('close', cleanup);
|
|
||||||
guild.shard.on('destroyed', cleanup);
|
|
||||||
guilds = new Set();
|
|
||||||
trackedGuilds.set(guild.shard, guilds);
|
|
||||||
}
|
|
||||||
guilds.add(guild.id);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates an adapter for a Voice Channel
|
|
||||||
* @param channel - The channel to create the adapter for
|
|
||||||
*/
|
|
||||||
export function createDiscordJSAdapter(channel: VoiceChannel | StageChannel): DiscordGatewayAdapterCreator {
|
|
||||||
return (methods) => {
|
|
||||||
adapters.set(channel.guild.id, methods);
|
|
||||||
trackClient(channel.client);
|
|
||||||
trackGuild(channel.guild);
|
|
||||||
return {
|
|
||||||
sendPayload(data) {
|
|
||||||
if (channel.guild.shard.status === Constants.Status.READY) {
|
|
||||||
channel.guild.shard.send(data);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
},
|
|
||||||
destroy() {
|
|
||||||
return adapters.delete(channel.guild.id);
|
|
||||||
},
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user