Compare commits
No commits in common. "4277fc5523228cefc27a7c3f0e5dc3a9640aed89" and "c371f81008bfe3f88e18c86d50834aa62cb4b051" have entirely different histories.
4277fc5523
...
c371f81008
@ -103,7 +103,6 @@ pub struct Message {
|
|||||||
pub chat_id: i64,
|
pub chat_id: i64,
|
||||||
pub message_id: i64,
|
pub message_id: i64,
|
||||||
pub token: String,
|
pub token: String,
|
||||||
pub variant: Option<String>,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Serialize, Deserialize)]
|
#[derive(Serialize, Deserialize)]
|
||||||
@ -300,32 +299,6 @@ pub trait CallDB {
|
|||||||
Ok(())
|
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>> {
|
async fn get_literal(&mut self, literal: &str) -> DbResult<Option<Literal>> {
|
||||||
let db = self.get_database().await;
|
let db = self.get_database().await;
|
||||||
let messages = db.collection::<Literal>("literals");
|
let messages = db.collection::<Literal>("literals");
|
||||||
|
|||||||
54
src/main.rs
54
src/main.rs
@ -777,29 +777,17 @@ async fn answer_message_varianted<RM: Into<ReplyMarkup>>(
|
|||||||
variant: Option<&str>,
|
variant: Option<&str>,
|
||||||
keyboard: Option<RM>,
|
keyboard: Option<RM>,
|
||||||
) -> BotResult<()> {
|
) -> BotResult<()> {
|
||||||
answer_message_varianted_silence_flag(bot, chat_id, db, literal, variant, false, keyboard).await
|
let variant = match variant {
|
||||||
}
|
|
||||||
|
|
||||||
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 {
|
|
||||||
Some(variant) => {
|
Some(variant) => {
|
||||||
let value = db.get_literal_alternative_value(literal, variant).await?;
|
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;
|
notify_admin(&format!("variant {variant} for literal {literal} is not found! falling back to just literal")).await;
|
||||||
}
|
}
|
||||||
value
|
value
|
||||||
}
|
}
|
||||||
None => None,
|
None => None,
|
||||||
};
|
};
|
||||||
let text = match variant_text {
|
let text = match variant {
|
||||||
Some(text) => text,
|
Some(text) => text,
|
||||||
None => db
|
None => db
|
||||||
.get_literal_value(literal)
|
.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)
|
(msg[0].chat.id.0, msg[0].id.0)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
match variant {
|
db.set_message_literal(chat_id, msg_id, literal).await?;
|
||||||
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?,
|
|
||||||
};
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -937,21 +919,10 @@ async fn replace_message(
|
|||||||
literal: &str,
|
literal: &str,
|
||||||
keyboard: Option<InlineKeyboardMarkup>,
|
keyboard: Option<InlineKeyboardMarkup>,
|
||||||
) -> BotResult<()> {
|
) -> BotResult<()> {
|
||||||
let variant = db
|
let text = db
|
||||||
.get_message(chat_id, message_id)
|
.get_literal_value(literal)
|
||||||
.await?
|
.await?
|
||||||
.and_then(|m| m.variant);
|
.unwrap_or("Please, set content of this message".into());
|
||||||
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()),
|
|
||||||
};
|
|
||||||
let media = db.get_media(literal).await?;
|
let media = db.get_media(literal).await?;
|
||||||
let (chat_id, msg_id) = match media.len() {
|
let (chat_id, msg_id) = match media.len() {
|
||||||
// just a text
|
// just a text
|
||||||
@ -971,16 +942,7 @@ async fn replace_message(
|
|||||||
{
|
{
|
||||||
// fallback to sending message
|
// fallback to sending message
|
||||||
warn!("Fallback into sending message instead of editing because it contains media");
|
warn!("Fallback into sending message instead of editing because it contains media");
|
||||||
return answer_message_varianted_silence_flag(
|
return answer_message(bot, chat_id, db, literal, keyboard).await;
|
||||||
bot,
|
|
||||||
chat_id,
|
|
||||||
db,
|
|
||||||
literal,
|
|
||||||
variant.as_deref(),
|
|
||||||
true,
|
|
||||||
keyboard,
|
|
||||||
)
|
|
||||||
.await;
|
|
||||||
}
|
}
|
||||||
Err(err) => return Err(err.into()),
|
Err(err) => return Err(err.into()),
|
||||||
};
|
};
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user