diff options
author | TheArcaneBrony <myrainbowdash949@gmail.com> | 2023-09-04 02:17:10 +0200 |
---|---|---|
committer | TheArcaneBrony <myrainbowdash949@gmail.com> | 2023-09-04 02:17:10 +0200 |
commit | 21da6cde79ccd0cb7f895a29e3d8cab959ef11ba (patch) | |
tree | fb0b89566b64ae907d7ca3ea8a29adcf0c0361d0 /LibMatrix.ExampleBot/Bot | |
parent | Clean up some extension functions (diff) | |
download | LibMatrix-21da6cde79ccd0cb7f895a29e3d8cab959ef11ba.tar.xz |
Too many changes to name...
Diffstat (limited to 'LibMatrix.ExampleBot/Bot')
-rw-r--r-- | LibMatrix.ExampleBot/Bot/FileStorageProvider.cs | 1 | ||||
-rw-r--r-- | LibMatrix.ExampleBot/Bot/MRUBot.cs | 4 | ||||
-rw-r--r-- | LibMatrix.ExampleBot/Bot/StartupTasks/ServerRoomSizeCalulator.cs | 72 |
3 files changed, 76 insertions, 1 deletions
diff --git a/LibMatrix.ExampleBot/Bot/FileStorageProvider.cs b/LibMatrix.ExampleBot/Bot/FileStorageProvider.cs index 1e84ab7..2dfcee5 100644 --- a/LibMatrix.ExampleBot/Bot/FileStorageProvider.cs +++ b/LibMatrix.ExampleBot/Bot/FileStorageProvider.cs @@ -1,4 +1,5 @@ using System.Text.Json; +using ArcaneLibs.Extensions; using LibMatrix.Extensions; using LibMatrix.Interfaces.Services; using Microsoft.Extensions.Logging; diff --git a/LibMatrix.ExampleBot/Bot/MRUBot.cs b/LibMatrix.ExampleBot/Bot/MRUBot.cs index cdeefe2..4f9b173 100644 --- a/LibMatrix.ExampleBot/Bot/MRUBot.cs +++ b/LibMatrix.ExampleBot/Bot/MRUBot.cs @@ -1,6 +1,8 @@ using System.Diagnostics.CodeAnalysis; +using ArcaneLibs.Extensions; using LibMatrix.ExampleBot.Bot.Interfaces; using LibMatrix.Extensions; +using LibMatrix.Homeservers; using LibMatrix.Services; using LibMatrix.StateEventTypes.Spec; using Microsoft.Extensions.DependencyInjection; @@ -31,7 +33,7 @@ public class MRUBot : IHostedService { [SuppressMessage("ReSharper", "FunctionNeverReturns")] public async Task StartAsync(CancellationToken cancellationToken) { Directory.GetFiles("bot_data/cache").ToList().ForEach(File.Delete); - AuthenticatedHomeServer hs; + AuthenticatedHomeserverGeneric hs; try { hs = await _homeserverProviderService.GetAuthenticatedWithToken(_configuration.Homeserver, _configuration.AccessToken); diff --git a/LibMatrix.ExampleBot/Bot/StartupTasks/ServerRoomSizeCalulator.cs b/LibMatrix.ExampleBot/Bot/StartupTasks/ServerRoomSizeCalulator.cs new file mode 100644 index 0000000..4785192 --- /dev/null +++ b/LibMatrix.ExampleBot/Bot/StartupTasks/ServerRoomSizeCalulator.cs @@ -0,0 +1,72 @@ +using System.Diagnostics.CodeAnalysis; +using ArcaneLibs.Extensions; +using LibMatrix.ExampleBot.Bot.Interfaces; +using LibMatrix.Homeservers; +using LibMatrix.Services; +using LibMatrix.StateEventTypes.Spec; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.Hosting; +using Microsoft.Extensions.Logging; + +namespace LibMatrix.ExampleBot.Bot.StartupTasks; + +public class ServerRoomSizeCalulator : IHostedService { + private readonly HomeserverProviderService _homeserverProviderService; + private readonly ILogger<ServerRoomSizeCalulator> _logger; + private readonly MRUBotConfiguration _configuration; + private readonly IEnumerable<ICommand> _commands; + + public ServerRoomSizeCalulator(HomeserverProviderService homeserverProviderService, ILogger<ServerRoomSizeCalulator> logger, + MRUBotConfiguration configuration, IServiceProvider services) { + logger.LogInformation("Server room size calculator hosted service instantiated!"); + _homeserverProviderService = homeserverProviderService; + _logger = logger; + _configuration = configuration; + } + + /// <summary>Triggered when the application host is ready to start the service.</summary> + /// <param name="cancellationToken">Indicates that the start process has been aborted.</param> + [SuppressMessage("ReSharper", "FunctionNeverReturns")] + public async Task StartAsync(CancellationToken cancellationToken) { + Directory.GetFiles("bot_data/cache").ToList().ForEach(File.Delete); + AuthenticatedHomeserverGeneric hs; + try { + hs = await _homeserverProviderService.GetAuthenticatedWithToken(_configuration.Homeserver, + _configuration.AccessToken); + } + catch (Exception e) { + _logger.LogError("{}", e.Message); + throw; + } + + await (await hs.GetRoom("!DoHEdFablOLjddKWIp:rory.gay")).JoinAsync(); + + Dictionary<string, int> totalRoomSize = new(); + foreach (var room in await hs.GetJoinedRooms()) { + var stateList = room.GetFullStateAsync().ToBlockingEnumerable().ToList(); + var roomSize = stateList.Count; + if (roomSize > 10000) { + await File.AppendAllLinesAsync("large_rooms.txt", new[] { $"{{ \"{room.RoomId}\", {roomSize} }}," }, cancellationToken); + } + + var roomHs = room.RoomId.Split(":")[1]; + if (totalRoomSize.ContainsKey(roomHs)) { + totalRoomSize[roomHs] += roomSize; + } + else { + totalRoomSize.Add(roomHs, roomSize); + } + + _logger.LogInformation($"Got room state for {room.RoomId}!"); + } + + await File.WriteAllTextAsync("server_size.txt", string.Join('\n', totalRoomSize.Select(x => $"{{ \"{x.Key}\", {x.Value} }},")), cancellationToken); + } + + /// <summary>Triggered when the application host is performing a graceful shutdown.</summary> + /// <param name="cancellationToken">Indicates that the shutdown process should no longer be graceful.</param> + public Task StopAsync(CancellationToken cancellationToken) { + _logger.LogInformation("Shutting down bot!"); + return Task.CompletedTask; + } +} |