diff options
author | TheArcaneBrony <myrainbowdash949@gmail.com> | 2024-01-11 18:40:42 +0000 |
---|---|---|
committer | TheArcaneBrony <myrainbowdash949@gmail.com> | 2024-01-11 18:40:42 +0000 |
commit | a481bead16d904da8ad4d6de8d1a8ab006460b31 (patch) | |
tree | 247eda7886d12f667ba34060121f262494e51952 /Utilities/LibMatrix.DevTestBot/Bot/StartupTasks | |
parent | Cleanup, more message formatters, messagebuilder start (diff) | |
download | LibMatrix-a481bead16d904da8ad4d6de8d1a8ab006460b31.tar.xz |
Dev test bot
Diffstat (limited to 'Utilities/LibMatrix.DevTestBot/Bot/StartupTasks')
-rw-r--r-- | Utilities/LibMatrix.DevTestBot/Bot/StartupTasks/ServerRoomSizeCalulator.cs | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/Utilities/LibMatrix.DevTestBot/Bot/StartupTasks/ServerRoomSizeCalulator.cs b/Utilities/LibMatrix.DevTestBot/Bot/StartupTasks/ServerRoomSizeCalulator.cs new file mode 100644 index 0000000..0c04d27 --- /dev/null +++ b/Utilities/LibMatrix.DevTestBot/Bot/StartupTasks/ServerRoomSizeCalulator.cs @@ -0,0 +1,69 @@ +using System.Diagnostics.CodeAnalysis; +using LibMatrix.ExampleBot.Bot.Interfaces; +using LibMatrix.Homeservers; +using LibMatrix.Services; +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 DevTestBotConfiguration _configuration; + private readonly IEnumerable<ICommand> _commands; + + public ServerRoomSizeCalulator(HomeserverProviderService homeserverProviderService, ILogger<ServerRoomSizeCalulator> logger, + DevTestBotConfiguration 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 (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; + } +} |