Add stop-wards logic

This commit is contained in:
AB
2021-08-29 13:34:17 +03:00
parent 0831e3f503
commit 04220703a3
3 changed files with 25 additions and 2 deletions

View File

@ -328,7 +328,7 @@ impl Execute for Markov {
let mut sentences = chain.generate();
let mut msg = String::new();
for _ in 1..rand::thread_rng().gen_range(2, 10) {
msg = format!("{} {}", msg, sentences.pop().unwrap());
msg = format!("{} {}", msg, sentences.pop().unwrap_or(" ".into()));
}
match api
.send(message.text_reply(msg.trim()).parse_mode(ParseMode::Html))

View File

@ -34,6 +34,25 @@ pub(crate) fn update_scheme() -> Result<()> {
Ok(())
}
pub(crate) fn load_stopwords() -> Result<()> {
let conn = open()?;
for table in include_str!("../assets/stop-words.txt").split('\n').into_iter() {
let word = table.trim();
if word != "" {
let mut stmt = conn.prepare_cached(
"
INSERT OR IGNORE INTO
stop_words('word')
VALUES (:word)
",
)?.insert(params![word]);
//let mut rows = stmt.word(named_params! {":conf_id": conf_id})?;
}
}
info!("Stop words updated.");
Ok(())
}
pub(crate) fn get_user(id: telegram_bot::UserId) -> Result<telegram_bot::User, errors::Error> {
let conn = open()?;
let mut stmt = conn.prepare_cached(
@ -447,7 +466,7 @@ pub(crate) async fn add_sentence(
Err(e) => panic!("SQLITE3 Error: Relations failed: {:?}", e),
}
}
Err(_) => debug!("Word {} is in stop list.", &word.lex[0].lex),
Err(_) => debug!("Word {} is in a stop list.", &word.lex[0].lex),
}
}
conn.execute("END TRANSACTION", params![]);

View File

@ -28,6 +28,10 @@ async fn main() -> Result<(), errors::Error> {
Ok(_) => {}
Err(e) => panic!("Database error: {:?}", e),
}
match db::load_stopwords() {
Ok(_) => {}
Err(e) => panic!("Database error: {:?}", e),
}
let token = match env::var("TELEGRAM_BOT_TOKEN") {
Ok(token) => token,
Err(_) => {