Magic ball added.

Signed-off-by: Pavel Kirilin <win10@list.ru>
This commit is contained in:
2023-02-25 03:39:25 +04:00
parent 27906a1684
commit 940f7a18ef
3 changed files with 65 additions and 1 deletions

View File

@ -0,0 +1,55 @@
use grammers_client::{Client, InputMessage, Update};
use rand::seq::SliceRandom;
use crate::{bot::handlers::Handler, utils::messages::get_message};
lazy_static::lazy_static! {
static ref ANSWERS: &'static [&'static str] = &[
// Negatives
"Сегодня явно не твой день, хуилка.",
"Попробуй позднее, дядь. Сегодня явно не стоит.",
"Нет, точно нет.",
"Как бы подумали твои родители об этом?",
"А лучше идей не было?",
"И как тебе после таких вопросов? Конечно такое не сбудется.",
// Positives
"Да, сто проц.",
"Говно вопрос. Всё по кайфу будет, ежжи.",
"Киркоров как-то говорил: \"Если хочешь идти - иди\"",
"Астрологи обявили неделю, которая благоволит тебе. Всё будет как ты хочешь.",
"Татарская народная мудрость гласит: Есть душа — есть и надежда.",
"Сегодня ты явно в ударе. Однозначно повезёт.",
"Магистр йода считает что тебе повезёт.",
// Questionalbles
"Настолько мутный движ, что я даже не знаю повезёт ли.",
"Такие вещи ты должен решать сам, дядь. Или попробуй ещё раз.",
];
}
#[derive(Clone)]
pub struct MagicBall;
#[async_trait::async_trait]
impl Handler for MagicBall {
async fn react(&self, _: &Client, update: &Update) -> anyhow::Result<()> {
let Some(message) = get_message(update) else {
return Ok(());
};
// If empty message passed.
if message.text().strip_prefix(".mb").map_or("", str::trim) == "" {
message
.reply(InputMessage::text(
"Нужно спросить вопрос. Пустые строки не канают.",
))
.await?;
return Ok(());
}
message
.reply(
InputMessage::text(ANSWERS.choose(&mut rand::rngs::OsRng).copied().unwrap())
.silent(true),
)
.await?;
Ok(())
}
}

View File

@ -1,4 +1,5 @@
pub mod blyaficator; pub mod blyaficator;
pub mod greeter; pub mod greeter;
pub mod magic_ball;
pub mod repeator; pub mod repeator;
pub mod rotator; pub mod rotator;

View File

@ -22,7 +22,10 @@ use super::{
help::Help, help::Help,
weather_forecaster::WeatherForecaster, weather_forecaster::WeatherForecaster,
}, },
fun::{blyaficator::Blyaficator, greeter::Greeter, repeator::Repeator, rotator::Rotator}, fun::{
blyaficator::Blyaficator, greeter::Greeter, magic_ball::MagicBall, repeator::Repeator,
rotator::Rotator,
},
Handler, Handler,
}, },
middlewares::members_count::MembersCount, middlewares::members_count::MembersCount,
@ -139,6 +142,11 @@ async fn run(args: BotConfig, client: Client) -> anyhow::Result<()> {
.add_filter(ExcludedChatsFilter(vec![me.id()])) .add_filter(ExcludedChatsFilter(vec![me.id()]))
.add_filter(RegexFilter(Regex::new("^[)0]+$")?)) .add_filter(RegexFilter(Regex::new("^[)0]+$")?))
.add_middleware::<MembersCount<100>>(), .add_middleware::<MembersCount<100>>(),
// The magic balls.
FilteredHandler::new(MagicBall)
.add_filter(UpdateTypeFilter(&[UpdateType::New]))
.add_filter(SilentFilter)
.add_filter(TextFilter(&[".mb"], TextMatchMethod::IStartsWith)),
]; ];
let mut errors_count = 0; let mut errors_count = 0;