gongbotrs/src/utils.rs
Akulij 8c2d2425c4 create create_callback_button function
description: utils.rs will have shortcuts for frequently used code
2025-04-30 13:38:57 +03:00

29 lines
694 B
Rust

use serde::{Deserialize, Serialize};
use teloxide::types::InlineKeyboardButton;
use crate::{
db::{callback_info::CallbackInfo, CallDB},
BotResult,
};
pub async fn create_callback_button<C, D>(
literal: &str,
ci: CallbackInfo<C>,
db: &mut D,
) -> BotResult<InlineKeyboardButton>
where
C: Serialize + for<'a> Deserialize<'a> + Send + Sync,
D: CallDB + Send,
{
let text = db
.get_literal_value(literal)
.await?
.unwrap_or("Please, set content of this message".into());
let ci = ci.store(db).await?;
Ok(InlineKeyboardButton::new(
text,
teloxide::types::InlineKeyboardButtonKind::CallbackData(ci.get_id()),
))
}