mirror of
https://github.com/warengroup/eximiabots-radiox.git
synced 2024-12-24 17:23:17 +00:00
62 lines
2.2 KiB
JavaScript
62 lines
2.2 KiB
JavaScript
|
import Discord from "discord.js";
|
||
|
const {
|
||
|
createAudioPlayer,
|
||
|
getVoiceConnection,
|
||
|
joinVoiceChannel
|
||
|
} = require("@discordjs/voice");
|
||
|
|
||
|
module.exports = async function restoreRadios(client, guilds) {
|
||
|
if(!client.stations) return;
|
||
|
|
||
|
guilds.forEach(async guild => {
|
||
|
let state = client.funcs.loadState(client, guild);
|
||
|
if(!state) return;
|
||
|
if(!state.station || !state.channels.voice || !state.channels.text) return;
|
||
|
let voiceChannel = client.channels.cache.get(state.channels.voice);
|
||
|
if(!voiceChannel) return;
|
||
|
if(voiceChannel.members.size === 0) return;
|
||
|
|
||
|
|
||
|
const sstation = await client.funcs.searchStation(state.station.name, client);
|
||
|
let url = sstation.stream[sstation.stream.default];
|
||
|
let station = sstation;
|
||
|
|
||
|
const construct = {
|
||
|
textChannel: client.channels.cache.get(state.channels.text),
|
||
|
voiceChannel: client.channels.cache.get(state.channels.voice),
|
||
|
connection: null,
|
||
|
message: null,
|
||
|
audioPlayer: createAudioPlayer(),
|
||
|
station: station
|
||
|
};
|
||
|
client.radio.set(guild.id, construct);
|
||
|
|
||
|
try {
|
||
|
const connection =
|
||
|
getVoiceConnection(guild.id) ??
|
||
|
joinVoiceChannel({
|
||
|
channelId: voiceChannel.id,
|
||
|
guildId: voiceChannel.guild.id,
|
||
|
adapterCreator: voiceChannel.guild.voiceAdapterCreator
|
||
|
});
|
||
|
|
||
|
construct.connection = connection;
|
||
|
let date = new Date();
|
||
|
construct.startTime = date.getTime();
|
||
|
|
||
|
client.funcs.play(null, guild, client, url, Discord);
|
||
|
|
||
|
client.datastore.checkEntry(guild.id);
|
||
|
construct.datastore = client.datastore.getEntry(guild.id);
|
||
|
|
||
|
if (!construct.datastore.statistics[construct.station.name]) {
|
||
|
construct.datastore.statistics[construct.station.name] = {};
|
||
|
construct.datastore.statistics[construct.station.name].time = 0;
|
||
|
construct.datastore.statistics[construct.station.name].used = 0;
|
||
|
client.datastore.updateEntry(guild, construct.datastore);
|
||
|
}
|
||
|
} catch (error) {
|
||
|
console.log(error);
|
||
|
}
|
||
|
});
|
||
|
}
|