feat: delete command messages with pk;msg -delete

This commit is contained in:
spiral
2021-09-26 22:49:43 -04:00
parent fa66fbe247
commit 0517c76abf
6 changed files with 48 additions and 11 deletions

View File

@@ -127,10 +127,21 @@ namespace PluralKit.Bot
throw new PKSyntaxError($"Could not parse {ctx.PeekArgument().AsCode()} as a message ID or link.");
}
var message = await _db.Execute(c => _repo.GetMessage(c, messageId.Value));
if (message == null) throw Errors.MessageNotFound(messageId.Value);
var isDelete = ctx.Match("delete") || ctx.MatchFlag("delete");
if (ctx.Match("delete") || ctx.MatchFlag("delete"))
var message = await _db.Execute(c => _repo.GetMessage(c, messageId.Value));
if (message == null)
{
if (isDelete)
{
await DeleteCommandMessage(ctx, messageId.Value);
return;
}
else
throw Errors.MessageNotFound(messageId.Value);
}
if (isDelete)
{
if (message.System.Id != ctx.System.Id)
throw new PKError("You can only delete your own messages.");
@@ -154,5 +165,22 @@ namespace PluralKit.Bot
await ctx.Reply(embed: await _embeds.CreateMessageInfoEmbed(message));
}
private async Task DeleteCommandMessage(Context ctx, ulong messageId)
{
var message = await _db.Execute(conn => _repo.GetCommandMessage(conn, messageId));
if (message == null)
throw Errors.MessageNotFound(messageId);
if (message.AuthorId != ctx.Author.Id)
throw new PKError("You can only delete command messages queried by this account.");
await ctx.Rest.DeleteMessage(message.ChannelId, message.MessageId);
if (ctx.Guild != null)
await ctx.Rest.DeleteMessage(ctx.Message);
else
await ctx.Rest.CreateReaction(ctx.Message.ChannelId, ctx.Message.Id, new() { Name = Emojis.Success });
}
}
}