Extract member list argument parsing to utility method
This commit is contained in:
parent
36ed356d2b
commit
299f6b2edf
@ -1,5 +1,9 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
using PluralKit.Core;
|
||||
|
||||
namespace PluralKit.Bot
|
||||
{
|
||||
@ -55,5 +59,27 @@ namespace PluralKit.Bot
|
||||
var flags = ctx.Parameters.Flags();
|
||||
return potentialMatches.Any(potentialMatch => flags.Contains(potentialMatch));
|
||||
}
|
||||
|
||||
public static async Task<List<PKMember>> ParseMemberList(this Context ctx, SystemId? restrictToSystem)
|
||||
{
|
||||
var members = new List<PKMember>();
|
||||
|
||||
// Loop through all the given arguments
|
||||
while (ctx.HasNext())
|
||||
{
|
||||
// and attempt to match a member
|
||||
var member = await ctx.MatchMember();
|
||||
if (member == null)
|
||||
// if we can't, big error. Every member name must be valid.
|
||||
throw new PKError(ctx.CreateMemberNotFoundError(ctx.PopArgument()));
|
||||
|
||||
if (restrictToSystem != null && member.System != restrictToSystem)
|
||||
throw Errors.NotOwnMemberError; // TODO: name *which* member?
|
||||
|
||||
members.Add(member); // Then add to the final output list
|
||||
}
|
||||
|
||||
return members;
|
||||
}
|
||||
}
|
||||
}
|
@ -23,22 +23,8 @@ namespace PluralKit.Bot
|
||||
public async Task SwitchDo(Context ctx)
|
||||
{
|
||||
ctx.CheckSystem();
|
||||
var members = new List<PKMember>();
|
||||
|
||||
// Loop through all the given arguments
|
||||
while (ctx.HasNext())
|
||||
{
|
||||
// and attempt to match a member
|
||||
var member = await ctx.MatchMember();
|
||||
if (member == null)
|
||||
// if we can't, big error. Every member name must be valid.
|
||||
throw new PKError(ctx.CreateMemberNotFoundError(ctx.PopArgument()));
|
||||
|
||||
ctx.CheckOwnMember(member); // Ensure they're in our own system
|
||||
members.Add(member); // Then add to the final output list
|
||||
}
|
||||
|
||||
// Finally, do the actual switch
|
||||
var members = await ctx.ParseMemberList(ctx.System.Id);
|
||||
await DoSwitchCommand(ctx, members);
|
||||
}
|
||||
public async Task SwitchOut(Context ctx)
|
||||
|
Loading…
Reference in New Issue
Block a user