mirror of
https://github.com/house-of-vanity/desubot.git
synced 2025-08-21 15:27:14 +00:00
Improve omedeto. Detect feminine by verbs.
This commit is contained in:
@@ -166,7 +166,7 @@ pub(crate) async fn omedeto(api: Api, message: Message, mystem: &mut MyStem) ->
|
|||||||
verbs_p.sort();
|
verbs_p.sort();
|
||||||
verbs_p.dedup();
|
verbs_p.dedup();
|
||||||
verbs_p.shuffle(&mut rand::thread_rng());
|
verbs_p.shuffle(&mut rand::thread_rng());
|
||||||
debug!("Found {} nouns. {:#?}", verbs_p.len(), verbs_p);
|
debug!("Found {} past verbs. {:#?}", verbs_p.len(), verbs_p);
|
||||||
|
|
||||||
let mut verbs_i: Vec<String> = all_msg
|
let mut verbs_i: Vec<String> = all_msg
|
||||||
.clone()
|
.clone()
|
||||||
@@ -200,13 +200,13 @@ pub(crate) async fn omedeto(api: Api, message: Message, mystem: &mut MyStem) ->
|
|||||||
verbs_i.sort();
|
verbs_i.sort();
|
||||||
verbs_i.dedup();
|
verbs_i.dedup();
|
||||||
verbs_i.shuffle(&mut rand::thread_rng());
|
verbs_i.shuffle(&mut rand::thread_rng());
|
||||||
debug!("Found {} nouns. {:#?}", verbs_i.len(), verbs_i);
|
debug!("Found {} inpresent verbs. {:#?}", verbs_i.len(), verbs_i);
|
||||||
|
|
||||||
if nouns.is_empty() {
|
if nouns.is_empty() {
|
||||||
nouns.push(message.from.first_name.to_string());
|
nouns.push(message.from.first_name.to_string());
|
||||||
}
|
}
|
||||||
let start: Vec<String> = vec![
|
let start: Vec<String> = vec![
|
||||||
"С новыйм годом.".into(),
|
"С новым годом".into(),
|
||||||
"С НГ тебя".into(),
|
"С НГ тебя".into(),
|
||||||
"Поздравляю".into(),
|
"Поздравляю".into(),
|
||||||
"Поздравляю с НГ".into(),
|
"Поздравляю с НГ".into(),
|
||||||
@@ -216,27 +216,53 @@ pub(crate) async fn omedeto(api: Api, message: Message, mystem: &mut MyStem) ->
|
|||||||
"[СЕКРЕТНО]".into(),
|
"[СЕКРЕТНО]".into(),
|
||||||
"[НЕТ ДАННЫХ]".into(),
|
"[НЕТ ДАННЫХ]".into(),
|
||||||
"[ОШИБКА ДОСТУПА]".into(),
|
"[ОШИБКА ДОСТУПА]".into(),
|
||||||
"[XXXX]".into(),
|
|
||||||
];
|
];
|
||||||
//debug!("Nouns: {:#?}", nouns);
|
//debug!("Nouns: {:#?}", nouns);
|
||||||
//debug!("Verbs: {:#?}", verbs);
|
//debug!("Verbs: {:#?}", verbs);
|
||||||
|
|
||||||
let fem = {
|
let fem = {
|
||||||
let z = mystem
|
let mut fm = 0;
|
||||||
.stemming(message.from.first_name.to_string())
|
let mut mu = 0;
|
||||||
.unwrap();
|
all_msg
|
||||||
debug!("{:#?}", z);
|
.clone()
|
||||||
if z.is_empty() {
|
.into_iter()
|
||||||
false
|
.filter(|m| re.is_match(m))
|
||||||
} else if z[0].lex.is_empty() {
|
.map(|m| m.split(' ').map(|s| s.to_string()).collect::<Vec<String>>()[1].clone())
|
||||||
false
|
.map(|m| {
|
||||||
|
let stem = mystem.stemming(m.clone()).unwrap_or_default();
|
||||||
|
if stem.is_empty() {
|
||||||
|
()
|
||||||
|
} else if stem[0].lex.is_empty() {
|
||||||
|
()
|
||||||
} else {
|
} else {
|
||||||
z[0].lex[0]
|
match stem[0].lex[0].grammem.part_of_speech {
|
||||||
|
mystem::PartOfSpeech::Verb => {
|
||||||
|
if stem[0].lex[0]
|
||||||
.grammem
|
.grammem
|
||||||
.facts
|
.facts
|
||||||
.contains(&mystem::Fact::Gender(Feminine))
|
.contains(&mystem::Fact::Gender(Feminine)) &&
|
||||||
|
stem[0].lex[0]
|
||||||
|
.grammem
|
||||||
|
.facts
|
||||||
|
.contains(&mystem::Fact::Tense(Past))
|
||||||
|
{
|
||||||
|
fm = fm + 1;
|
||||||
|
} else {
|
||||||
|
mu = mu + 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ => (),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).collect::<()>();
|
||||||
|
debug!("fm - {}, mu - {}", fm, mu);
|
||||||
|
if fm >= mu {
|
||||||
|
true
|
||||||
|
} else {
|
||||||
|
false
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
debug!("Is Feminine - {}", fem);
|
||||||
let result = format!(
|
let result = format!(
|
||||||
"{} {} известн{} как {}, {}, а так же конечно {}. В прошедшем году ты часто давал{} нам знать, что ты {}, {} и {}. Нередко ты говорил{} я {}, я {} или даже я {}. =*",
|
"{} {} известн{} как {}, {}, а так же конечно {}. В прошедшем году ты часто давал{} нам знать, что ты {}, {} и {}. Нередко ты говорил{} я {}, я {} или даже я {}. =*",
|
||||||
start.choose(&mut rand::thread_rng()).unwrap(),
|
start.choose(&mut rand::thread_rng()).unwrap(),
|
||||||
|
@@ -29,7 +29,6 @@ pub async fn handler(
|
|||||||
let cleaned_message = data
|
let cleaned_message = data
|
||||||
.to_string()
|
.to_string()
|
||||||
.replace(&format!("@{}", me.username.unwrap()), "");
|
.replace(&format!("@{}", me.username.unwrap()), "");
|
||||||
debug!("{}", cleaned_message);
|
|
||||||
match cleaned_message.as_str() {
|
match cleaned_message.as_str() {
|
||||||
"/here" => commands::here(api, message).await?,
|
"/here" => commands::here(api, message).await?,
|
||||||
"/top" => commands::top(api, message).await?,
|
"/top" => commands::top(api, message).await?,
|
||||||
|
Reference in New Issue
Block a user