fix message edit embed, ignore pk;edit triggers
This commit is contained in:
parent
8231c57bdf
commit
7ea945b427
6 changed files with 63 additions and 15 deletions
|
|
@ -20,7 +20,8 @@ public class MessageUpdateResponder(
|
|||
ChannelCacheService channelCache,
|
||||
UserCacheService userCache,
|
||||
MessageRepository messageRepository,
|
||||
WebhookExecutorService webhookExecutor) : IResponder<IMessageUpdate>
|
||||
WebhookExecutorService webhookExecutor,
|
||||
PluralkitApiService pluralkitApi) : IResponder<IMessageUpdate>
|
||||
{
|
||||
private readonly ILogger _logger = logger.ForContext<MessageUpdateResponder>();
|
||||
|
||||
|
|
@ -76,8 +77,7 @@ public class MessageUpdateResponder(
|
|||
.WithFooter($"ID: {msg.ID}")
|
||||
.WithTimestamp(msg.ID.Timestamp);
|
||||
|
||||
var fields = Enumerable.Range(0, msg.Content.Length / 1000)
|
||||
.Select(i => msg.Content.Substring(i * 1000, 1000))
|
||||
var fields = ChunksUpTo(msg.Content, 1000)
|
||||
.Select<string, IEmbedField>((s, i) =>
|
||||
new EmbedField($"New content{(i != 0 ? " (cont.)" : "")}", s, false))
|
||||
.ToList();
|
||||
|
|
@ -110,7 +110,16 @@ public class MessageUpdateResponder(
|
|||
}
|
||||
finally
|
||||
{
|
||||
await messageRepository.UpdateMessageAsync(msg, ct);
|
||||
if (!await messageRepository.UpdateMessageAsync(msg, ct) && msg.ApplicationID.Is(DiscordUtils.PkUserId))
|
||||
{
|
||||
_logger.Debug(
|
||||
"Message {MessageId} wasn't stored yet and was proxied by PluralKit, fetching proxy information from its API",
|
||||
msg.ID);
|
||||
var pkMsg = await pluralkitApi.GetPluralKitMessageAsync(msg.ID.Value, ct);
|
||||
if (pkMsg != null)
|
||||
await messageRepository.SetProxiedMessageDataAsync(msg.ID.Value, pkMsg.Original, pkMsg.Sender,
|
||||
pkMsg.System?.Id, pkMsg.Member?.Id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -122,4 +131,10 @@ public class MessageUpdateResponder(
|
|||
evt.WebhookID, evt.Type.GetOrThrow(), evt.Activity, evt.Application, evt.ApplicationID, evt.MessageReference,
|
||||
evt.Flags, evt.ReferencedMessage, evt.Interaction, evt.Thread, evt.Components, evt.StickerItems, evt.Position,
|
||||
evt.Resolved, evt.InteractionMetadata, evt.Poll);
|
||||
|
||||
private static IEnumerable<string> ChunksUpTo(string str, int maxChunkSize)
|
||||
{
|
||||
for (var i = 0; i < str.Length; i += maxChunkSize)
|
||||
yield return str.Substring(i, Math.Min(maxChunkSize, str.Length - i));
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue