move admin check to ContextChecksExt, allow pk;debug proxy for staff in support server

This commit is contained in:
spiral 2021-09-26 20:42:08 -04:00
parent 94f4f970ea
commit fa66fbe247
No known key found for this signature in database
GPG Key ID: A6059F0CA0E1BD31
3 changed files with 28 additions and 19 deletions

View File

@ -1,3 +1,7 @@
using System.Linq;
using Autofac;
using Myriad.Types;
using PluralKit.Core;
@ -52,5 +56,19 @@ namespace PluralKit.Bot
throw new PKError($"You must have the \"{permissionName}\" permission in this server to use this command.");
return ctx;
}
public static bool CheckBotAdmin(this Context ctx)
{
var botConfig = ctx.Services.Resolve<BotConfig>();
return botConfig.AdminRole != null && ctx.Member != null && ctx.Member.Roles.Contains(botConfig.AdminRole.Value);
}
public static Context AssertBotAdmin(this Context ctx)
{
if (!ctx.CheckBotAdmin())
throw new PKError("This command is only usable by bot admins.");
return ctx;
}
}
}

View File

@ -21,7 +21,7 @@ namespace PluralKit.Bot
public async Task UpdateSystemId(Context ctx)
{
AssertBotAdmin(ctx);
ctx.AssertBotAdmin();
var target = await ctx.MatchSystem();
if (target == null)
@ -44,7 +44,7 @@ namespace PluralKit.Bot
public async Task UpdateMemberId(Context ctx)
{
AssertBotAdmin(ctx);
ctx.AssertBotAdmin();
var target = await ctx.MatchMember();
if (target == null)
@ -67,7 +67,7 @@ namespace PluralKit.Bot
public async Task UpdateGroupId(Context ctx)
{
AssertBotAdmin(ctx);
ctx.AssertBotAdmin();
var target = await ctx.MatchGroup();
if (target == null)
@ -90,7 +90,7 @@ namespace PluralKit.Bot
public async Task SystemMemberLimit(Context ctx)
{
AssertBotAdmin(ctx);
ctx.AssertBotAdmin();
var target = await ctx.MatchSystem();
if (target == null)
@ -120,7 +120,7 @@ namespace PluralKit.Bot
public async Task SystemGroupLimit(Context ctx)
{
AssertBotAdmin(ctx);
ctx.AssertBotAdmin();
var target = await ctx.MatchSystem();
if (target == null)
@ -147,16 +147,5 @@ namespace PluralKit.Bot
});
await ctx.Reply($"{Emojis.Success} Group limit updated.");
}
private void AssertBotAdmin(Context ctx)
{
if (!IsBotAdmin(ctx))
throw new PKError("This command is only usable by bot admins.");
}
private bool IsBotAdmin(Context ctx)
{
return _botConfig.AdminRole != null && ctx.Member.Roles.Contains(_botConfig.AdminRole.Value);
}
}
}

View File

@ -263,10 +263,12 @@ namespace PluralKit.Bot
if ((_botConfig.Prefixes ?? BotConfig.DefaultPrefixes).Any(p => msg.Content.StartsWith(p)))
await ctx.Reply("This message starts with the bot's prefix, and was parsed as a command.");
if (msg.Author.Bot)
throw new PKError("You cannot check messages sent by a bot.");
if (msg.WebhookId != null)
await ctx.Reply("You cannot check messages sent by a webhook.");
if (msg.Author.Id != ctx.Author.Id)
await ctx.Reply("You can only check your own messages.");
throw new PKError("You cannot check messages sent by a webhook.");
if (msg.Author.Id != ctx.Author.Id && !ctx.CheckBotAdmin())
throw new PKError("You can only check your own messages.");
// get the channel info
var channel = _cache.GetChannel(channelId.Value);