5 Commits

Author SHA1 Message Date
AB
789b918bab Add stop-wards logic 2021-08-29 13:35:44 +03:00
AB
66a93e85b8 Add stop-wards logic 2021-08-29 13:35:29 +03:00
AB
e13a2688ab Merge branch 'main' of github.com:house-of-vanity/desubot 2021-08-29 13:34:30 +03:00
AB
04220703a3 Add stop-wards logic 2021-08-29 13:34:17 +03:00
9518ffd69b Rename README to README.md 2021-08-24 13:17:12 +03:00
7 changed files with 455 additions and 4 deletions

1
.gitignore vendored
View File

@ -8,3 +8,4 @@ memory.sqlite3
/.idea /.idea
Cargo.lock Cargo.lock
k8s/k8s-deploy.yaml k8s/k8s-deploy.yaml
/identifier.sqlite

View File

@ -1,6 +1,6 @@
[package] [package]
name = "desubot" name = "desubot"
version = "0.5.7" version = "0.5.8"
authors = ["AB <ab@hexor.ru>"] authors = ["AB <ab@hexor.ru>"]
edition = "2018" edition = "2018"

View File

@ -17,4 +17,4 @@ On Windows it may be placed on working directory. Both Linux and Windows mystem
## License ## License
[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fhouse-of-vanity%2Fdesubot.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fhouse-of-vanity%2Fdesubot?ref=badge_large) [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Fhouse-of-vanity%2Fdesubot.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2Fhouse-of-vanity%2Fdesubot?ref=badge_large)

427
assets/stop-words.txt Normal file
View File

@ -0,0 +1,427 @@
а
в
г
е
ж
и
к
м
о
с
т
у
я
бы
stat
вообще
ThreadTopBot
/stat
во
вы
да
до
ее
ей
ею
её
же
за
из
им
их
ли
мы
на
не
ни
но
ну
нх
об
он
от
по
со
та
те
то
ту
ты
уж
без
был
вам
вас
ваш
вон
вот
все
всю
вся
всё
где
год
два
две
дел
для
его
ему
еще
ещё
или
ими
имя
как
кем
ком
кто
лет
мне
мог
мож
мои
мой
мор
моя
моё
над
нам
нас
наш
нее
ней
нем
нет
нею
неё
них
оба
она
они
оно
под
пор
при
про
раз
сам
сих
так
там
тем
тех
том
тот
тою
три
тут
уже
чем
что
эта
эти
это
эту
алло
буду
будь
бывь
была
были
было
быть
вами
ваша
ваше
ваши
ведь
весь
вниз
всем
всех
всею
года
году
даже
двух
день
если
есть
зато
кого
кому
куда
лишь
люди
мало
меля
меня
мимо
мира
мной
мною
мочь
надо
нами
наша
наше
наши
него
нему
ниже
ними
один
пока
пора
пять
рано
сама
сами
само
саму
свое
свои
свою
себе
себя
семь
стал
суть
твой
твоя
твоё
тебе
тебя
теми
того
тоже
тому
туда
хоть
хотя
чаще
чего
чему
чтоб
чуть
этим
этих
этой
этом
этот
более
будем
будет
будто
будут
вверх
вдали
вдруг
везде
внизу
время
всего
всеми
всему
всюду
давно
даром
долго
друго
занят
затем
зачем
здесь
иметь
какая
какой
когда
кроме
лучше
между
менее
много
могут
может
можно
можхо
назад
низко
нужно
одной
около
опять
очень
перед
позже
после
потом
почти
пятый
разве
рядом
самим
самих
самой
самом
своей
своих
сеаой
снова
собой
собою
такая
также
такие
такое
такой
тобой
тобою
тогда
тысяч
уметь
часто
через
чтобы
шесть
этими
этого
этому
близко
больше
будете
будешь
бывает
важная
важное
важные
важный
вокруг
восемь
всегда
второй
далеко
дальше
девять
десять
должно
другая
другие
других
другое
другой
занята
занято
заняты
значит
именно
иногда
каждая
каждое
каждые
каждый
кругом
меньше
начала
нельзя
нибудь
никуда
ничего
обычно
однако
одного
отсюда
первый
потому
почему
просто
против
раньше
самими
самого
самому
своего
сейчас
сказал
совсем
теперь
только
третий
хорошо
хотеть
хочешь
четыре
шестой
восьмой
впрочем
времени
говорил
говорит
девятый
десятый
кажется
конечно
которая
которой
которые
который
которых
наверху
наконец
недавно
немного
нередко
никогда
однажды
посреди
сегодня
седьмой
сказала
сказать
сколько
слишком
сначала
спасибо
двадцать
довольно
которого
наиболее
недалеко
особенно
отовсюду
двадцатый
миллионов
несколько
прекрасно
процентов
четвертый
двенадцать
непрерывно
пожалуйста
пятнадцать
семнадцать
тринадцать
двенадцатый
одиннадцать
пятнадцатый
семнадцатый
тринадцатый
шестнадцать
восемнадцать
девятнадцать
одиннадцатый
четырнадцать
шестнадцатый
восемнадцатый
девятнадцатый
действительно
четырнадцатый
многочисленная
многочисленное
многочисленные
многочисленный
ага
делать
писать
бот

View File

@ -328,7 +328,7 @@ impl Execute for Markov {
let mut sentences = chain.generate(); let mut sentences = chain.generate();
let mut msg = String::new(); let mut msg = String::new();
for _ in 1..rand::thread_rng().gen_range(2, 10) { 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 match api
.send(message.text_reply(msg.trim()).parse_mode(ParseMode::Html)) .send(message.text_reply(msg.trim()).parse_mode(ParseMode::Html))

View File

@ -34,6 +34,25 @@ pub(crate) fn update_scheme() -> Result<()> {
Ok(()) 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> { pub(crate) fn get_user(id: telegram_bot::UserId) -> Result<telegram_bot::User, errors::Error> {
let conn = open()?; let conn = open()?;
let mut stmt = conn.prepare_cached( 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(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![]); conn.execute("END TRANSACTION", params![]);

View File

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