30 lines
1.5 KiB
JavaScript
30 lines
1.5 KiB
JavaScript
const client = require("./client.js");
|
|
const logger = require("./logger.js");
|
|
|
|
module.exports = async (sound, message) => {
|
|
if (message.member.voiceState.channelID) {
|
|
if (!message.channel.guild.members.get(client.user.id).permission.has("voiceConnect") || !message.channel.permissionsOf(client.user.id).has("voiceConnect")) return client.createMessage(message.channel.id, `${message.author.mention}, I can't join this voice channel!`);
|
|
const voiceChannel = message.channel.guild.channels.get(message.member.voiceState.channelID);
|
|
if (!voiceChannel.permissionsOf(client.user.id).has("voiceConnect")) return client.createMessage(message.channel.id, `${message.author.mention}, I don't have permission to join this voice channel!`);
|
|
const connection = await voiceChannel.join({
|
|
opusOnly: true
|
|
});
|
|
if (connection.playing) return client.createMessage(message.channel.id, `${message.author.mention}, I'm already playing a sound!`);
|
|
const playingMessage = await client.createMessage(message.channel.id, "🔊 Playing sound...");
|
|
if (connection.playing) {
|
|
connection.stopPlaying();
|
|
}
|
|
connection.play(sound);
|
|
connection.on("error", (error) => {
|
|
voiceChannel.leave();
|
|
playingMessage.delete();
|
|
logger.error(error);
|
|
});
|
|
connection.once("end", () => {
|
|
voiceChannel.leave();
|
|
playingMessage.delete();
|
|
});
|
|
} else {
|
|
client.createMessage(message.channel.id, `${message.author.mention}, you need to be in a voice channel first!`);
|
|
}
|
|
};
|