From b0fa9f92bd465f5bdea38294f2b02f71e9735f94 Mon Sep 17 00:00:00 2001 From: Siavash Sameni Date: Sun, 29 Mar 2026 12:21:45 +0400 Subject: [PATCH] fix: BotFather stores rec: AliasRecord so resolve_alias finds bot aliases Co-Authored-By: Claude Opus 4.6 (1M context) --- .../crates/warzone-server/src/botfather.rs | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/warzone/crates/warzone-server/src/botfather.rs b/warzone/crates/warzone-server/src/botfather.rs index bdabf61..db48c08 100644 --- a/warzone/crates/warzone-server/src/botfather.rs +++ b/warzone/crates/warzone-server/src/botfather.rs @@ -124,15 +124,17 @@ async fn handle_newbot(state: &AppState, owner_fp: &str, text: &str) -> String { let fp_key = format!("bot_fp:{}", fp); let _ = state.db.tokens.insert(fp_key.as_bytes(), token.as_bytes()); - // Register alias - let _ = state - .db - .aliases - .insert(alias_key.as_bytes(), fp.as_bytes()); - let _ = state - .db - .aliases - .insert(format!("fp:{}", fp).as_bytes(), name_lower.as_bytes()); + // Register alias (all 3 keys needed for resolve_alias to work) + let _ = state.db.aliases.insert(alias_key.as_bytes(), fp.as_bytes()); + let _ = state.db.aliases.insert(format!("fp:{}", fp).as_bytes(), name_lower.as_bytes()); + let alias_record = serde_json::json!({ + "alias": name_lower, + "fingerprint": fp, + "recovery_key": "", + "registered_at": chrono::Utc::now().timestamp(), + "last_active": chrono::Utc::now().timestamp(), + }); + let _ = state.db.aliases.insert(format!("rec:{}", name_lower).as_bytes(), serde_json::to_vec(&alias_record).unwrap_or_default()); tracing::info!( "BotFather: created bot @{} for owner {}",