feat(bot): add admin commands for hid rerolls
This commit is contained in:
parent
4f0236d766
commit
0d27e669c8
@ -117,6 +117,12 @@ public partial class CommandTree
|
|||||||
await ctx.Execute<Admin>(Admin, a => a.UpdateMemberId(ctx));
|
await ctx.Execute<Admin>(Admin, a => a.UpdateMemberId(ctx));
|
||||||
else if (ctx.Match("ugid", "updategroupid"))
|
else if (ctx.Match("ugid", "updategroupid"))
|
||||||
await ctx.Execute<Admin>(Admin, a => a.UpdateGroupId(ctx));
|
await ctx.Execute<Admin>(Admin, a => a.UpdateGroupId(ctx));
|
||||||
|
else if (ctx.Match("rsid", "rerollsystemid"))
|
||||||
|
await ctx.Execute<Admin>(Admin, a => a.RerollSystemId(ctx));
|
||||||
|
else if (ctx.Match("rmid", "rerollmemberid"))
|
||||||
|
await ctx.Execute<Admin>(Admin, a => a.RerollMemberId(ctx));
|
||||||
|
else if (ctx.Match("rgid", "rerollgroupid"))
|
||||||
|
await ctx.Execute<Admin>(Admin, a => a.RerollGroupId(ctx));
|
||||||
else if (ctx.Match("uml", "updatememberlimit"))
|
else if (ctx.Match("uml", "updatememberlimit"))
|
||||||
await ctx.Execute<Admin>(Admin, a => a.SystemMemberLimit(ctx));
|
await ctx.Execute<Admin>(Admin, a => a.SystemMemberLimit(ctx));
|
||||||
else if (ctx.Match("ugl", "updategrouplimit"))
|
else if (ctx.Match("ugl", "updategrouplimit"))
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
|
using Dapper;
|
||||||
|
using SqlKata;
|
||||||
|
|
||||||
using PluralKit.Core;
|
using PluralKit.Core;
|
||||||
|
|
||||||
namespace PluralKit.Bot;
|
namespace PluralKit.Bot;
|
||||||
@ -87,6 +90,74 @@ public class Admin
|
|||||||
await ctx.Reply($"{Emojis.Success} Group ID updated (`{target.Hid}` -> `{newHid}`).");
|
await ctx.Reply($"{Emojis.Success} Group ID updated (`{target.Hid}` -> `{newHid}`).");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task RerollSystemId(Context ctx)
|
||||||
|
{
|
||||||
|
ctx.AssertBotAdmin();
|
||||||
|
|
||||||
|
var target = await ctx.MatchSystem();
|
||||||
|
if (target == null)
|
||||||
|
throw new PKError("Unknown system.");
|
||||||
|
|
||||||
|
if (!await ctx.PromptYesNo($"Reroll system ID `{target.Hid}`?", "Reroll"))
|
||||||
|
throw new PKError("ID change cancelled.");
|
||||||
|
|
||||||
|
var query = new Query("systems").AsUpdate(new
|
||||||
|
{
|
||||||
|
hid = new UnsafeLiteral("find_free_system_hid()"),
|
||||||
|
})
|
||||||
|
.Where("id", target.Id);
|
||||||
|
|
||||||
|
var newHid = await ctx.Database.QueryFirst<string>(query, "returning hid");
|
||||||
|
await ctx.Reply($"{Emojis.Success} System ID updated (`{target.Hid}` -> `{newHid}`).");
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task RerollMemberId(Context ctx)
|
||||||
|
{
|
||||||
|
ctx.AssertBotAdmin();
|
||||||
|
|
||||||
|
var target = await ctx.MatchMember();
|
||||||
|
if (target == null)
|
||||||
|
throw new PKError("Unknown member.");
|
||||||
|
|
||||||
|
if (!await ctx.PromptYesNo(
|
||||||
|
$"Reroll member ID for **{target.NameFor(LookupContext.ByNonOwner)}** (`{target.Hid}`)?",
|
||||||
|
"Reroll"
|
||||||
|
))
|
||||||
|
throw new PKError("ID change cancelled.");
|
||||||
|
|
||||||
|
var query = new Query("members").AsUpdate(new
|
||||||
|
{
|
||||||
|
hid = new UnsafeLiteral("find_free_member_hid()"),
|
||||||
|
})
|
||||||
|
.Where("id", target.Id);
|
||||||
|
|
||||||
|
var newHid = await ctx.Database.QueryFirst<string>(query, "returning hid");
|
||||||
|
await ctx.Reply($"{Emojis.Success} Member ID updated (`{target.Hid}` -> `{newHid}`).");
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task RerollGroupId(Context ctx)
|
||||||
|
{
|
||||||
|
ctx.AssertBotAdmin();
|
||||||
|
|
||||||
|
var target = await ctx.MatchGroup();
|
||||||
|
if (target == null)
|
||||||
|
throw new PKError("Unknown group.");
|
||||||
|
|
||||||
|
if (!await ctx.PromptYesNo($"Reroll group ID for **{target.Name}** (`{target.Hid}`)?",
|
||||||
|
"Change"
|
||||||
|
))
|
||||||
|
throw new PKError("ID change cancelled.");
|
||||||
|
|
||||||
|
var query = new Query("groups").AsUpdate(new
|
||||||
|
{
|
||||||
|
hid = new UnsafeLiteral("find_free_group_hid()"),
|
||||||
|
})
|
||||||
|
.Where("id", target.Id);
|
||||||
|
|
||||||
|
var newHid = await ctx.Database.QueryFirst<string>(query, "returning hid");
|
||||||
|
await ctx.Reply($"{Emojis.Success} Group ID updated (`{target.Hid}` -> `{newHid}`).");
|
||||||
|
}
|
||||||
|
|
||||||
public async Task SystemMemberLimit(Context ctx)
|
public async Task SystemMemberLimit(Context ctx)
|
||||||
{
|
{
|
||||||
ctx.AssertBotAdmin();
|
ctx.AssertBotAdmin();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user