-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProgram.cs
More file actions
86 lines (75 loc) · 3.58 KB
/
Program.cs
File metadata and controls
86 lines (75 loc) · 3.58 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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
namespace Azusa;
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 set up Minio
Setup.State.Process.Minio = new MinioClient()
.WithEndpoint(Setup.State.Process.Configuration.S3.Endpoint)
.WithCredentials(Setup.State.Process.Configuration.S3.AccessKey, Setup.State.Process.Configuration.S3.SecretKey)
.WithRegion(Setup.State.Process.Configuration.S3.Region)
.WithSSL()
.Build();
#endregion set up Minio
#region build Discord client
var clientBuilder = DiscordClientBuilder.CreateDefault(Setup.State.Process.Configuration.Token, DiscordIntents.All);
#if DEBUG
clientBuilder.SetLogLevel(LogLevel.Debug);
#else
clientBuilder.SetLogLevel(LogLevel.Information);
#endif
clientBuilder.ConfigureExtraFeatures(config =>
{
config.LogUnknownEvents = false;
config.LogUnknownAuditlogs = false;
});
clientBuilder.UseInteractivity(new InteractivityConfiguration
{
Timeout = TimeSpan.FromSeconds(300)
});
clientBuilder.ConfigureEventHandlers((builder) =>
{
builder.HandleMessageCreated(MessageEvents.HandleMessageCreatedEventAsync)
.HandleComponentInteractionCreated(InteractionEvents.HandleComponentInteractionCreatedEventAsync)
.HandleGuildMemberAdded(MemberEvents.HandleGuildMemberAddedEventAsync)
.HandleGuildMemberRemoved(MemberEvents.HandleGuildMemberRemovedEventAsync)
.HandleGuildMemberUpdated(MemberEvents.HandleGuildMemberUpdatedEventAsync);
});
clientBuilder.UseCommands((_, extension) =>
{
var commandTypes = Assembly.GetExecutingAssembly().GetTypes().Where(t =>
t.IsClass && t.Namespace is not null && t.Namespace.Contains("Azusa.Commands") &&
!t.IsNested && t != typeof(Commands.SelectCommands)).ToList();
extension.AddCommands(commandTypes, 799644062973427743);
extension.AddCommands(typeof(Commands.SelectCommands));
extension.CommandErrored += Errors.CommandErrors.HandleCommandErroredEventAsync;
extension.AddCheck<SecretContextCheck>();
TextCommandProcessor textCommandProcessor = new(new TextCommandConfiguration
{
#if DEBUG
PrefixResolver = new DefaultPrefixResolver(true, "azd").ResolvePrefixAsync
#else
PrefixResolver = new DefaultPrefixResolver(true, "a!", "azusa", "azu", "az").ResolvePrefixAsync
#endif
});
extension.AddProcessor(textCommandProcessor);
}, new CommandsConfiguration
{
UseDefaultCommandErrorHandler = false,
});
Setup.State.Discord.Client = clientBuilder.Build();
#endregion build Discord client
await Setup.State.Discord.Client.ConnectAsync();
Setup.Constants.HttpClient.DefaultRequestHeaders.UserAgent.ParseAdd("Azusa (contact https://floatingmilkshake.com)");
await Task.Run(async () => Tasks.CleanupTasks.ExecuteAsync());
await Task.Delay(Timeout.InfiniteTimeSpan);
}
}