implement variant editing thru Edit state
This commit is contained in:
parent
f86286b1d4
commit
e68ba4b796
30
src/main.rs
30
src/main.rs
@ -70,6 +70,7 @@ pub enum State {
|
|||||||
Start,
|
Start,
|
||||||
Edit {
|
Edit {
|
||||||
literal: String,
|
literal: String,
|
||||||
|
variant: Option<String>,
|
||||||
lang: String,
|
lang: String,
|
||||||
is_caption_set: bool,
|
is_caption_set: bool,
|
||||||
},
|
},
|
||||||
@ -187,6 +188,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
.branch(
|
.branch(
|
||||||
dptree::case![State::Edit {
|
dptree::case![State::Edit {
|
||||||
literal,
|
literal,
|
||||||
|
variant,
|
||||||
lang,
|
lang,
|
||||||
is_caption_set
|
is_caption_set
|
||||||
}]
|
}]
|
||||||
@ -252,6 +254,7 @@ async fn button_edit_callback(
|
|||||||
dialogue
|
dialogue
|
||||||
.update(State::Edit {
|
.update(State::Edit {
|
||||||
literal,
|
literal,
|
||||||
|
variant: None,
|
||||||
lang,
|
lang,
|
||||||
is_caption_set: false,
|
is_caption_set: false,
|
||||||
})
|
})
|
||||||
@ -494,6 +497,7 @@ async fn edit_msg_cmd_handler(
|
|||||||
dialogue
|
dialogue
|
||||||
.update(State::Edit {
|
.update(State::Edit {
|
||||||
literal,
|
literal,
|
||||||
|
variant: None,
|
||||||
lang,
|
lang,
|
||||||
is_caption_set: false,
|
is_caption_set: false,
|
||||||
})
|
})
|
||||||
@ -519,7 +523,7 @@ async fn edit_msg_handler(
|
|||||||
bot: Bot,
|
bot: Bot,
|
||||||
mut db: DB,
|
mut db: DB,
|
||||||
dialogue: BotDialogue,
|
dialogue: BotDialogue,
|
||||||
(literal, lang, is_caption_set): (String, String, bool),
|
(literal, variant, lang, is_caption_set): (String, Option<String>, String, bool),
|
||||||
msg: Message,
|
msg: Message,
|
||||||
) -> BotResult<()> {
|
) -> BotResult<()> {
|
||||||
use teloxide::utils::render::Renderer;
|
use teloxide::utils::render::Renderer;
|
||||||
@ -533,6 +537,28 @@ async fn edit_msg_handler(
|
|||||||
return Ok(());
|
return Ok(());
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if let Some(variant) = variant {
|
||||||
|
if let MediaKind::Text(text) = msg.media_kind {
|
||||||
|
let html_text = Renderer::new(&text.text, &text.entities).as_html();
|
||||||
|
|
||||||
|
db.set_literal_alternative(&literal, &variant, &html_text)
|
||||||
|
.await?;
|
||||||
|
bot.send_message(chat_id, "Updated text of variant!")
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
dialogue.exit().await?;
|
||||||
|
return Ok(());
|
||||||
|
} else {
|
||||||
|
bot.send_message(
|
||||||
|
chat_id,
|
||||||
|
"On variants only text alternating supported. Try to send text only",
|
||||||
|
)
|
||||||
|
.await?;
|
||||||
|
|
||||||
|
return Ok(());
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
match msg.media_kind {
|
match msg.media_kind {
|
||||||
MediaKind::Text(text) => {
|
MediaKind::Text(text) => {
|
||||||
db.drop_media(&literal).await?;
|
db.drop_media(&literal).await?;
|
||||||
@ -584,6 +610,7 @@ async fn edit_msg_handler(
|
|||||||
dialogue
|
dialogue
|
||||||
.update(State::Edit {
|
.update(State::Edit {
|
||||||
literal,
|
literal,
|
||||||
|
variant: None,
|
||||||
lang,
|
lang,
|
||||||
is_caption_set: true,
|
is_caption_set: true,
|
||||||
})
|
})
|
||||||
@ -632,6 +659,7 @@ async fn edit_msg_handler(
|
|||||||
dialogue
|
dialogue
|
||||||
.update(State::Edit {
|
.update(State::Edit {
|
||||||
literal,
|
literal,
|
||||||
|
variant: None,
|
||||||
lang,
|
lang,
|
||||||
is_caption_set: true,
|
is_caption_set: true,
|
||||||
})
|
})
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user