Special case "private" and "public" as setters rather than togglers
This commit is contained in:
parent
594bcc5b7b
commit
4c1a03bb00
@ -279,8 +279,12 @@ namespace PluralKit.Bot.Commands
|
|||||||
await ctx.Execute<MemberEdit>(MemberServerName, m => m.ServerName(ctx, target));
|
await ctx.Execute<MemberEdit>(MemberServerName, m => m.ServerName(ctx, target));
|
||||||
else if (ctx.Match("keepproxy", "keeptags", "showtags"))
|
else if (ctx.Match("keepproxy", "keeptags", "showtags"))
|
||||||
await ctx.Execute<MemberEdit>(MemberKeepProxy, m => m.KeepProxy(ctx, target));
|
await ctx.Execute<MemberEdit>(MemberKeepProxy, m => m.KeepProxy(ctx, target));
|
||||||
else if (ctx.Match("private", "privacy", "hidden", "public"))
|
else if (ctx.Match("privacy"))
|
||||||
await ctx.Execute<MemberEdit>(MemberPrivacy, m => m.Privacy(ctx, target));
|
await ctx.Execute<MemberEdit>(MemberPrivacy, m => m.Privacy(ctx, target, null));
|
||||||
|
else if (ctx.Match("private", "hidden"))
|
||||||
|
await ctx.Execute<MemberEdit>(MemberPrivacy, m => m.Privacy(ctx, target, PrivacyLevel.Private));
|
||||||
|
else if (ctx.Match("public", "shown"))
|
||||||
|
await ctx.Execute<MemberEdit>(MemberPrivacy, m => m.Privacy(ctx, target, PrivacyLevel.Public));
|
||||||
else if (!ctx.HasNext()) // Bare command
|
else if (!ctx.HasNext()) // Bare command
|
||||||
await ctx.Execute<Member>(MemberInfo, m => m.ViewMember(ctx, target));
|
await ctx.Execute<Member>(MemberInfo, m => m.ViewMember(ctx, target));
|
||||||
else
|
else
|
||||||
|
@ -184,21 +184,22 @@ namespace PluralKit.Bot.Commands
|
|||||||
await ctx.Reply($"{Emojis.Success} Member proxy tags will now not be included in the resulting message when proxying.");
|
await ctx.Reply($"{Emojis.Success} Member proxy tags will now not be included in the resulting message when proxying.");
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task Privacy(Context ctx, PKMember target)
|
public async Task Privacy(Context ctx, PKMember target, PrivacyLevel? newValueFromCommand)
|
||||||
{
|
{
|
||||||
if (ctx.System == null) throw Errors.NoSystemError;
|
if (ctx.System == null) throw Errors.NoSystemError;
|
||||||
if (target.System != ctx.System.Id) throw Errors.NotOwnMemberError;
|
if (target.System != ctx.System.Id) throw Errors.NotOwnMemberError;
|
||||||
|
|
||||||
bool newValue;
|
PrivacyLevel newValue;
|
||||||
if (ctx.Match("private", "hide", "hidden", "on", "enable", "yes")) newValue = true;
|
if (ctx.Match("private", "hide", "hidden", "on", "enable", "yes")) newValue = PrivacyLevel.Private;
|
||||||
else if (ctx.Match("public", "show", "shown", "displayed", "off", "disable", "no")) newValue = false;
|
else if (ctx.Match("public", "show", "shown", "displayed", "off", "disable", "no")) newValue = PrivacyLevel.Public;
|
||||||
else if (ctx.HasNext()) throw new PKSyntaxError("You must pass either \"private\" or \"public\".");
|
else if (ctx.HasNext()) throw new PKSyntaxError("You must pass either \"private\" or \"public\".");
|
||||||
else newValue = target.MemberPrivacy != PrivacyLevel.Private;
|
// If we're getting a value from command (eg. "pk;m <name> private" == always private, "pk;m <name> public == always public"), use that instead of parsing/toggling
|
||||||
|
else newValue = newValueFromCommand ?? (target.MemberPrivacy != PrivacyLevel.Private ? PrivacyLevel.Private : PrivacyLevel.Public);
|
||||||
|
|
||||||
target.MemberPrivacy = newValue ? PrivacyLevel.Private : PrivacyLevel.Public;
|
target.MemberPrivacy = newValue;
|
||||||
await _data.SaveMember(target);
|
await _data.SaveMember(target);
|
||||||
|
|
||||||
if (newValue)
|
if (newValue == PrivacyLevel.Private)
|
||||||
await ctx.Reply($"{Emojis.Success} Member privacy set to **private**. This member will no longer show up in member lists and will return limited information when queried by other accounts.");
|
await ctx.Reply($"{Emojis.Success} Member privacy set to **private**. This member will no longer show up in member lists and will return limited information when queried by other accounts.");
|
||||||
else
|
else
|
||||||
await ctx.Reply($"{Emojis.Success} Member privacy set to **public**. This member will now show up in member lists and will return all information when queried by other accounts.");
|
await ctx.Reply($"{Emojis.Success} Member privacy set to **public**. This member will now show up in member lists and will return all information when queried by other accounts.");
|
||||||
|
Loading…
Reference in New Issue
Block a user