Documentation Index
Fetch the complete documentation index at: https://whatsapp-rust.jlucaso.com/llms.txt
Use this file to discover all available pages before exploring further.
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