about summary refs log tree commit diff
path: root/Utilities/LibMatrix.DevTestBot/Bot/Commands/DbgAniRainbowTest.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Utilities/LibMatrix.DevTestBot/Bot/Commands/DbgAniRainbowTest.cs')
-rw-r--r--Utilities/LibMatrix.DevTestBot/Bot/Commands/DbgAniRainbowTest.cs53
1 files changed, 53 insertions, 0 deletions
diff --git a/Utilities/LibMatrix.DevTestBot/Bot/Commands/DbgAniRainbowTest.cs b/Utilities/LibMatrix.DevTestBot/Bot/Commands/DbgAniRainbowTest.cs
new file mode 100644
index 0000000..c526847
--- /dev/null
+++ b/Utilities/LibMatrix.DevTestBot/Bot/Commands/DbgAniRainbowTest.cs
@@ -0,0 +1,53 @@
+using System.Diagnostics;
+using LibMatrix.EventTypes.Spec;
+using LibMatrix.ExampleBot.Bot.Interfaces;
+using LibMatrix.Helpers;
+using LibMatrix.RoomTypes;
+using LibMatrix.Services;
+
+namespace ModerationBot.Commands;
+
+public class DbgAniRainbowTest(IServiceProvider services, HomeserverProviderService hsProvider, HomeserverResolverService hsResolver) : ICommand {
+    public string Name { get; } = "ani-rainbow";
+    public string Description { get; } = "[Debug] animated rainbow :)";
+
+    public async Task<bool> CanInvoke(CommandContext ctx) {
+        return ctx.Room.RoomId == "!hLEefBaYvNfJwcTjmt:rory.gay";
+    }
+
+    public async Task Invoke(CommandContext ctx) {
+        //255 long string
+        // var rainbow = "🟥🟧🟨🟩🟦🟪";
+        var rainbow = "M";
+        var chars = rainbow;
+        for (var i = 0; i < 76; i++) {
+            chars += rainbow[i % rainbow.Length];
+        }
+
+        Task.Run(async () => {
+            int i = 0;
+            var msg = new MessageBuilder(msgType: "m.notice").WithRainbowString(chars).Build();
+            var msgEvent = await ctx.Room.SendMessageEventAsync(msg);
+
+            while (true) {
+                msg = new MessageBuilder(msgType: "m.notice").WithRainbowString(chars, offset: i * 5).Build();
+                if (i % 50 == 0) {
+                    msg.NewContent = null;
+                    msg.RelatesTo = null;
+                    msgEvent = await ctx.Room.SendMessageEventAsync(msg);
+                }
+                else {
+                    msg = msg.SetReplaceRelation<RoomMessageEventContent>(msgEvent.EventId);
+                    msg.Body = "";
+                    msg.FormattedBody = "";
+                }
+
+                var sw = Stopwatch.StartNew();
+                await
+                    ctx.Room.SendMessageEventAsync(msg);
+                await Task.Delay(sw.Elapsed);
+                i++;
+            }
+        });
+    }
+}
\ No newline at end of file