handlematrix: bridge message edits

This commit is contained in:
Skip R
2026-02-09 14:33:56 -08:00
parent 2ddba507c2
commit 7a6f59ad73
3 changed files with 26 additions and 5 deletions

View File

@@ -65,6 +65,7 @@ var discordCaps = &event.RoomFeatures{
ID: capID(), ID: capID(),
Reply: event.CapLevelFullySupported, Reply: event.CapLevelFullySupported,
Reaction: event.CapLevelFullySupported, Reaction: event.CapLevelFullySupported,
Edit: event.CapLevelFullySupported,
Delete: event.CapLevelFullySupported, Delete: event.CapLevelFullySupported,
Formatting: event.FormattingFeatureMap{ Formatting: event.FormattingFeatureMap{
event.FmtBold: event.CapLevelFullySupported, event.FmtBold: event.CapLevelFullySupported,
@@ -137,7 +138,6 @@ var discordCaps = &event.RoomFeatures{
LocationMessage: event.CapLevelUnsupported, LocationMessage: event.CapLevelUnsupported,
MaxTextLength: MaxTextLength, MaxTextLength: MaxTextLength,
// TODO: Support threads. // TODO: Support threads.
// TODO: Support editing.
} }
func (dc *DiscordClient) GetCapabilities(ctx context.Context, portal *bridgev2.Portal) *event.RoomFeatures { func (dc *DiscordClient) GetCapabilities(ctx context.Context, portal *bridgev2.Portal) *event.RoomFeatures {

View File

@@ -18,6 +18,7 @@ package connector
import ( import (
"context" "context"
"fmt"
"time" "time"
"github.com/bwmarrin/discordgo" "github.com/bwmarrin/discordgo"
@@ -72,8 +73,28 @@ func (d *DiscordClient) HandleMatrixMessage(ctx context.Context, msg *bridgev2.M
} }
func (d *DiscordClient) HandleMatrixEdit(ctx context.Context, msg *bridgev2.MatrixEdit) error { func (d *DiscordClient) HandleMatrixEdit(ctx context.Context, msg *bridgev2.MatrixEdit) error {
//TODO implement me log := zerolog.Ctx(ctx).With().Str("action", "matrix message edit").Logger()
panic("implement me") ctx = log.WithContext(ctx)
content, _ := d.connector.MsgConv.ConvertMatrixMessageContent(
ctx,
msg.Portal,
msg.Content,
// Disregard link previews for now. Discord generally allows you to
// remove individual link previews from a message though.
[]string{},
)
_, err := d.Session.ChannelMessageEdit(
discordid.ParsePortalID(msg.Portal.ID),
discordid.ParseMessageID(msg.EditTarget.ID),
content,
)
if err != nil {
return fmt.Errorf("failed to send message edit to discord: %w", err)
}
return nil
} }
func (d *DiscordClient) PreHandleMatrixReaction(ctx context.Context, reaction *bridgev2.MatrixReaction) (bridgev2.MatrixReactionPreResponse, error) { func (d *DiscordClient) PreHandleMatrixReaction(ctx context.Context, reaction *bridgev2.MatrixReaction) (bridgev2.MatrixReactionPreResponse, error) {

View File

@@ -112,7 +112,7 @@ func (mc *MessageConverter) ToDiscord(
content := msg.Content content := msg.Content
convertMatrix := func() { convertMatrix := func() {
req.Content, req.AllowedMentions = mc.convertMatrixMessageContent(ctx, msg.Portal, content, parseAllowedLinkPreviews(msg.Event.Content.Raw)) req.Content, req.AllowedMentions = mc.ConvertMatrixMessageContent(ctx, msg.Portal, content, parseAllowedLinkPreviews(msg.Event.Content.Raw))
if content.MsgType == event.MsgEmote { if content.MsgType == event.MsgEmote {
req.Content = fmt.Sprintf("_%s_", req.Content) req.Content = fmt.Sprintf("_%s_", req.Content)
} }
@@ -176,7 +176,7 @@ func (mc *MessageConverter) ToDiscord(
return &req, nil return &req, nil
} }
func (mc *MessageConverter) convertMatrixMessageContent(ctx context.Context, portal *bridgev2.Portal, content *event.MessageEventContent, allowedLinkPreviews []string) (string, *discordgo.MessageAllowedMentions) { func (mc *MessageConverter) ConvertMatrixMessageContent(ctx context.Context, portal *bridgev2.Portal, content *event.MessageEventContent, allowedLinkPreviews []string) (string, *discordgo.MessageAllowedMentions) {
allowedMentions := &discordgo.MessageAllowedMentions{ allowedMentions := &discordgo.MessageAllowedMentions{
Parse: []discordgo.AllowedMentionType{}, Parse: []discordgo.AllowedMentionType{},
Users: []string{}, Users: []string{},