async-matrixSourceAsyncMatrixBridgeDiscordDBMessage

class Message

Maps a Discord message to one or more Matrix events.

A single Discord message may produce multiple Matrix events (one per attachment), distinguished by discord_attachment_id. The composite unique index on (discord_id, discord_attachment_id, discord_channel_id, discord_channel_receiver) ensures no duplicates.

msg = Message.create( discord_id: "msg1", discord_channel_id: "ch1", discord_sender: "user1", mxid: "$evt1", timestamp: 1234567890 ) msg.portal # => Portal

Definitions

def self.by_discord_id(discord_id, channel_id, receiver = "")

Find all parts of a Discord message (text + attachments).

Implementation

def self.by_discord_id(discord_id, channel_id, receiver = "")
  where(
    discord_id: discord_id,
    discord_channel_id: channel_id,
    discord_channel_receiver: receiver
  ).order(:discord_attachment_id).all
end

def self.by_mxid(mxid)

Find a message by its Matrix event ID.

Implementation

def self.by_mxid(mxid)
  first(mxid: mxid)
end