diff --git a/ExampleBots/MediaModeratorPoC/Bot/Commands/BanMediaCommand.cs b/ExampleBots/MediaModeratorPoC/Bot/Commands/BanMediaCommand.cs
index 4642007..d633f89 100644
--- a/ExampleBots/MediaModeratorPoC/Bot/Commands/BanMediaCommand.cs
+++ b/ExampleBots/MediaModeratorPoC/Bot/Commands/BanMediaCommand.cs
@@ -1,11 +1,11 @@
using System.Security.Cryptography;
using ArcaneLibs.Extensions;
+using LibMatrix.EventTypes.Spec;
using LibMatrix.Helpers;
using LibMatrix.Responses;
using LibMatrix.Services;
-using LibMatrix.StateEventTypes.Spec;
+using LibMatrix.Utilities.Bot.Interfaces;
using MediaModeratorPoC.Bot.AccountData;
-using MediaModeratorPoC.Bot.Interfaces;
using MediaModeratorPoC.Bot.StateEventTypes;
namespace MediaModeratorPoC.Bot.Commands;
@@ -17,11 +17,11 @@ public class BanMediaCommand(IServiceProvider services, HomeserverProviderServic
public async Task<bool> CanInvoke(CommandContext ctx) {
//check if user is admin in control room
var botData = await ctx.Homeserver.GetAccountData<BotData>("gay.rory.media_moderator_poc_data");
- var controlRoom = await ctx.Homeserver.GetRoom(botData.ControlRoom);
+ var controlRoom = ctx.Homeserver.GetRoom(botData.ControlRoom);
var isAdmin = (await controlRoom.GetPowerLevelsAsync())!.UserHasPermission(ctx.MessageEvent.Sender, "m.room.ban");
if (!isAdmin) {
// await ctx.Reply("You do not have permission to use this command!");
- await (await ctx.Homeserver.GetRoom(botData.LogRoom!)).SendMessageEventAsync("m.room.message",
+ await ctx.Homeserver.GetRoom(botData.LogRoom!).SendMessageEventAsync(
new RoomMessageEventContent(body: $"User {ctx.MessageEvent.Sender} tried to use command {Name} but does not have permission!", messageType: "m.text"));
}
@@ -30,14 +30,14 @@ public class BanMediaCommand(IServiceProvider services, HomeserverProviderServic
public async Task Invoke(CommandContext ctx) {
var botData = await ctx.Homeserver.GetAccountData<BotData>("gay.rory.media_moderator_poc_data");
- var policyRoom = await ctx.Homeserver.GetRoom(botData.PolicyRoom ?? botData.ControlRoom);
- var logRoom = await ctx.Homeserver.GetRoom(botData.LogRoom ?? botData.ControlRoom);
+ var policyRoom = ctx.Homeserver.GetRoom(botData.PolicyRoom ?? botData.ControlRoom);
+ var logRoom = ctx.Homeserver.GetRoom(botData.LogRoom ?? botData.ControlRoom);
//check if reply
var messageContent = ctx.MessageEvent.TypedContent as RoomMessageEventContent;
if (messageContent?.RelatesTo is { InReplyTo: not null }) {
try {
- await logRoom.SendMessageEventAsync("m.room.message",
+ await logRoom.SendMessageEventAsync(
new RoomMessageEventContent(
body: $"User {MessageFormatter.HtmlFormatMention(ctx.MessageEvent.Sender)} is trying to ban media {messageContent!.RelatesTo!.InReplyTo!.EventId}",
messageType: "m.text"));
@@ -47,14 +47,14 @@ public class BanMediaCommand(IServiceProvider services, HomeserverProviderServic
//check if recommendation is in list
if (ctx.Args.Length < 2) {
- await ctx.Room.SendMessageEventAsync("m.room.message", MessageFormatter.FormatError("You must specify a recommendation type and reason!"));
+ await ctx.Room.SendMessageEventAsync(MessageFormatter.FormatError("You must specify a recommendation type and reason!"));
return;
}
var recommendation = ctx.Args[0];
if (recommendation is not ("ban" or "kick" or "mute" or "redact" or "spoiler" or "warn" or "warn_admins")) {
- await ctx.Room.SendMessageEventAsync("m.room.message", MessageFormatter.FormatError($"Invalid recommendation type {recommendation}, must be `warn_admins`, `warn`, `spoiler`, `redact`, `mute`, `kick` or `ban`!"));
+ await ctx.Room.SendMessageEventAsync(MessageFormatter.FormatError($"Invalid recommendation type {recommendation}, must be `warn_admins`, `warn`, `spoiler`, `redact`, `mute`, `kick` or `ban`!"));
return;
}
@@ -69,7 +69,7 @@ public class BanMediaCommand(IServiceProvider services, HomeserverProviderServic
fileHash = await hashAlgo.ComputeHashAsync(await ctx.Homeserver._httpClient.GetStreamAsync(resolvedUri));
}
catch (Exception ex) {
- await logRoom.SendMessageEventAsync("m.room.message",
+ await logRoom.SendMessageEventAsync(
MessageFormatter.FormatException($"Error calculating file hash for {mxcUri} via {mxcUri.Split('/')[2]}, retrying via {ctx.Homeserver.HomeServerDomain}...",
ex));
try {
@@ -77,8 +77,8 @@ public class BanMediaCommand(IServiceProvider services, HomeserverProviderServic
fileHash = await hashAlgo.ComputeHashAsync(await ctx.Homeserver._httpClient.GetStreamAsync(resolvedUri));
}
catch (Exception ex2) {
- await ctx.Room.SendMessageEventAsync("m.room.message", MessageFormatter.FormatException("Error calculating file hash", ex2));
- await logRoom.SendMessageEventAsync("m.room.message",
+ await ctx.Room.SendMessageEventAsync(MessageFormatter.FormatException("Error calculating file hash", ex2));
+ await logRoom.SendMessageEventAsync(
MessageFormatter.FormatException($"Error calculating file hash via {ctx.Homeserver.HomeServerDomain}!", ex2));
}
}
@@ -91,18 +91,18 @@ public class BanMediaCommand(IServiceProvider services, HomeserverProviderServic
Recommendation = recommendation,
});
- await ctx.Room.SendMessageEventAsync("m.room.message", MessageFormatter.FormatSuccessJson("Media policy created", policy));
- await logRoom.SendMessageEventAsync("m.room.message", MessageFormatter.FormatSuccessJson("Media policy created", policy));
+ await ctx.Room.SendMessageEventAsync(MessageFormatter.FormatSuccessJson("Media policy created", policy));
+ await logRoom.SendMessageEventAsync(MessageFormatter.FormatSuccessJson("Media policy created", policy));
}
catch (Exception e) {
- await logRoom.SendMessageEventAsync("m.room.message", MessageFormatter.FormatException("Error creating policy", e));
- await ctx.Room.SendMessageEventAsync("m.room.message", MessageFormatter.FormatException("Error creating policy", e));
+ await logRoom.SendMessageEventAsync(MessageFormatter.FormatException("Error creating policy", e));
+ await ctx.Room.SendMessageEventAsync(MessageFormatter.FormatException("Error creating policy", e));
await using var stream = new MemoryStream(e.ToString().AsBytes().ToArray());
await logRoom.SendFileAsync("m.file", "error.log.cs", stream);
}
}
else {
- await ctx.Room.SendMessageEventAsync("m.room.message", MessageFormatter.FormatError("This command must be used in reply to a message!"));
+ await ctx.Room.SendMessageEventAsync(MessageFormatter.FormatError("This command must be used in reply to a message!"));
}
}
}
|