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 blyaficator;
|
||||||
pub mod greeter;
|
pub mod greeter;
|
||||||
|
pub mod magic_ball;
|
||||||
pub mod repeator;
|
pub mod repeator;
|
||||||
pub mod rotator;
|
pub mod rotator;
|
||||||
|
@ -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;
|
||||||
|
Reference in New Issue
Block a user