fix edit message requiring new_content param, fix both edit and rp not using referenced message

This commit is contained in:
dawn 2026-01-20 00:04:22 +03:00
parent d804303615
commit 8cad05ccda
No known key found for this signature in database
4 changed files with 9 additions and 10 deletions

View file

@ -6,11 +6,11 @@ namespace PluralKit.Bot;
public static class ContextArgumentsExt public static class ContextArgumentsExt
{ {
public static (ulong? messageId, ulong? channelId) GetRepliedTo(this Context ctx) public static Message.Reference? GetRepliedTo(this Context ctx)
{ {
if (ctx.Message.Type == Message.MessageType.Reply && ctx.Message.MessageReference?.MessageId != null) if (ctx.Message.Type == Message.MessageType.Reply && ctx.Message.MessageReference?.MessageId != null)
return (ctx.Message.MessageReference.MessageId, ctx.Message.MessageReference.ChannelId); return ctx.Message.MessageReference;
return (null, null); return null;
} }
public static (ulong? messageId, ulong? channelId) ParseMessage(this Context ctx, string maybeMessageRef, bool parseRawMessageId) public static (ulong? messageId, ulong? channelId) ParseMessage(this Context ctx, string maybeMessageRef, bool parseRawMessageId)

View file

@ -167,9 +167,8 @@ public class Checks
var failedToGetMessage = var failedToGetMessage =
"Could not find a valid message to check, was not able to fetch the message, or the message was not sent by you."; "Could not find a valid message to check, was not able to fetch the message, or the message was not sent by you.";
var (messageId, channelId) = ctx.GetRepliedTo(); messageReference = ctx.GetRepliedTo();
if (messageReference != null) var (messageId, channelId) = (messageReference?.MessageId, messageReference?.ChannelId);
(messageId, channelId) = (messageReference.MessageId, messageReference.ChannelId);
if (messageId == null || channelId == null) if (messageId == null || channelId == null)
throw new PKError(failedToGetMessage); throw new PKError(failedToGetMessage);

View file

@ -60,7 +60,7 @@ public class ProxiedMessage
public async Task ReproxyMessage(Context ctx, Message.Reference? messageRef, PKMember target) public async Task ReproxyMessage(Context ctx, Message.Reference? messageRef, PKMember target)
{ {
var (msg, systemId) = await GetMessageToEdit(ctx, messageRef?.MessageId, ReproxyTimeout, true); var (msg, systemId) = await GetMessageToEdit(ctx, messageRef?.MessageId ?? ctx.GetRepliedTo()?.MessageId, ReproxyTimeout, true);
if (ctx.System.Id != systemId) if (ctx.System.Id != systemId)
throw new PKError("Can't reproxy a message sent by a different system."); throw new PKError("Can't reproxy a message sent by a different system.");
@ -91,9 +91,9 @@ public class ProxiedMessage
} }
} }
public async Task EditMessage(Context ctx, Message.Reference? messageRef, string newContent, bool useRegex, bool noSpace, bool append, bool prepend, bool clearEmbeds, bool clearAttachments) public async Task EditMessage(Context ctx, Message.Reference? messageRef, string? newContent, bool useRegex, bool noSpace, bool append, bool prepend, bool clearEmbeds, bool clearAttachments)
{ {
var (msg, systemId) = await GetMessageToEdit(ctx, messageRef?.MessageId, EditTimeout, false); var (msg, systemId) = await GetMessageToEdit(ctx, messageRef?.MessageId ?? ctx.GetRepliedTo()?.MessageId, EditTimeout, false);
if (ctx.System.Id != systemId) if (ctx.System.Id != systemId)
throw new PKError("Can't edit a message sent by a different system."); throw new PKError("Can't edit a message sent by a different system.");

View file

@ -10,7 +10,7 @@ pub fn cmds() -> impl IntoIterator<Item = Command> {
let reproxy = ("reproxy", ["rp", "crimes", "crime"]); let reproxy = ("reproxy", ["rp", "crimes", "crime"]);
let edit = ("edit", ["e"]); let edit = ("edit", ["e"]);
let new_content_param = Remainder(("new_content", OpaqueString)); let new_content_param = Optional(Remainder(("new_content", OpaqueString)));
let apply_edit = |cmd: Command| { let apply_edit = |cmd: Command| {
cmd.flag(("append", ["a"])) cmd.flag(("append", ["a"]))
.flag(("prepend", ["p"])) .flag(("prepend", ["p"]))