mirror of
https://github.com/Myxelium/Lunaris2.0.git
synced 2026-04-11 23:29:38 +00:00
59 lines
1.8 KiB
C#
59 lines
1.8 KiB
C#
using Discord;
|
|
using Discord.WebSocket;
|
|
using Victoria.Node;
|
|
|
|
namespace Lunaris2.Handler.MusicPlayer;
|
|
|
|
public static class Extensions
|
|
{
|
|
public static SocketGuild GetGuild(this SocketSlashCommand message, DiscordSocketClient client)
|
|
{
|
|
if (message.GuildId == null)
|
|
{
|
|
throw new Exception("Guild ID is null!");
|
|
}
|
|
|
|
return client.GetGuild(message.GuildId.Value);
|
|
}
|
|
|
|
public static IVoiceState GetVoiceState(this SocketSlashCommand message)
|
|
{
|
|
var voiceState = message.User as IVoiceState;
|
|
|
|
if (voiceState?.VoiceChannel == null)
|
|
{
|
|
throw new Exception("You must be connected to a voice channel!");
|
|
}
|
|
|
|
return voiceState;
|
|
}
|
|
|
|
public static async Task RespondAsync(this SocketSlashCommand message, string content)
|
|
{
|
|
await message.RespondAsync(content, ephemeral: true);
|
|
}
|
|
|
|
public static async Task EnsureConnected(this LavaNode lavaNode)
|
|
{
|
|
if(!lavaNode.IsConnected)
|
|
await lavaNode.ConnectAsync();
|
|
}
|
|
|
|
public static async Task JoinVoiceChannel(this SocketSlashCommand context, LavaNode lavaNode)
|
|
{
|
|
try
|
|
{
|
|
var textChannel = context.Channel as ITextChannel;
|
|
await lavaNode.JoinAsync(context.GetVoiceState().VoiceChannel, textChannel);
|
|
await context.RespondAsync($"Joined {context.GetVoiceState().VoiceChannel.Name}!");
|
|
}
|
|
catch (Exception exception) {
|
|
Console.WriteLine(exception);
|
|
}
|
|
}
|
|
|
|
public static string GetOptionValueByName(this SocketSlashCommand command, string optionName)
|
|
{
|
|
return command.Data.Options.FirstOrDefault(option => option.Name == optionName)?.Value.ToString() ?? string.Empty;
|
|
}
|
|
} |