mirror of
https://github.com/PluralKit/PluralKit.git
synced 2026-02-07 06:17:55 +00:00
Add warning when setting proxy tags conflicting with another member's
This commit is contained in:
parent
d42dea9e9f
commit
3b72fa720b
2 changed files with 50 additions and 6 deletions
|
|
@ -1,4 +1,3 @@
|
|||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
|
|
@ -164,6 +163,20 @@ namespace PluralKit.Bot.Commands
|
|||
return new ProxyTag(prefixAndSuffix[0], prefixAndSuffix[1]);
|
||||
}
|
||||
|
||||
async Task<bool> WarnOnConflict(ProxyTag newTag)
|
||||
{
|
||||
var conflicts = (await _data.GetConflictingProxies(ctx.System, newTag))
|
||||
.Where(m => m.Id != target.Id)
|
||||
.ToList();
|
||||
|
||||
if (conflicts.Count <= 0) return true;
|
||||
|
||||
var conflictList = conflicts.Select(m => $"- **{m.Name}**");
|
||||
var msg = await ctx.Reply(
|
||||
$"{Emojis.Warn} The following members have conflicting proxy tags:\n{string.Join('\n', conflictList)}\nDo you want to proceed anyway?");
|
||||
return await ctx.PromptYesNo(msg);
|
||||
}
|
||||
|
||||
// "Sub"command: no arguments clearing
|
||||
if (!ctx.HasNext())
|
||||
{
|
||||
|
|
@ -175,7 +188,7 @@ namespace PluralKit.Bot.Commands
|
|||
if (!await ctx.PromptYesNo(msg))
|
||||
throw Errors.GenericCancelled();
|
||||
}
|
||||
|
||||
|
||||
target.ProxyTags = new ProxyTag[] { };
|
||||
|
||||
await _data.SaveMember(target);
|
||||
|
|
@ -190,6 +203,9 @@ namespace PluralKit.Bot.Commands
|
|||
if (target.ProxyTags.Contains(tagToAdd))
|
||||
throw Errors.ProxyTagAlreadyExists(tagToAdd, target);
|
||||
|
||||
if (!await WarnOnConflict(tagToAdd))
|
||||
throw Errors.GenericCancelled();
|
||||
|
||||
// It's not guaranteed the list's mutable, so we force it to be
|
||||
target.ProxyTags = target.ProxyTags.ToList();
|
||||
target.ProxyTags.Add(tagToAdd);
|
||||
|
|
@ -224,6 +240,9 @@ namespace PluralKit.Bot.Commands
|
|||
// already more than one proxy tag.
|
||||
if (target.ProxyTags.Count > 1)
|
||||
throw Errors.LegacyAlreadyHasProxyTag(requestedTag, target);
|
||||
|
||||
if (!await WarnOnConflict(requestedTag))
|
||||
throw Errors.GenericCancelled();
|
||||
|
||||
target.ProxyTags = new[] {requestedTag};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue