gluon/src/main.rs

122 lines
3.2 KiB
Rust
Raw Normal View History

2024-05-30 23:37:47 +03:00
use dotenvy::dotenv;
2024-05-30 23:37:47 +03:00
use telers::{
enums::ContentType,
event::ToServiceProvider,
filters::{content_type::ContentType as CT, Command},
2024-07-08 08:51:04 +03:00
types::Message,
2024-05-30 23:37:47 +03:00
Bot, Dispatcher, Router,
};
mod assets;
2024-05-30 23:37:47 +03:00
mod middlewares;
mod types;
mod utils;
use middlewares::admin_check_middleware::AdminCheck;
2024-07-08 08:51:04 +03:00
use assets::files::{HELP_COMMAND_TEXT, PRIVACY_COMMAND_TEXT};
2024-05-30 23:37:47 +03:00
mod handlers;
use handlers::{
2024-07-08 08:51:04 +03:00
command_handlers::{
info_commands_template::send_info, mute_command::mute, unmute_command::unmute,
},
2024-05-30 23:37:47 +03:00
dice_handler::dice::dice_handler,
};
#[cfg(debug_assertions)]
fn logs() {
use tracing_subscriber::{fmt, layer::SubscriberExt, util::SubscriberInitExt as _, EnvFilter};
2024-05-30 23:37:47 +03:00
tracing_subscriber::registry()
.with(fmt::layer())
.with(EnvFilter::from_env("RUST_LOG"))
.init();
}
#[cfg(not(debug_assertions))]
fn logs() {
println!(
"
Logs is able in only debug mode. Start bot with command \"cargo run\"\n
Логи доступны только в режиме дебаг. Запустите бота командой \"cargo run\".
"
);
}
#[tokio::main]
async fn main() {
logs();
2024-05-30 23:37:47 +03:00
dotenv().ok();
let token_result = dotenvy::var("TOKEN");
match token_result {
Ok(token) => {
let bot = Bot::new(token);
let mut route = Router::new("main");
let mut dice = Router::new("dice");
dice.message
.register(dice_handler)
.filter(CT::one(ContentType::Dice));
dice.message.inner_middlewares.register(AdminCheck {});
let mut command = Router::new("commands");
let mut admin_commands = Router::new("admin_commands");
let mut default_commands = Router::new("default_commands");
2024-07-08 08:51:04 +03:00
let help =
|bot: Bot, msg: Message| async { send_info(bot, msg, HELP_COMMAND_TEXT).await };
let privacy =
|bot: Bot, msg: Message| async { send_info(bot, msg, PRIVACY_COMMAND_TEXT).await };
default_commands
.message
.register(help)
.filter(Command::one("help"));
default_commands
.message
.register(privacy)
.filter(Command::one("privacy"));
2024-05-30 23:37:47 +03:00
admin_commands
.message
.register(unmute)
2024-05-30 23:37:47 +03:00
.filter(Command::one("unmute"));
admin_commands
.message
.register(mute)
.filter(Command::one("mute"));
2024-05-30 23:37:47 +03:00
admin_commands
.message
.inner_middlewares
.register(AdminCheck {});
command.include(admin_commands).include(default_commands);
2024-06-05 13:21:12 +03:00
route.include(command);
route.include(dice);
2024-05-30 23:37:47 +03:00
let dispatcher = Dispatcher::builder().main_router(route).bot(bot).build();
dispatcher
.to_service_provider_default()
.unwrap()
.run_polling()
.await
.unwrap();
}
Err(error) => {
println!("Error text: {:?}", error);
}
}
}