diff options
Diffstat (limited to 'LibMatrix.ExampleBot')
-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 | ||||
-rw-r--r-- | LibMatrix.ExampleBot/LibMatrix.ExampleBot.csproj | 13 | ||||
-rw-r--r-- | LibMatrix.ExampleBot/Program.cs | 4 | ||||
-rw-r--r-- | LibMatrix.ExampleBot/large_rooms.txt | 4 | ||||
-rw-r--r-- | LibMatrix.ExampleBot/server_size.txt | 45 |
7 files changed, 136 insertions, 7 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; + } +} diff --git a/LibMatrix.ExampleBot/LibMatrix.ExampleBot.csproj b/LibMatrix.ExampleBot/LibMatrix.ExampleBot.csproj index 03a3f0b..3101842 100644 --- a/LibMatrix.ExampleBot/LibMatrix.ExampleBot.csproj +++ b/LibMatrix.ExampleBot/LibMatrix.ExampleBot.csproj @@ -8,15 +8,16 @@ <Nullable>enable</Nullable> <PublishAot>false</PublishAot> <InvariantGlobalization>true</InvariantGlobalization> - <PublishTrimmed>true</PublishTrimmed> - <PublishReadyToRun>true</PublishReadyToRun> - <PublishSingleFile>true</PublishSingleFile> - <PublishReadyToRunShowWarnings>true</PublishReadyToRunShowWarnings> - <PublishTrimmedShowLinkerSizeComparison>true</PublishTrimmedShowLinkerSizeComparison> - <PublishTrimmedShowLinkerSizeComparisonWarnings>true</PublishTrimmedShowLinkerSizeComparisonWarnings> +<!-- <PublishTrimmed>true</PublishTrimmed>--> +<!-- <PublishReadyToRun>true</PublishReadyToRun>--> +<!-- <PublishSingleFile>true</PublishSingleFile>--> +<!-- <PublishReadyToRunShowWarnings>true</PublishReadyToRunShowWarnings>--> +<!-- <PublishTrimmedShowLinkerSizeComparison>true</PublishTrimmedShowLinkerSizeComparison>--> +<!-- <PublishTrimmedShowLinkerSizeComparisonWarnings>true</PublishTrimmedShowLinkerSizeComparisonWarnings>--> </PropertyGroup> <ItemGroup> + <ProjectReference Include="..\..\ArcaneLibs\ArcaneLibs\ArcaneLibs.csproj" /> <ProjectReference Include="..\LibMatrix\LibMatrix.csproj" /> </ItemGroup> diff --git a/LibMatrix.ExampleBot/Program.cs b/LibMatrix.ExampleBot/Program.cs index 63610b4..0378ec9 100644 --- a/LibMatrix.ExampleBot/Program.cs +++ b/LibMatrix.ExampleBot/Program.cs @@ -1,7 +1,9 @@ // See https://aka.ms/new-console-template for more information +using ArcaneLibs; using LibMatrix.ExampleBot.Bot; using LibMatrix.ExampleBot.Bot.Interfaces; +using LibMatrix.ExampleBot.Bot.StartupTasks; using LibMatrix.Extensions; using LibMatrix.Services; using Microsoft.Extensions.DependencyInjection; @@ -22,6 +24,8 @@ var host = Host.CreateDefaultBuilder(args).ConfigureServices((_, services) => { Console.WriteLine($"Adding command {commandClass.Name}"); services.AddScoped(typeof(ICommand), commandClass); } + + services.AddHostedService<ServerRoomSizeCalulator>(); services.AddHostedService<MRUBot>(); }).UseConsoleLifetime().Build(); diff --git a/LibMatrix.ExampleBot/large_rooms.txt b/LibMatrix.ExampleBot/large_rooms.txt new file mode 100644 index 0000000..1d9341d --- /dev/null +++ b/LibMatrix.ExampleBot/large_rooms.txt @@ -0,0 +1,4 @@ +{ "!ehXvUhWNASUkSLvAGP:matrix.org", 21957 } +{ "!fRRqjOaQcUbKOfCjvc:anontier.nl", 19117 } +{ "!OGEhHVWSdvArJzumhm:matrix.org", 101457 } +{ "!YTvKGNlinIzlkMTVRl:matrix.org", 30164 } diff --git a/LibMatrix.ExampleBot/server_size.txt b/LibMatrix.ExampleBot/server_size.txt new file mode 100644 index 0000000..f275e42 --- /dev/null +++ b/LibMatrix.ExampleBot/server_size.txt @@ -0,0 +1,45 @@ +{ "thearcanebrony.net", 178 } +{ "feline.support", 2654 } +{ "waifuhunter.club", 3997 } +{ "rory.gay", 645 } +{ "the-apothecary.club", 7000 } +{ "fairydust.space", 176 } +{ "envs.net", 165 } +{ "anontier.nl", 44935 } +{ "nightshade.fun", 8 } +{ "matrix.org", 185873 } +{ "nerdsin.space", 2647 } +{ "no.lgbtqia.zone", 2084 } +{ "neko.dev", 2668 } +{ "jameskitt616.one", 390 } +{ "matrix.eclipse.org", 8 } +{ "catgirl.cloud", 16 } +{ "pikaviestin.fi", 368 } +{ "masfloss.net", 8 } +{ "pcg.life", 72 } +{ "grin.hu", 176 } +{ "possum.city", 16 } +{ "nixos.org", 8206 } +{ "tu-dresden.de", 9 } +{ "pixie.town", 817 } +{ "pixelthefox.net", 1478 } +{ "koneko.chat", 132 } +{ "arcticfoxes.net", 982 } +{ "hackint.org", 374 } +{ "tchncs.de", 19 } +{ "seirdy.one", 107 } +{ "fosscord.com", 9 } +{ "fachschaften.org", 1851 } +{ "nheko.im", 1884 } +{ "draupnir.midnightthoughts.space", 22 } +{ "privacyguides.org", 809 } +{ "vscape.tk", 124 } +{ "artemislena.eu", 599 } +{ "midov.pl", 2223 } +{ "e2e.zone", 8 } +{ "tastytea.de", 143 } +{ "matrix.nomagic.uk", 337 } +{ "gitter.im", 2586 } +{ "funklause.de", 113 } +{ "hyteck.de", 8 } +{ "alchemi.dev", 446 } \ No newline at end of file |