51 lines
1.5 KiB
TypeScript
51 lines
1.5 KiB
TypeScript
const { joinVoiceChannel, createAudioPlayer, createAudioResource } = require("@discordjs/voice");
|
|
const { join } = require("node:path");
|
|
|
|
import {startMethodOptions} from "../Utils/Options/StartMethodOptions";
|
|
|
|
export function startAudio({
|
|
VoiceChannelID,
|
|
GuildID,
|
|
VoiceAdapter,
|
|
ResourceType,
|
|
Resource
|
|
}: startMethodOptions) {
|
|
try {
|
|
const AudioPlayer = createAudioPlayer();
|
|
|
|
function streamFile(file: string) {
|
|
let audioResource = createAudioResource(join(__dirname, file), { inlineVolume: true });
|
|
AudioPlayer.play(audioResource);
|
|
|
|
joinVoiceChannel({
|
|
channelId: VoiceChannelID,
|
|
guildId: GuildID,
|
|
adapterCreator: VoiceAdapter
|
|
}).subscribe(AudioPlayer);
|
|
}
|
|
|
|
function streamLink(link: string) {
|
|
let audioResource = createAudioResource(link);
|
|
AudioPlayer.play(audioResource);
|
|
|
|
joinVoiceChannel({
|
|
channelId: VoiceChannelID,
|
|
guildId: GuildID,
|
|
adapterCreator: VoiceAdapter
|
|
}).subscribe(AudioPlayer)
|
|
}
|
|
|
|
switch (ResourceType) {
|
|
case "Link":
|
|
streamLink(Resource);
|
|
break;
|
|
case "File":
|
|
streamFile(Resource);
|
|
break;
|
|
default:
|
|
throw new TypeError("Audio type isn't valid.");
|
|
}
|
|
} catch (err) {
|
|
console.error(err);
|
|
}
|
|
} |