Add support for MSC-4144: Per-Message Profiles #82
1 changed files with 16 additions and 3 deletions
|
|
@ -62,7 +62,20 @@ async function _interact({guild_id, data}, {api}) {
|
||||||
.sort((a, b) => webGuild._getPosition(a, discord.channels) - webGuild._getPosition(b, discord.channels))
|
.sort((a, b) => webGuild._getPosition(a, discord.channels) - webGuild._getPosition(b, discord.channels))
|
||||||
.filter(channel => from("channel_room").join("member_cache", "room_id").select("mxid").where({channel_id: channel.id, mxid: event.sender}).get())
|
.filter(channel => from("channel_room").join("member_cache", "room_id").select("mxid").where({channel_id: channel.id, mxid: event.sender}).get())
|
||||||
const matrixMember = select("member_cache", ["displayname", "avatar_url"], {room_id: message.room_id, mxid: event.sender}).get()
|
const matrixMember = select("member_cache", ["displayname", "avatar_url"], {room_id: message.room_id, mxid: event.sender}).get()
|
||||||
const name = matrixMember?.displayname || event.sender
|
// Check for per-message profile
|
||||||
|
const perMessageProfile = event.content?.["com.beeper.per_message_profile"]
|
||||||
|
let name = matrixMember?.displayname || event.sender
|
||||||
|
let avatar = utils.getPublicUrlForMxc(matrixMember?.avatar_url)
|
||||||
|
let profileNote = ""
|
||||||
|
if (perMessageProfile) {
|
||||||
|
if (perMessageProfile.displayname) {
|
||||||
|
name = perMessageProfile.displayname
|
||||||
|
}
|
||||||
|
if ("avatar_url" in perMessageProfile) {
|
||||||
|
avatar = perMessageProfile.avatar_url ? utils.getPublicUrlForMxc(perMessageProfile.avatar_url) : undefined
|
||||||
|
}
|
||||||
|
profileNote = " (sent with a per-message profile)"
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
type: DiscordTypes.InteractionResponseType.ChannelMessageWithSource,
|
type: DiscordTypes.InteractionResponseType.ChannelMessageWithSource,
|
||||||
data: {
|
data: {
|
||||||
|
|
@ -70,9 +83,9 @@ async function _interact({guild_id, data}, {api}) {
|
||||||
author: {
|
author: {
|
||||||
name,
|
name,
|
||||||
url: `https://matrix.to/#/${event.sender}`,
|
url: `https://matrix.to/#/${event.sender}`,
|
||||||
icon_url: utils.getPublicUrlForMxc(matrixMember?.avatar_url)
|
icon_url: avatar
|
||||||
},
|
},
|
||||||
description: `This Matrix message was delivered to Discord by **Out Of Your Element**.\n[View on Matrix →](<https://matrix.to/#/${message.room_id}/${message.event_id}?${via}>)\n\n**User ID**: [${event.sender}](<https://matrix.to/#/${event.sender}>)`,
|
description: `This Matrix message was delivered to Discord by **Out Of Your Element**${profileNote}.\n[View on Matrix →](<https://matrix.to/#/${message.room_id}/${message.event_id}?${via}>)\n\n**User ID**: [${event.sender}](<https://matrix.to/#/${event.sender}>)`,
|
||||||
color: 0x0dbd8b,
|
color: 0x0dbd8b,
|
||||||
fields: [{
|
fields: [{
|
||||||
name: "In Channels",
|
name: "In Channels",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue