import { CacheType, ChatInputCommandInteraction, SlashCommandBuilder } from 'discord.js'; import { connectToChannelByInteraction } from '../util/helpers'; import { requestSong } from '../playback'; import { msg_downloading, msg_play, msg_searching } from '../messages'; import { search, spotifyToYouTube } from '../util/downloader'; const name = "play" function register() { return new SlashCommandBuilder() .setName(name) .setDescription('YT') .addStringOption((option) => option.setName("url") .setDescription("YT url/search") .setRequired(true)) } async function execute(interaction: ChatInputCommandInteraction) { try { await interaction.deferReply() await connectToChannelByInteraction(interaction) const input = interaction.options.getString("url")!; let url: string; if (input.startsWith("https://open.spotify.com/")) { await interaction.editReply(msg_searching(input)); url = await spotifyToYouTube(input) } else if (input.startsWith("http")) { url = input } else { await interaction.editReply(msg_searching(input)); url = await search(input) console.log(input, url) } await interaction.editReply(msg_downloading(url)); await requestSong(url, { user: interaction.user.username }) await interaction.editReply(msg_play()); } catch (error) { console.error(error); const message = error instanceof Error ? error.message : 'Coś poszło nie tak :/' await interaction.editReply(message); } } export default { name, register, execute }