1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
using LibMatrix.EventTypes.Spec;
using LibMatrix.Helpers;
using LibMatrix.Utilities.Bot.Interfaces;
using MiniUtils.Classes;
using MiniUtils.Services;
namespace MiniUtils.Commands;
public class IgnoreCommand(IgnoreListManager ignoreListManager) : ICommand {
public string Name => "ignore";
public string[]? Aliases => ["ignorelist"];
public string Description => "Manage ignore list";
public bool Unlisted => false;
public async Task Invoke(CommandContext ctx) {
var ignoreList = await ctx.Homeserver.GetAccountDataOrNullAsync<IgnoredUserListEventContentWithDisabled>(IgnoredUserListEventContent.EventId) ?? new();
if (ctx.Args.Length == 0)
await Summarize(ctx, ignoreList);
else if (ctx.Args is ["disable", "all"] or ["disableall"] or ["disall"]) {
var count = await ignoreListManager.DisableAll();
await ctx.Room.SendReactionAsync(ctx.MessageEvent.EventId!, $"{Emojis.Recycle} {count}");
}
else if (ctx.Args is ["enable", "all"] or ["enableall"] or ["enall"]) {
var count = await ignoreListManager.EnableAll();
await ctx.Room.SendReactionAsync(ctx.MessageEvent.EventId!, $"{Emojis.Bullseye} {count}");
}
else if (ctx.Args is ["disable", "joined"] or ["disablejoined"]) {
var count = await ignoreListManager.MoveList(false, (await ctx.Room.GetMembersListAsync("join")).Select(x => x.StateKey!));
await ctx.Room.SendReactionAsync(ctx.MessageEvent.EventId!, $"{Emojis.RightArrowWithTail} {count}");
}
else if (ctx.Args is ["enable", "joined"] or ["enablejoined"]) {
var count = await ignoreListManager.MoveList(true, (await ctx.Room.GetMembersListAsync("join")).Select(x => x.StateKey!));
await ctx.Room.SendReactionAsync(ctx.MessageEvent.EventId!, $"{Emojis.RightArrowWithTail} {count}");
}
else if (ctx.Args is ["disable", "local"] or ["disablelocal"] or ["disable", "room"] or ["disableroom"]) {
var count = await ignoreListManager.MoveList(false, (await ctx.Room.GetMembersListAsync()).Select(x => x.StateKey!));
await ctx.Room.SendReactionAsync(ctx.MessageEvent.EventId!, $"{Emojis.RightArrowWithTail} {count}");
}
else if (ctx.Args is ["enable", "local"] or ["enablelocal"] or ["enable", "room"] or ["enableroom"]) {
var count = await ignoreListManager.MoveList(true, (await ctx.Room.GetMembersListAsync()).Select(x => x.StateKey!));
await ctx.Room.SendReactionAsync(ctx.MessageEvent.EventId!, $"{Emojis.RightArrowWithTail} {count}");
}
else if (ctx.Args is ["disable", .. var itemsToDisable]) {
var count = await ignoreListManager.MoveList(false, itemsToDisable);
await ctx.Room.SendReactionAsync(ctx.MessageEvent.EventId!, $"{Emojis.RightArrowWithTail} {count}");
}
else if (ctx.Args is ["enable", .. var itemsToEnable]) {
var count = await ignoreListManager.MoveList(true, itemsToEnable);
await ctx.Room.SendReactionAsync(ctx.MessageEvent.EventId!, $"{Emojis.RightArrowWithTail} {count}");
}
else if (ctx.Args is ["add", .. var itemsToAdd]) {
var count = await ignoreListManager.AddList(itemsToAdd);
await ctx.Room.SendReactionAsync(ctx.MessageEvent.EventId!, $"{Emojis.RightArrowWithTail} {count}");
}
}
private async Task Summarize(CommandContext ctx, IgnoredUserListEventContentWithDisabled ignoreList) {
var msb = new MessageBuilder()
.WithBody($"Ignored users: {ignoreList.IgnoredUsers.Count}").WithNewline()
.WithBody($"Disabled ignores: {ignoreList.DisabledIgnoredUsers.Count}").WithNewline();
await ctx.Room.SendMessageEventAsync(msb.Build());
}
}
|