Initial Commit
This commit is contained in:
commit
9b2f95aee4
108 changed files with 4815 additions and 0 deletions
80
Flux_System_Assistant/Services/InteractionHandlingService.cs
Normal file
80
Flux_System_Assistant/Services/InteractionHandlingService.cs
Normal file
|
@ -0,0 +1,80 @@
|
|||
using Discord;
|
||||
using Discord.Interactions;
|
||||
using Discord.WebSocket;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using System.Reflection;
|
||||
using Flux_System_Assistant.Utility;
|
||||
using ILogger = Serilog.ILogger;
|
||||
|
||||
namespace Flux_System_Assistant.Services
|
||||
{
|
||||
public class InteractionHandlingService : IHostedService
|
||||
{
|
||||
private readonly DiscordSocketClient _discord;
|
||||
private readonly InteractionService _interactions;
|
||||
private readonly IServiceProvider _services;
|
||||
private readonly IConfiguration _config;
|
||||
private readonly ILogger _logger;
|
||||
|
||||
public InteractionHandlingService(
|
||||
DiscordSocketClient discord,
|
||||
InteractionService interactions,
|
||||
IServiceProvider services,
|
||||
IConfiguration config,
|
||||
ILogger logger)
|
||||
{
|
||||
_discord = discord;
|
||||
_interactions = interactions;
|
||||
_services = services;
|
||||
_config = config;
|
||||
_logger = logger;
|
||||
|
||||
_interactions.Log += msg => LoggerService.OnLogAsync(logger, msg);
|
||||
}
|
||||
|
||||
public async Task StartAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
_discord.Ready += () => _interactions.RegisterCommandsGloballyAsync(true);
|
||||
_discord.InteractionCreated += OnInteractionAsync;
|
||||
|
||||
await _interactions.AddModulesAsync(Assembly.GetEntryAssembly(), _services);
|
||||
}
|
||||
|
||||
public Task StopAsync(CancellationToken cancellationToken)
|
||||
{
|
||||
_interactions.Dispose();
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
|
||||
private async Task OnInteractionAsync(SocketInteraction interaction)
|
||||
{
|
||||
try
|
||||
{
|
||||
var context = new SocketInteractionContext(_discord, interaction);
|
||||
|
||||
if (context.User is SocketGuildUser user && user.Roles.Select(x => x.Name).Any(x => x == "GM's" || x == "Flux Stellar Corporation"))
|
||||
{
|
||||
var result = await _interactions.ExecuteCommandAsync(context, _services);
|
||||
|
||||
if (!result.IsSuccess)
|
||||
await context.Channel.SendMessageAsync(result.ToString());
|
||||
}
|
||||
else
|
||||
{
|
||||
await interaction.RespondAsync(ephemeral: true,
|
||||
text: "This is currently a dev only bot. Please do not use it yet");
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
if (interaction.Type == InteractionType.ApplicationCommand)
|
||||
{
|
||||
await interaction.GetOriginalResponseAsync()
|
||||
.ContinueWith(msg => msg.Result.DeleteAsync());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue