gluon/src/handlers/dice_handler/dice.rs

52 lines
1.6 KiB
Rust
Raw Normal View History

2024-05-30 23:37:47 +03:00
use telers::{
event::{telegram::HandlerResult, EventReturn},
types::{Dice, Message},
Bot,
};
use crate::{
handlers::actions::{ban::ban, mute::mute},
types::{
enums::time_metrics::TimeMetrics,
2024-06-02 01:30:52 +03:00
structs::{handler_entity::HandlerEntity, message_sender::MessageSender},
2024-05-30 23:37:47 +03:00
},
};
const DICE_DELAY_MS: u64 = 4000u64;
const CASINO_DELAY_MS: u64 = 1500u64;
pub async fn dice_handler(bot: Bot, message: Message) -> HandlerResult {
let (chat_id, dice): (i64, Dice) = (message.chat().id(), message.dice().unwrap().clone());
2024-06-02 01:30:52 +03:00
let handler_entity: HandlerEntity = HandlerEntity {
2024-05-30 23:37:47 +03:00
bot_instance: bot,
2024-06-02 01:30:52 +03:00
message_reciever: message,
message_sender_builder: MessageSender::builder(chat_id),
2024-05-30 23:37:47 +03:00
};
let (mute_time, emoji): (TimeMetrics, &str) = (TimeMetrics::Days(dice.value), &dice.emoji);
match emoji {
"🎲" => {
2024-06-02 01:30:52 +03:00
mute(handler_entity, chat_id, (mute_time, DICE_DELAY_MS)).await?;
2024-05-30 23:37:47 +03:00
}
"🎰" => {
if dice.value == 64 {
2024-06-02 01:30:52 +03:00
ban(handler_entity, chat_id, CASINO_DELAY_MS).await?;
2024-05-30 23:37:47 +03:00
} else {
2024-06-02 01:30:52 +03:00
mute(handler_entity, chat_id, (mute_time, CASINO_DELAY_MS)).await?;
2024-05-30 23:37:47 +03:00
}
}
_ => {
2024-06-02 01:30:52 +03:00
handler_entity
.message_sender_builder
2024-05-30 23:37:47 +03:00
.text("Такой эмодзи не имеет привязки к какому либо действию бота.")
2024-06-02 01:30:52 +03:00
.build()
.send(&handler_entity.bot_instance)
2024-05-30 23:37:47 +03:00
.await?;
}
}
Ok(EventReturn::Finish)
}