Adding Entity guides, flowcharts, better sample system. (#2054)
* initial * Interaction glossary entry * Sharded Interaction sample * Renames into solution * Debugging samples * Modify target location for webhookclient * Finalizing docs work, resolving docfx errors. * Adding threaduser to user chart * Add branch info to readme. * Edits to user chart * Resolve format for glossary entries * Patch sln target * Issue with file naming fixed * Patch 1/x for builds * Appending suggestions
This commit is contained in:
57
samples/ShardedClient/Services/InteractionHandlingService.cs
Normal file
57
samples/ShardedClient/Services/InteractionHandlingService.cs
Normal file
@@ -0,0 +1,57 @@
|
||||
using Discord;
|
||||
using Discord.Interactions;
|
||||
using Discord.WebSocket;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ShardedClient.Services
|
||||
{
|
||||
public class InteractionHandlingService
|
||||
{
|
||||
private readonly InteractionService _service;
|
||||
private readonly DiscordShardedClient _client;
|
||||
private readonly IServiceProvider _provider;
|
||||
|
||||
public InteractionHandlingService(IServiceProvider services)
|
||||
{
|
||||
_service = services.GetRequiredService<InteractionService>();
|
||||
_client = services.GetRequiredService<DiscordShardedClient>();
|
||||
_provider = services;
|
||||
|
||||
_service.Log += LogAsync;
|
||||
_client.InteractionCreated += OnInteractionAsync;
|
||||
// For examples on how to handle post execution,
|
||||
// see the InteractionFramework samples.
|
||||
}
|
||||
|
||||
// Register all modules, and add the commands from these modules to either guild or globally depending on the build state.
|
||||
public async Task InitializeAsync()
|
||||
{
|
||||
await _service.AddModulesAsync(typeof(InteractionHandlingService).Assembly, _provider);
|
||||
#if DEBUG
|
||||
await _service.AddCommandsToGuildAsync(_client.Guilds.First(x => x.Id == 1));
|
||||
#else
|
||||
await _service.AddCommandsGloballyAsync();
|
||||
#endif
|
||||
}
|
||||
|
||||
private async Task OnInteractionAsync(SocketInteraction interaction)
|
||||
{
|
||||
_ = Task.Run(async () =>
|
||||
{
|
||||
var context = new ShardedInteractionContext(_client, interaction);
|
||||
await _service.ExecuteCommandAsync(context, _provider);
|
||||
});
|
||||
await Task.CompletedTask;
|
||||
}
|
||||
|
||||
private Task LogAsync(LogMessage log)
|
||||
{
|
||||
Console.WriteLine(log.ToString());
|
||||
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user