Skip to main content
The Profile feature provides methods for managing your own account’s display name, status text (about), and profile picture.

Access

Access profile operations through the client:
let profile = client.profile();

Methods

set_push_name

Set your display name (push name).
pub async fn set_push_name(&self, name: &str) -> Result<()>
Parameters:
  • name - The new display name (cannot be empty)
Updates the local device store, sends a presence stanza with the new name, and propagates the change via app state sync for cross-device synchronization. Example:
client.profile().set_push_name("My Bot").await?;
The push name change takes effect immediately via presence, but app state sync may fail if keys aren’t available yet (e.g., right after pairing before initial sync completes).

set_status_text

Set your status text (about).
pub async fn set_status_text(&self, text: &str) -> Result<()>
Parameters:
  • text - The new status text
Sets the profile “About” text. This is different from ephemeral text status updates. Example:
client.profile().set_status_text("Available 24/7").await?;

set_profile_picture

Set your profile picture.
pub async fn set_profile_picture(
    &self,
    image_data: Vec<u8>
) -> Result<SetProfilePictureResponse>
Parameters:
  • image_data - JPEG image bytes
Returns:
  • SetProfilePictureResponse - Contains the new picture ID
The image should already be properly sized/cropped by the caller. WhatsApp typically uses 640x640 images. Example:
use std::fs;

let image_bytes = fs::read("profile.jpg")?;
let response = client.profile().set_profile_picture(image_bytes).await?;
println!("New picture ID: {:?}", response.id);
The image must be a valid JPEG. Other formats are not supported.

remove_profile_picture

Remove your profile picture.
pub async fn remove_profile_picture(&self) -> Result<SetProfilePictureResponse>
Returns:
  • SetProfilePictureResponse - Confirmation of removal
Example:
client.profile().remove_profile_picture().await?;

Types

SetProfilePictureResponse

Response from profile picture operations.
pub struct SetProfilePictureResponse {
    /// The new picture ID (or None if removed)
    pub id: Option<String>,
}

Complete example

use whatsapp_rust::Client;
use std::sync::Arc;
use std::fs;

async fn setup_profile(client: &Arc<Client>) -> anyhow::Result<()> {
    // Set display name
    client.profile().set_push_name("My WhatsApp Bot").await?;
    
    // Set status text
    client.profile().set_status_text("Automated responses").await?;
    
    // Set profile picture
    let image_bytes = fs::read("bot_avatar.jpg")?;
    let response = client.profile().set_profile_picture(image_bytes).await?;
    
    if let Some(id) = response.id {
        println!("Profile picture updated: {}", id);
    }
    
    Ok(())
}

Error handling

All methods return Result<T, anyhow::Error>. Common errors:
  • Empty push name
  • Invalid image format
  • Network errors
  • Not authenticated
match client.profile().set_push_name("").await {
    Ok(_) => println!("Name updated"),
    Err(e) => eprintln!("Failed: {}", e), // "Push name cannot be empty"
}

See also

  • Contacts - Get profile pictures for other users
  • Presence - Set online/offline status