Added Discord Bot
This commit is contained in:
parent
e7a0c9ae68
commit
e445b2a181
48 changed files with 1255 additions and 157 deletions
82
DiscordBot/CommandHandler.cs
Normal file
82
DiscordBot/CommandHandler.cs
Normal file
|
@ -0,0 +1,82 @@
|
|||
using Discord;
|
||||
using Discord.Commands;
|
||||
using Discord.WebSocket;
|
||||
using System.Reflection;
|
||||
|
||||
namespace DiscordBot
|
||||
{
|
||||
public class CommandHandler
|
||||
{
|
||||
private readonly DiscordSocketClient _client;
|
||||
private readonly CommandService _commands;
|
||||
|
||||
// Retrieve client and CommandService instance via ctor
|
||||
public CommandHandler(DiscordSocketClient client, CommandService commands)
|
||||
{
|
||||
_commands = commands;
|
||||
_client = client;
|
||||
}
|
||||
|
||||
public async Task InstallCommandsAsync()
|
||||
{
|
||||
_client.SlashCommandExecuted += SlashCommandHandler;
|
||||
_client.ButtonExecuted += MyButtonHandler;
|
||||
}
|
||||
|
||||
private async Task SlashCommandHandler(SocketSlashCommand command)
|
||||
{
|
||||
switch (command.Data.Name)
|
||||
{
|
||||
case Constants.SlashCommands.FIRST_COMMAND:
|
||||
await HandleFirstCommand(command);
|
||||
break;
|
||||
}
|
||||
await command.RespondAsync($"You executed {command.Data.Name}");
|
||||
}
|
||||
|
||||
|
||||
private async Task HandleFirstCommand(SocketSlashCommand command)
|
||||
{
|
||||
// We need to extract the user parameter from the command. since we only have one option and it's required, we can just use the first option.
|
||||
var guildUser = (SocketGuildUser)command.Data.Options.First().Value;
|
||||
|
||||
// We remove the everyone role and select the mention of each role.
|
||||
var roleList = string.Join(",\n", guildUser.Roles.Where(x => !x.IsEveryone).Select(x => x.Mention));
|
||||
|
||||
var embedBuiler = new EmbedBuilder()
|
||||
.WithAuthor(guildUser.ToString(), guildUser.GetAvatarUrl() ?? guildUser.GetDefaultAvatarUrl())
|
||||
.WithTitle("Roles")
|
||||
.WithDescription(roleList)
|
||||
.WithColor(Color.Green)
|
||||
.WithCurrentTimestamp();
|
||||
|
||||
// Now, Let's respond with the embed.
|
||||
await command.RespondAsync(embed: embedBuiler.Build());
|
||||
}
|
||||
|
||||
public async Task MyButtonHandler(SocketMessageComponent component)
|
||||
{
|
||||
string[] ids = component.Data.CustomId.Split('-');
|
||||
switch(ids[0])
|
||||
{
|
||||
case Constants.ComponentIds.SIGN_UP:
|
||||
//await component.RespondAsync($"{component.User.Mention} has clicked the SignUp button!");
|
||||
|
||||
var mb = new ModalBuilder()
|
||||
.WithTitle("Fav Food")
|
||||
.WithCustomId("food_menu")
|
||||
.AddTextInput("What??", "food_name", placeholder:"Pizza")
|
||||
.AddTextInput("Why??", "food_reason", TextInputStyle.Paragraph,
|
||||
"Kus it's so tasty");
|
||||
|
||||
//await component.RespondWithModalAsync(mb.Build());
|
||||
|
||||
await component.RespondAsync("hi", ephemeral: true);
|
||||
break;
|
||||
case Constants.ComponentIds.SIGN_OFF:
|
||||
//await component.RespondAsync($"{component.User.Mention} has clicked the SignOff button!");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue