55
src/bot/handlers/fun/magic_ball.rs
Normal file
55
src/bot/handlers/fun/magic_ball.rs
Normal 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(())
|
||||
}
|
||||
}
|
@ -1,4 +1,5 @@
|
||||
pub mod blyaficator;
|
||||
pub mod greeter;
|
||||
pub mod magic_ball;
|
||||
pub mod repeator;
|
||||
pub mod rotator;
|
||||
|
@ -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;
|
||||
|
Reference in New Issue
Block a user