mirror of
https://github.com/PluralKit/PluralKit.git
synced 2026-02-04 04:56:49 +00:00
36 lines
No EOL
1.1 KiB
C#
36 lines
No EOL
1.1 KiB
C#
using System.Text.RegularExpressions;
|
|
|
|
using Myriad.Types;
|
|
|
|
namespace PluralKit.Bot;
|
|
|
|
public static class ContextArgumentsExt
|
|
{
|
|
public static (ulong? messageId, ulong? channelId) GetRepliedTo(this Context ctx)
|
|
{
|
|
if (ctx.Message.Type == Message.MessageType.Reply && ctx.Message.MessageReference?.MessageId != null)
|
|
return (ctx.Message.MessageReference.MessageId, ctx.Message.MessageReference.ChannelId);
|
|
return (null, null);
|
|
}
|
|
|
|
public static (ulong? messageId, ulong? channelId) ParseMessage(this Context ctx, string maybeMessageRef, bool parseRawMessageId)
|
|
{
|
|
if (parseRawMessageId && ulong.TryParse(maybeMessageRef, out var mid))
|
|
return (mid, null);
|
|
|
|
var match = Regex.Match(maybeMessageRef, "https://(?:\\w+.)?discord(?:app)?.com/channels/\\d+/(\\d+)/(\\d+)");
|
|
if (!match.Success)
|
|
return (null, null);
|
|
|
|
var channelId = ulong.Parse(match.Groups[1].Value);
|
|
var messageId = ulong.Parse(match.Groups[2].Value);
|
|
return (messageId, channelId);
|
|
}
|
|
}
|
|
|
|
public enum ReplyFormat
|
|
{
|
|
Standard,
|
|
Raw,
|
|
Plaintext
|
|
} |