-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProgram.cs
More file actions
55 lines (50 loc) · 2.11 KB
/
Program.cs
File metadata and controls
55 lines (50 loc) · 2.11 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
namespace Kyaru;
internal static class Program
{
internal static async Task Main()
{
#region read config.json
Setup.State.Process.Configuration = JsonConvert.DeserializeObject<Setup.Types.ConfigJson>(await File.ReadAllTextAsync("config.json"));
if (Setup.State.Process.Configuration is null)
{
Console.WriteLine("config.json is malformed. Please be sure it has all of the required values.");
Environment.Exit(1);
}
#endregion read config.json
#region build Discord client
var clientBuilder = DiscordClientBuilder.CreateDefault(Setup.State.Process.Configuration.Token, DiscordIntents.AllUnprivileged.AddIntent(DiscordIntents.MessageContents));
#if DEBUG
clientBuilder.SetLogLevel(LogLevel.Debug);
#else
clientBuilder.SetLogLevel(LogLevel.Information);
#endif
clientBuilder.ConfigureExtraFeatures(config =>
{
config.LogUnknownEvents = false;
config.LogUnknownAuditlogs = false;
});
clientBuilder.ConfigureEventHandlers(builder =>
{
builder.HandleGuildDownloadCompleted(Events.GuildEvents.HandleGuildDownloadCompletedEventAsync);
builder.HandleComponentInteractionCreated(Events.InteractionEvents.HandleComponentInteractionCreatedEventAsync);
});
clientBuilder.UseInteractivity(new InteractivityConfiguration
{
Timeout = TimeSpan.FromSeconds(300)
});
clientBuilder.UseCommands((_, extension) =>
{
var commandTypes = Assembly.GetExecutingAssembly().GetTypes().Where(t =>
t.IsClass && t.Namespace is not null && t.Namespace.Contains("Kyaru.Commands") &&
!t.IsNested).ToList();
extension.AddCommands(commandTypes);
}, new CommandsConfiguration
{
UseDefaultCommandErrorHandler = false,
});
Setup.State.Discord.Client = clientBuilder.Build();
#endregion build Discord client
await Setup.State.Discord.Client.ConnectAsync();
await Task.Delay(Timeout.InfiniteTimeSpan);
}
}