Use discord name tag colours for bridged messages to matrix
parent
6032bf06d6
commit
19f28da49a
|
@ -25,9 +25,22 @@ struct DiscordHandler {
|
|||
}
|
||||
|
||||
async fn get_message_author(ctx: &Context, message: &Message) -> MessageAuthor {
|
||||
async fn user_tag_color(ctx: &Context, message: &Message) -> Option<String> {
|
||||
Some(
|
||||
message
|
||||
.member(ctx)
|
||||
.await
|
||||
.ok()?
|
||||
.colour(ctx)
|
||||
.await?
|
||||
.hex()
|
||||
.to_ascii_lowercase(),
|
||||
)
|
||||
}
|
||||
|
||||
MessageAuthor {
|
||||
display_name: message
|
||||
.author_nick(&ctx)
|
||||
.author_nick(ctx)
|
||||
.await
|
||||
.unwrap_or_else(|| message.author.name.clone()),
|
||||
avatar_url: message
|
||||
|
@ -35,6 +48,7 @@ async fn get_message_author(ctx: &Context, message: &Message) -> MessageAuthor {
|
|||
.static_avatar_url()
|
||||
.unwrap_or_else(|| message.author.default_avatar_url()),
|
||||
service_name: "discord".to_string(),
|
||||
display_color: user_tag_color(ctx, message).await,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -104,6 +104,7 @@ impl MatrixHandler {
|
|||
.to_string()
|
||||
}),
|
||||
service_name: "matrix".to_string(),
|
||||
display_color: None,
|
||||
})
|
||||
} else {
|
||||
None
|
||||
|
@ -250,10 +251,9 @@ fn generate_html_content(content: &[MessageComponent], author: &MessageAuthor) -
|
|||
format_discord(content)
|
||||
);
|
||||
|
||||
// TODO: Do we want to do something with different users' discord name colors? That could be a neat way
|
||||
// to differentiate people easily without being able to see avatars
|
||||
let html_message = format!(
|
||||
r##"<p><font data-mx-color="#9a9a9a" data-mx-bg-color="#000000">{} <small>({})</small></font>:</p> <p>{}</p>"##,
|
||||
r##"<strong><font data-mx-color="#{}">{} <small>({})</small></font>:</strong> {}"##,
|
||||
author.display_color.as_deref().unwrap_or("ffffff"),
|
||||
&author.display_name,
|
||||
&author.service_name,
|
||||
format_matrix(content),
|
||||
|
|
|
@ -12,6 +12,7 @@ pub struct MessageAuthor {
|
|||
pub display_name: String,
|
||||
pub avatar_url: String,
|
||||
pub service_name: String,
|
||||
pub display_color: Option<String>,
|
||||
}
|
||||
|
||||
pub struct SentMessage {
|
||||
|
|
Loading…
Reference in New Issue