using NadekoBot.Db.Models; using System.Diagnostics.CodeAnalysis; namespace NadekoBot.Modules.Music.Services; public interface IMusicService { /// /// Leave voice channel in the specified guild if it's connected to one /// /// Id of the guild public Task LeaveVoiceChannelAsync(ulong guildId); /// /// Joins the voice channel with the specified id /// /// Id of the guild where the voice channel is /// Id of the voice channel public Task JoinVoiceChannelAsync(ulong guildId, ulong voiceChannelId); Task GetOrCreateMusicPlayerAsync(ITextChannel contextChannel); bool TryGetMusicPlayer(ulong guildId, [MaybeNullWhen(false)] out IMusicPlayer musicPlayer); Task EnqueueYoutubePlaylistAsync(IMusicPlayer mp, string playlistId, string queuer); Task EnqueueDirectoryAsync(IMusicPlayer mp, string dirPath, string queuer); Task SendToOutputAsync(ulong guildId, EmbedBuilder embed); Task PlayAsync(ulong guildId, ulong voiceChannelId); Task> SearchVideosAsync(string query); Task SetMusicChannelAsync(ulong guildId, ulong? channelId); Task SetRepeatAsync(ulong guildId, PlayerRepeatType repeatType); Task SetVolumeAsync(ulong guildId, int value); Task ToggleAutoDisconnectAsync(ulong guildId); Task GetMusicQualityAsync(ulong guildId); Task SetMusicQualityAsync(ulong guildId, QualityPreset preset); Task ToggleQueueAutoPlayAsync(ulong guildId); Task FairplayAsync(ulong guildId); Task RemoveLastQueuedTrackAsync(ulong guildId); }