-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBot.cs
More file actions
66 lines (58 loc) · 2.16 KB
/
Bot.cs
File metadata and controls
66 lines (58 loc) · 2.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using TranscriberBot.Data.Models;
using TranscriberBot.Data.Handler;
using TranscriberBot.Commands.SlashCommands;
using NetCord.Gateway;
using NetCord;
using NetCord.Services.ApplicationCommands;
using NetCord.Rest;
using NetCord.Services;
namespace TranscriberBot
{
public static class Bot
{
public static Config? botConfig { get; private set; }
public static VoiceModuleConfig? voiceModuleConfig { get; private set; }
public static async Task InitializeAsync(Config config, VoiceModuleConfig voiceConfig)
{
botConfig = config;
voiceModuleConfig = voiceConfig;
GatewayClientConfiguration gatewayClientConfig = new GatewayClientConfiguration()
{
Intents = default
};
GatewayClient client = new(new BotToken(botConfig.BotToken), gatewayClientConfig);
ApplicationCommandService<ApplicationCommandContext> applicationCommandService = new();
applicationCommandService.AddModules(typeof(Program).Assembly);
client.InteractionCreate += async interaction =>
{
if (interaction is not ApplicationCommandInteraction applicationCommandInteraction)
return;
var result = await applicationCommandService.ExecuteAsync(new ApplicationCommandContext(applicationCommandInteraction, client));
if (result is not IFailResult failResult)
return;
try
{
await interaction.SendResponseAsync(InteractionCallback.Message(failResult.Message));
}
catch
{
}
};
await applicationCommandService.CreateCommandsAsync(client.Rest, client.Id);
client.Log += message =>
{
Console.WriteLine(message);
return default;
};
await client.StartAsync();
await Task.Delay(-1);
}
}
}