Skip to content

Commit 2a36749

Browse files
committed
feat: enhance official guild list management and reloading
- Rename the method `WriteOfficialListFile` to `WriteAndReloadOfficialListFile` - Add a private key for reloading the official guild list - Subscription to a Redis channel is added to reload the official guild list when triggered - Improve error handling for loading and writing the official guild list Signed-off-by: 孤之界 <f20001012@Gmail.com>
1 parent f291ac1 commit 2a36749

2 files changed

Lines changed: 17 additions & 3 deletions

File tree

Discord Stream Notify Bot/Command/Admin/AdministraitonService.cs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,24 @@
22
{
33
public class AdministrationService : ICommandService
44
{
5+
private string _reloadOfficialGuildListKey = "DiscordStreamBot:Admin:ReloadOfficialGuildList";
56
private readonly DiscordSocketClient _Client;
67

78
public AdministrationService(DiscordSocketClient client)
89
{
910
_Client = client;
11+
12+
Bot.RedisSub.Subscribe(new RedisChannel(_reloadOfficialGuildListKey, RedisChannel.PatternMode.Literal), (_, _) =>
13+
{
14+
try
15+
{
16+
Utility.OfficialGuildList = JsonConvert.DeserializeObject<HashSet<ulong>>(File.ReadAllText(Utility.GetDataFilePath("OfficialList.json")));
17+
}
18+
catch (Exception ex)
19+
{
20+
Log.Error(ex.Demystify(), "ReloadOfficialGuildList Error");
21+
}
22+
});
1023
}
1124

1225
public async Task ClearUser(ITextChannel textChannel)
@@ -17,11 +30,12 @@ public async Task ClearUser(ITextChannel textChannel)
1730
await Task.WhenAll(Task.Delay(1000), textChannel.DeleteMessagesAsync(msgs)).ConfigureAwait(false);
1831
}
1932

20-
internal bool WriteOfficialListFile()
33+
internal bool WriteAndReloadOfficialListFile()
2134
{
2235
try
2336
{
2437
File.WriteAllText(Utility.GetDataFilePath("OfficialList.json"), JsonConvert.SerializeObject(Utility.OfficialGuildList));
38+
Bot.RedisSub.Publish(new RedisChannel(_reloadOfficialGuildListKey, RedisChannel.PatternMode.Literal), "");
2539
}
2640
catch (Exception ex)
2741
{

Discord Stream Notify Bot/Command/Admin/Administration.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ public async Task AddOfficialListAsync(ulong guildId)
405405

406406
Utility.OfficialGuildList.Add(guildId);
407407

408-
if (_service.WriteOfficialListFile())
408+
if (_service.WriteAndReloadOfficialListFile())
409409
{
410410
await Context.Channel.SendConfirmAsync($"已添加 {guildId} 至官方伺服器名單內");
411411
}
@@ -430,7 +430,7 @@ public async Task RemoveOfficialListAsync(ulong guildId)
430430

431431
Utility.OfficialGuildList.Remove(guildId);
432432

433-
if (_service.WriteOfficialListFile())
433+
if (_service.WriteAndReloadOfficialListFile())
434434
{
435435
await Context.Channel.SendConfirmAsync($"已從官方伺服器名單內移除 {guildId}");
436436
}

0 commit comments

Comments
 (0)