#nullable enable using System.Collections.Generic; using System.Threading.Tasks; using Discord; using NadekoBot.Core.Common; using NadekoBot.Core.Modules.Music; using NadekoBot.Core.Services.Database.Models; namespace NadekoBot.Modules.Music.Services { public interface IMusicService : IPlaceholderProvider { /// /// 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, out IMusicPlayer musicPlayer); Task EnqueueYoutubePlaylistAsync(IMusicPlayer mp, string playlistId, string queuer); Task EnqueueDirectoryAsync(IMusicPlayer mp, string dirPath, string queuer); Task EnqueueSoundcloudPlaylistAsync(IMusicPlayer mp, string playlist, 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); } }