fix: BotFather fingerprint uses all-hex (00000000000000000b0ffa00e000000f)
Old fp contained non-hex chars (o,r) which got stripped by normFP, causing whois lookup failure and bot detection to miss. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -5,7 +5,7 @@
|
||||
|
||||
use crate::state::AppState;
|
||||
|
||||
const BOTFATHER_FP: &str = "0000000000000000botfather00000000";
|
||||
const BOTFATHER_FP: &str = "00000000000000000b0ffa00e000000f";
|
||||
|
||||
/// Check if a message is destined for BotFather and handle it.
|
||||
/// Called from deliver_or_queue when the recipient is the BotFather fingerprint.
|
||||
|
||||
@@ -60,7 +60,7 @@ async fn main() -> anyhow::Result<()> {
|
||||
tracing::info!("Bot API enabled");
|
||||
|
||||
// Auto-create BotFather if it doesn't exist
|
||||
let botfather_fp = "0000000000000000botfather00000000";
|
||||
let botfather_fp = "00000000000000000b0ffa00e000000f";
|
||||
let botfather_key = format!("bot_fp:{}", botfather_fp);
|
||||
if state.db.tokens.get(botfather_key.as_bytes()).ok().flatten().is_none() {
|
||||
let token = format!("botfather:{}", hex::encode(rand::random::<[u8; 16]>()));
|
||||
|
||||
@@ -258,7 +258,7 @@ async fn register_bot(
|
||||
// Only BotFather can register bots
|
||||
// Require botfather_token field matching the stored BotFather token
|
||||
if let Some(ref bf_token) = req.botfather_token {
|
||||
let botfather_fp = "0000000000000000botfather00000000";
|
||||
let botfather_fp = "00000000000000000b0ffa00e000000f";
|
||||
let bf_key = format!("bot_fp:{}", botfather_fp);
|
||||
let stored_token = state.db.tokens.get(bf_key.as_bytes())
|
||||
.ok().flatten()
|
||||
|
||||
@@ -174,7 +174,7 @@ impl AppState {
|
||||
/// Returns true if delivered instantly (local or remote).
|
||||
pub async fn deliver_or_queue(&self, to_fp: &str, message: &[u8]) -> bool {
|
||||
// BotFather: intercept messages to @botfather
|
||||
if self.bots_enabled && to_fp == "0000000000000000botfather00000000" {
|
||||
if self.bots_enabled && to_fp == "00000000000000000b0ffa00e000000f" {
|
||||
// Extract sender from message
|
||||
if let Ok(msg) = serde_json::from_slice::<serde_json::Value>(message) {
|
||||
let from = msg.get("from").and_then(|v| v.as_str()).unwrap_or("");
|
||||
|
||||
Reference in New Issue
Block a user