implement rest of group and member commands

This commit is contained in:
dusk 2025-10-01 00:51:45 +00:00
parent 95fc7e9f60
commit 1943687c70
No known key found for this signature in database
13 changed files with 705 additions and 443 deletions

View file

@ -10,11 +10,11 @@ namespace PluralKit.Bot;
public class GroupMember
{
public async Task AddRemoveGroups(Context ctx, PKMember target, Groups.AddRemoveOperation op)
public async Task AddRemoveGroups(Context ctx, PKMember target, List<PKGroup> _groups, Groups.AddRemoveOperation op)
{
ctx.CheckSystem().CheckOwnMember(target);
var groups = (await ctx.ParseGroupList(ctx.System.Id))
var groups = _groups.FindAll(g => g.System == ctx.System.Id)
.Select(g => g.Id)
.Distinct()
.ToList();
@ -83,12 +83,12 @@ public class GroupMember
target.Color, opts);
}
public async Task AddRemoveMembers(Context ctx, PKGroup target, Groups.AddRemoveOperation op)
public async Task AddRemoveMembers(Context ctx, PKGroup target, List<PKMember> _members, Groups.AddRemoveOperation op, bool all)
{
ctx.CheckOwnGroup(target);
List<MemberId> members;
if (ctx.MatchFlag("all", "a"))
if (all)
{
members = (await ctx.Database.Execute(conn => conn.QueryMemberList(target.System,
new DatabaseViewsExt.ListQueryOptions { })))
@ -98,10 +98,11 @@ public class GroupMember
}
else
{
members = (await ctx.ParseMemberList(ctx.System.Id))
.Select(m => m.Id)
.Distinct()
.ToList();
members = _members
.FindAll(m => m.System == ctx.System.Id)
.Select(m => m.Id)
.Distinct()
.ToList();
}
var existingMembersInGroup = (await ctx.Database.Execute(conn => conn.QueryMemberList(target.System,
@ -125,7 +126,7 @@ public class GroupMember
.Where(m => existingMembersInGroup.Contains(m.Value))
.ToList();
if (ctx.MatchFlag("all", "a") && !await ctx.PromptYesNo($"Are you sure you want to remove all members from group {target.Reference(ctx)}?", "Empty Group")) throw Errors.GenericCancelled();
if (all && !await ctx.PromptYesNo($"Are you sure you want to remove all members from group {target.Reference(ctx)}?", "Empty Group")) throw Errors.GenericCancelled();
await ctx.Repository.RemoveMembersFromGroup(target.Id, toAction);
}