diff --git a/MatrixAntiDmSpam.Core/AntiDmSpamConfiguration.cs b/MatrixAntiDmSpam.Core/AntiDmSpamConfiguration.cs
index 1ce901e..ff6814f 100644
--- a/MatrixAntiDmSpam.Core/AntiDmSpamConfiguration.cs
+++ b/MatrixAntiDmSpam.Core/AntiDmSpamConfiguration.cs
@@ -8,7 +8,7 @@ public class AntiDmSpamConfiguration {
public bool LogInviteDataAsFile { get; set; } = true;
public bool IgnoreBannedUsers { get; set; } = false;
public bool ReportBlockedInvites { get; set; } = false;
- public TimeSpan MinimumSyncTime { get; set; } = TimeSpan.Zero;
+ public TimeSpan? MinimumSyncTime { get; set; }
public required List<PolicyRoomReference> PolicyLists { get; set; }
diff --git a/MatrixAntiDmSpam.Core/PolicyExecutor.cs b/MatrixAntiDmSpam.Core/PolicyExecutor.cs
index 96ec344..9d6a843 100644
--- a/MatrixAntiDmSpam.Core/PolicyExecutor.cs
+++ b/MatrixAntiDmSpam.Core/PolicyExecutor.cs
@@ -161,6 +161,8 @@ public class PolicyExecutor(
#endregion
#region Feature: Report blocked invites
+
+
#endregion
@@ -213,17 +215,18 @@ public class PolicyExecutor(
}
if (!policyMatches) return null;
- logger.LogWarning("[{}] Rejecting invite to {}, matching {} {}", homeserver.WhoAmI.UserId, invite.RoomId, policy.GetType().GetFriendlyName(),
- policy.ToJson(ignoreNull: true));
+ var policyRoom = config.PolicyLists.First(x=>x.RoomId == policyEvent.RoomId);
+ logger.LogWarning("[{}] Rejecting invite to {}, matching {} in {}: {}", homeserver.WhoAmI.UserId, invite.RoomId, policy.GetType().GetFriendlyName(),
+ policyRoom.Name, policy.ToJson(ignoreNull: true));
return Task.Run(async () => {
if (_logRoom is not null) {
- string roomName = await invite.TryGetRoomNameAsync();
+ var roomName = await invite.TryGetRoomNameAsync();
await roomInviteHandler.RejectInvite(invite, new MessageBuilder()
.WithColoredBody("#FF0000",
cb => cb.WithBody("Rejecting invite to ").WithMention(invite.RoomId, roomName)
- .WithBody($", matching {policy.GetType().GetFriendlyName().ToLowerInvariant()}.")
+ .WithBody($", matching {policy.GetType().GetFriendlyName().ToLowerInvariant()} in {policyRoom.Name}.")
.WithNewline())
.WithCollapsibleSection("Policy JSON", cb => cb.WithCodeBlock(policy.ToJson(ignoreNull: true), "json"))
);
diff --git a/MatrixAntiDmSpam.Core/PolicyListFetcher.cs b/MatrixAntiDmSpam.Core/PolicyListFetcher.cs
index 31b8835..51db44f 100644
--- a/MatrixAntiDmSpam.Core/PolicyListFetcher.cs
+++ b/MatrixAntiDmSpam.Core/PolicyListFetcher.cs
@@ -2,25 +2,17 @@ using LibMatrix.Filters;
using LibMatrix.Helpers;
using LibMatrix.Homeservers;
using LibMatrix.RoomTypes;
+using LibMatrix.Utilities.Bot;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
namespace MatrixAntiDmSpam.Core;
-public class PolicyListFetcher(ILogger<PolicyListFetcher> logger, AntiDmSpamConfiguration config, AuthenticatedHomeserverGeneric homeserver, PolicyStore policyStore)
+public class PolicyListFetcher(ILogger<PolicyListFetcher> logger, AntiDmSpamConfiguration config, AuthenticatedHomeserverGeneric homeserver, PolicyStore policyStore, LibMatrixBotConfiguration botConfig)
: IHostedService {
private CancellationTokenSource _cts = new();
public async Task StartAsync(CancellationToken cancellationToken) {
- // _ = Enumerable.Range(0, 10_000_000).Select(x => {
- // policyStore.AllPolicies.Add(Guid.NewGuid().ToString(), new UserPolicyRuleEventContent() {
- // Entity = Guid.NewGuid().ToString() + x,
- // Reason = "meow " + x,
- // Recommendation = "m.ban"
- // });
- // return 0;
- // }).ToList();
-
logger.LogInformation("Starting policy list fetcher");
await EnsurePolicyListsJoined();
_ = SyncPolicyLists().ContinueWith(x => {
@@ -49,7 +41,8 @@ public class PolicyListFetcher(ILogger<PolicyListFetcher> logger, AntiDmSpamConf
private async Task SyncPolicyLists() {
var syncHelper = new SyncHelper(homeserver, logger) {
Timeout = 30_000,
- MinimumDelay = config.MinimumSyncTime,
+ SetPresence = botConfig.Presence,
+ MinimumDelay = config.MinimumSyncTime ?? TimeSpan.Zero,
FilterId = (await homeserver.UploadFilterAsync(new SyncFilter {
AccountData = SyncFilter.EventFilter.Empty,
Presence = SyncFilter.EventFilter.Empty,
|