|
- using Discord;
- using Discord.Interactions;
- using Discord.WebSocket;
- using System;
- using System.Threading.Tasks;
-
- namespace InteractionFramework.Modules
- {
- public enum Hobby
- {
- Gaming,
-
- Art,
-
- Reading
- }
-
- // A transient module for executing commands. This module will NOT keep any information after the command is executed.
- class SlashCommandModule : InteractionModuleBase<SocketInteractionContext<SocketSlashCommand>>
- {
- // Will be called before execution. Here you can populate several entities you may want to retrieve before executing a command.
- // I.E. database objects
- public override void BeforeExecute(ICommandInfo command)
- {
- // Anything
- throw new NotImplementedException();
- }
-
- // Will be called after execution
- public override void AfterExecute(ICommandInfo command)
- {
- // Anything
- throw new NotImplementedException();
- }
-
- [SlashCommand("ping", "Pings the bot and returns its latency.")]
- public async Task GreetUserAsync()
- => await RespondAsync(text: $":ping_pong: It took me {Context.Client.Latency}ms to respond to you!", ephemeral: true);
-
- [SlashCommand("hobby", "Choose your hobby from the list!")]
- public async Task ChooseAsync(Hobby hobby)
- => await RespondAsync(text: $":thumbsup: Your hobby is: {hobby}.");
-
- [SlashCommand("bitrate", "Gets the bitrate of a specific voice channel.")]
- public async Task GetBitrateAsync([ChannelTypes(ChannelType.Voice, ChannelType.Stage)] IChannel channel)
- {
- var voiceChannel = channel as IVoiceChannel;
- await RespondAsync(text: $"This voice channel has a bitrate of {voiceChannel.Bitrate}");
- }
- }
- }
|