revolt_database/util/
funcs.rs

1use crate::Database;
2use revolt_result::Result;
3
4/// Formats a user's name depending on their optional features and location.
5/// Factors in server display names and user display names before falling back to username#discriminator.
6/// Passing a server in which the user is not a member will result in an Err.
7pub async fn format_display_name(
8    db: &Database,
9    user_id: &str,
10    server_id: Option<&str>,
11) -> Result<String> {
12    if let Some(server_id) = server_id {
13        let member = db.fetch_member(server_id, user_id).await?;
14        if let Some(nick) = member.nickname {
15            return Ok(nick);
16        }
17    }
18
19    let user = db.fetch_user(user_id).await?;
20    if let Some(display) = user.display_name {
21        return Ok(display);
22    }
23    Ok(format!("{}#{}", user.username, user.discriminator))
24}