Added .coordreload which will reload coord.yml when using NadekoBot.Coordinator

- bots with more than 1 shard will now use redis strings provider
This commit is contained in:
Kwoth
2021-12-01 09:41:23 +01:00
parent 1e6d0806d7
commit 219ca39cd1
8 changed files with 37 additions and 7 deletions

View File

@@ -105,7 +105,7 @@ namespace NadekoBot
.AddSingleton<ISeria, JsonSeria>() .AddSingleton<ISeria, JsonSeria>()
.AddSingleton<IPubSub, RedisPubSub>() .AddSingleton<IPubSub, RedisPubSub>()
.AddSingleton<IConfigSeria, YamlSeria>() .AddSingleton<IConfigSeria, YamlSeria>()
.AddBotStringsServices() .AddBotStringsServices(_creds.TotalShards)
.AddConfigServices() .AddConfigServices()
.AddConfigMigrators() .AddConfigMigrators()
.AddMemoryCache() .AddMemoryCache()

View File

@@ -14,11 +14,15 @@ namespace NadekoBot.Extensions
{ {
public static class ServiceCollectionExtensions public static class ServiceCollectionExtensions
{ {
public static IServiceCollection AddBotStringsServices(this IServiceCollection services) public static IServiceCollection AddBotStringsServices(this IServiceCollection services, int totalShards)
=> services => totalShards <= 1
.AddSingleton<IStringsSource, LocalFileStringsSource>() ? services
.AddSingleton<IBotStringsProvider, LocalBotStringsProvider>() .AddSingleton<IStringsSource, LocalFileStringsSource>()
.AddSingleton<IBotStrings, BotStrings>(); .AddSingleton<IBotStringsProvider, LocalBotStringsProvider>()
.AddSingleton<IBotStrings, BotStrings>()
: services.AddSingleton<IStringsSource, LocalFileStringsSource>()
.AddSingleton<IBotStringsProvider, RedisBotStringsProvider>()
.AddSingleton<IBotStrings, BotStrings>();
public static IServiceCollection AddConfigServices(this IServiceCollection services) public static IServiceCollection AddConfigServices(this IServiceCollection services)
{ {

View File

@@ -506,6 +506,14 @@ namespace NadekoBot.Modules.Administration
_strings.Reload(); _strings.Reload();
await ReplyConfirmLocalizedAsync(strs.bot_strings_reloaded).ConfigureAwait(false); await ReplyConfirmLocalizedAsync(strs.bot_strings_reloaded).ConfigureAwait(false);
} }
[NadekoCommand, Aliases]
[OwnerOnly]
public async Task CoordReload()
{
await _coord.Reload();
await ctx.OkAsync();
}
private static UserStatus SettableUserStatusToUserStatus(SettableUserStatus sus) private static UserStatus SettableUserStatusToUserStatus(SettableUserStatus sus)
{ {

View File

@@ -1,5 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading.Tasks;
namespace NadekoBot.Services namespace NadekoBot.Services
{ {
@@ -10,6 +11,7 @@ namespace NadekoBot.Services
bool RestartShard(int shardId); bool RestartShard(int shardId);
IList<ShardStatus> GetAllShardStatuses(); IList<ShardStatus> GetAllShardStatuses();
int GetGuildCount(); int GetGuildCount();
Task Reload();
} }
public class ShardStatus public class ShardStatus

View File

@@ -79,6 +79,11 @@ namespace NadekoBot.Services
return res.Statuses.Sum(x => x.GuildCount); return res.Statuses.Sum(x => x.GuildCount);
} }
public async Task Reload()
{
await _coordClient.ReloadAsync(new());
}
public Task OnReadyAsync() public Task OnReadyAsync()
{ {
Task.Run(async () => Task.Run(async () =>

View File

@@ -64,5 +64,10 @@ namespace NadekoBot.Services
{ {
return _client.Guilds.Count; return _client.Guilds.Count;
} }
public Task Reload()
{
return Task.CompletedTask;
}
} }
} }

View File

@@ -1263,3 +1263,5 @@ imageonlychannel:
- imageonlychannel - imageonlychannel
- imageonly - imageonly
- imagesonly - imagesonly
coordreload:
- coordreload

View File

@@ -2138,4 +2138,8 @@ imageonlychannel:
Toggles whether the channel only allows images. Toggles whether the channel only allows images.
Users who send more than a few non-image messages will be banned from using the channel. Users who send more than a few non-image messages will be banned from using the channel.
args: args:
- "" - ""
coordreload:
desc: "Reloads coordinator config"
args:
- ""