1
0
Fork 1
mirror of https://github.com/TeamOctolings/Octobot.git synced 2025-05-04 04:56:30 +03:00

Remora.Discord part 2 out of ∞

Signed-off-by: Octol1ttle <l1ttleofficial@outlook.com>
This commit is contained in:
Octol1ttle 2023-05-17 00:18:12 +05:00
parent 2e8392f5d7
commit d0ecfc7928
Signed by: Octol1ttle
GPG key ID: B77C34313AEE1FFF
8 changed files with 946 additions and 1158 deletions

View file

@ -1,13 +1,16 @@
using System.Reflection;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using Remora.Discord.API.Abstractions.Gateway.Commands;
using Remora.Discord.API.Abstractions.Objects;
using Remora.Discord.API.Objects;
using Remora.Discord.Caching.Extensions;
using Remora.Discord.Caching.Services;
using Remora.Discord.Gateway;
using Remora.Discord.Gateway.Extensions;
using Remora.Discord.Hosting.Extensions;
using Remora.Rest.Core;
namespace Boyfriend;
@ -15,7 +18,8 @@ public class Boyfriend {
public static ILogger<Boyfriend> Logger = null!;
public static IConfiguration GuildConfiguration = null!;
private static readonly Dictionary<string, string> ReflectionMessageCache = new();
public static readonly AllowedMentions NoMentions = new(
Array.Empty<MentionType>(), Array.Empty<Snowflake>(), Array.Empty<Snowflake>());
public static async Task Main(string[] args) {
var host = CreateHostBuilder(args).UseConsoleLifetime().Build();
@ -48,9 +52,17 @@ public class Boyfriend {
services.AddDiscordCaching();
services.Configure<CacheSettings>(
settings => { settings.SetAbsoluteExpiration<IMessage>(TimeSpan.FromDays(7)); });
settings => {
settings.SetDefaultAbsoluteExpiration(TimeSpan.FromHours(1));
settings.SetDefaultSlidingExpiration(TimeSpan.FromMinutes(30));
settings.SetAbsoluteExpiration<IMessage>(TimeSpan.FromDays(7));
settings.SetSlidingExpiration<IMessage>(TimeSpan.FromDays(7));
});
services.AddSingleton<IConfigurationBuilder, ConfigurationBuilder>();
services.AddTransient<IConfigurationBuilder, ConfigurationBuilder>();
services.Configure<DiscordGatewayClientOptions>(
options => options.Intents |= GatewayIntents.MessageContents);
}
).ConfigureLogging(
c => c.AddConsole()
@ -60,19 +72,6 @@ public class Boyfriend {
}
public static string GetLocalized(string key) {
var propertyName = key;
key = $"{Messages.Culture}/{key}";
if (ReflectionMessageCache.TryGetValue(key, out var cached)) return cached;
var toReturn =
typeof(Messages).GetProperty(propertyName, BindingFlags.NonPublic | BindingFlags.Static)?.GetValue(null)
?.ToString();
if (toReturn is null) {
Logger.LogError("Could not find localized property: {Name}", propertyName);
return key;
}
ReflectionMessageCache.Add(key, toReturn);
return toReturn;
return Messages.ResourceManager.GetString(key, Messages.Culture) ?? key;
}
}