Compare commits

..

No commits in common. "4277fc5523228cefc27a7c3f0e5dc3a9640aed89" and "c371f81008bfe3f88e18c86d50834aa62cb4b051" have entirely different histories.

2 changed files with 8 additions and 73 deletions

View File

@ -103,7 +103,6 @@ pub struct Message {
pub chat_id: i64,
pub message_id: i64,
pub token: String,
pub variant: Option<String>,
}
#[derive(Serialize, Deserialize)]
@ -300,32 +299,6 @@ pub trait CallDB {
Ok(())
}
async fn set_message_literal_variant(
&mut self,
chatid: i64,
messageid: i32,
literal: &str,
variant: &str,
) -> DbResult<()> {
let db = self.get_database().await;
let messages = db.collection::<Message>("messages");
messages
.update_one(
doc! {
"chat_id": chatid,
"message_id": messageid as i64
},
doc! {
"$set": { "token": literal, "variant": variant }
},
)
.upsert(true)
.await?;
Ok(())
}
async fn get_literal(&mut self, literal: &str) -> DbResult<Option<Literal>> {
let db = self.get_database().await;
let messages = db.collection::<Literal>("literals");

View File

@ -777,29 +777,17 @@ async fn answer_message_varianted<RM: Into<ReplyMarkup>>(
variant: Option<&str>,
keyboard: Option<RM>,
) -> BotResult<()> {
answer_message_varianted_silence_flag(bot, chat_id, db, literal, variant, false, keyboard).await
}
async fn answer_message_varianted_silence_flag<RM: Into<ReplyMarkup>>(
bot: &Bot,
chat_id: i64,
db: &mut DB,
literal: &str,
variant: Option<&str>,
silence_non_variant: bool,
keyboard: Option<RM>,
) -> BotResult<()> {
let variant_text = match variant {
let variant = match variant {
Some(variant) => {
let value = db.get_literal_alternative_value(literal, variant).await?;
if value.is_none() && !silence_non_variant {
if value.is_none() {
notify_admin(&format!("variant {variant} for literal {literal} is not found! falling back to just literal")).await;
}
value
}
None => None,
};
let text = match variant_text {
let text = match variant {
Some(text) => text,
None => db
.get_literal_value(literal)
@ -919,13 +907,7 @@ async fn answer_message_varianted_silence_flag<RM: Into<ReplyMarkup>>(
(msg[0].chat.id.0, msg[0].id.0)
}
};
match variant {
Some(variant) => {
db.set_message_literal_variant(chat_id, msg_id, literal, variant)
.await?
}
None => db.set_message_literal(chat_id, msg_id, literal).await?,
};
db.set_message_literal(chat_id, msg_id, literal).await?;
Ok(())
}
@ -937,21 +919,10 @@ async fn replace_message(
literal: &str,
keyboard: Option<InlineKeyboardMarkup>,
) -> BotResult<()> {
let variant = db
.get_message(chat_id, message_id)
let text = db
.get_literal_value(literal)
.await?
.and_then(|m| m.variant);
let variant_text = match variant {
Some(ref variant) => db.get_literal_alternative_value(literal, variant).await?,
None => None,
};
let text = match variant_text {
Some(ref text) => text.to_string(),
None => db
.get_literal_value(literal)
.await?
.unwrap_or("Please, set content of this message".into()),
};
.unwrap_or("Please, set content of this message".into());
let media = db.get_media(literal).await?;
let (chat_id, msg_id) = match media.len() {
// just a text
@ -971,16 +942,7 @@ async fn replace_message(
{
// fallback to sending message
warn!("Fallback into sending message instead of editing because it contains media");
return answer_message_varianted_silence_flag(
bot,
chat_id,
db,
literal,
variant.as_deref(),
true,
keyboard,
)
.await;
return answer_message(bot, chat_id, db, literal, keyboard).await;
}
Err(err) => return Err(err.into()),
};