From 940f7a18ef5733e2b90ad9279b9317da4697d292 Mon Sep 17 00:00:00 2001 From: Pavel Kirilin <win10@list.ru> Date: Sat, 25 Feb 2023 03:39:25 +0400 Subject: [PATCH] Magic ball added. Signed-off-by: Pavel Kirilin <win10@list.ru> --- src/bot/handlers/fun/magic_ball.rs | 55 ++++++++++++++++++++++++++++++ src/bot/handlers/fun/mod.rs | 1 + src/bot/main.rs | 10 +++++- 3 files changed, 65 insertions(+), 1 deletion(-) create mode 100644 src/bot/handlers/fun/magic_ball.rs diff --git a/src/bot/handlers/fun/magic_ball.rs b/src/bot/handlers/fun/magic_ball.rs new file mode 100644 index 0000000..c696d41 --- /dev/null +++ b/src/bot/handlers/fun/magic_ball.rs @@ -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(()) + } +} diff --git a/src/bot/handlers/fun/mod.rs b/src/bot/handlers/fun/mod.rs index 46355f6..c25fcd8 100644 --- a/src/bot/handlers/fun/mod.rs +++ b/src/bot/handlers/fun/mod.rs @@ -1,4 +1,5 @@ pub mod blyaficator; pub mod greeter; +pub mod magic_ball; pub mod repeator; pub mod rotator; diff --git a/src/bot/main.rs b/src/bot/main.rs index 1ea8623..e989f12 100644 --- a/src/bot/main.rs +++ b/src/bot/main.rs @@ -22,7 +22,10 @@ use super::{ help::Help, 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, }, 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(RegexFilter(Regex::new("^[)0]+$")?)) .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; -- GitLab