feat: enhance Discord embed with user avatar and author details #2

merged
opened by tsiry-sandratraina.com targeting main from feat/discord-embed
Changed files
+16 -1
crates
jetstream
src
webhook
discord
+1
crates/jetstream/src/repo.rs
··· 116 116 did: did.to_string(), 117 117 display_name: users[0].display_name.clone(), 118 118 handle: users[0].handle.clone(), 119 + avatar_url: users[0].avatar.clone(), 119 120 }, 120 121 track: discord::model::Track { 121 122 title: scrobble_record.title.clone(),
+6 -1
crates/jetstream/src/webhook/discord/mod.rs
··· 10 10 desc.push_str(&format!("\non *{}*", esc(&s.track.album))); 11 11 12 12 DiscordEmbed { 13 - title: s.user.display_name.clone(), 13 + title: String::new(), 14 14 url, 15 15 description: Some(desc), 16 16 timestamp: Some(s.played_at.clone()), ··· 18 18 footer: Some(DiscordFooter { 19 19 text: format!("Rocksky • {}", s.user.handle.clone()), 20 20 }), 21 + author: DiscordAuthor { 22 + name: s.user.display_name.clone(), 23 + url: format!("https://rocksky.app/profile/{}", s.user.handle), 24 + icon_url: s.user.avatar_url.clone(), 25 + }, 21 26 } 22 27 } 23 28
+9
crates/jetstream/src/webhook/discord/model.rs
··· 22 22 pub did: String, 23 23 pub display_name: String, 24 24 pub handle: String, 25 + pub avatar_url: String, 25 26 } 26 27 27 28 #[derive(Debug, Deserialize, Serialize, Clone)] ··· 62 63 pub thumbnail: Option<DiscordThumb>, 63 64 #[serde(skip_serializing_if = "Option::is_none")] 64 65 pub footer: Option<DiscordFooter>, 66 + pub author: DiscordAuthor, 67 + } 68 + 69 + #[derive(Debug, Serialize)] 70 + pub struct DiscordAuthor { 71 + pub name: String, 72 + pub url: String, 73 + pub icon_url: String, 65 74 } 66 75 67 76 #[derive(Debug, Serialize)]