1
Fork 0
mirror of https://github.com/Steffo99/patched-porobot.git synced 2024-12-23 01:54:22 +00:00

Move the main function to patched_porobot::telegram::main

This commit is contained in:
Steffo 2022-08-13 04:10:25 +00:00 committed by GitHub
parent 39162a9506
commit 5b7947028f
Signed by: github
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 72 additions and 65 deletions

View file

@ -77,73 +77,9 @@
#![doc(html_logo_url = "https://raw.githubusercontent.com/Steffo99/patched-porobot/main/icon.png")] #![doc(html_logo_url = "https://raw.githubusercontent.com/Steffo99/patched-porobot/main/icon.png")]
use std::path::PathBuf;
use log::*;
use patched_porobot::data::setbundle::card::{Card, CardIndex};
use patched_porobot::data::corebundle::CoreBundle;
use patched_porobot::data::setbundle::SetBundle;
use patched_porobot::data::corebundle::globals::LocalizedGlobalsIndexes;
use patched_porobot::search::cardsearch::CardSearchEngine;
use patched_porobot::telegram::handler::{inline_query_handler, message_handler};
use teloxide::prelude::*;
#[doc(hidden)] #[doc(hidden)]
#[tokio::main] #[tokio::main]
async fn main() { async fn main() {
pretty_env_logger::init(); patched_porobot::telegram::main::main().await;
debug!("Logger initialized successfully!");
debug!("Loading bundles...");
let core = CoreBundle::load(&*PathBuf::from("./data/core-en_us")).expect("to be able to load `core-en_us` bundle");
let set1 = SetBundle::load(&*PathBuf::from("./data/set1-en_us")).expect("to be able to load `set1-en_us` bundle");
let set2 = SetBundle::load(&*PathBuf::from("./data/set2-en_us")).expect("to be able to load `set2-en_us` bundle");
let set3 = SetBundle::load(&*PathBuf::from("./data/set3-en_us")).expect("to be able to load `set3-en_us` bundle");
let set4 = SetBundle::load(&*PathBuf::from("./data/set4-en_us")).expect("to be able to load `set4-en_us` bundle");
let set5 = SetBundle::load(&*PathBuf::from("./data/set5-en_us")).expect("to be able to load `set5-en_us` bundle");
let set6 = SetBundle::load(&*PathBuf::from("./data/set6-en_us")).expect("to be able to load `set6-en_us` bundle");
debug!("Loaded all bundles!");
debug!("Indexing globals...");
let globals = LocalizedGlobalsIndexes::from(core.globals);
debug!("Indexed globals!");
debug!("Indexing cards...");
let cards: Vec<Card> = [
set1.cards,
set2.cards,
set3.cards,
set4.cards,
set5.cards,
set6.cards
].concat();
let mut index = CardIndex::new();
for card in cards {
index.insert(card.code.clone(), card);
}
let cards = index;
debug!("Indexed cards!");
debug!("Creating search engine...");
let engine = CardSearchEngine::new(globals, cards);
debug!("Created search engine!");
debug!("Creating Telegram bot with parameters from the environment...");
let bot = Bot::from_env();
let me = bot.get_me().send().await.expect("Telegram bot parameters to be valid");
debug!("Created Telegram bot!");
debug!("Creating handlers...");
let handler = dptree::entry()
.branch(inline_query_handler(engine))
.branch(message_handler());
debug!("Created handlers!");
info!("@{} is ready!", &me.username.as_ref().expect("bot to have an username"));
Dispatcher::builder(bot, handler)
.enable_ctrlc_handler()
.build()
.dispatch()
.await;
} }

70
src/telegram/main.rs Normal file
View file

@ -0,0 +1,70 @@
//! This module defines the [`main`] function for [`patched_porobot_telegram`].
use std::path::PathBuf;
use log::*;
use crate::data::setbundle::card::{Card, CardIndex};
use crate::data::corebundle::CoreBundle;
use crate::data::setbundle::SetBundle;
use crate::data::corebundle::globals::LocalizedGlobalsIndexes;
use crate::search::cardsearch::CardSearchEngine;
use crate::telegram::handler::{inline_query_handler, message_handler};
use teloxide::prelude::*;
/// The main function that [`patched_porobot_telegram`] should run when it's started.
pub async fn main() {
pretty_env_logger::init();
debug!("Logger initialized successfully!");
debug!("Loading bundles...");
let core = CoreBundle::load(&*PathBuf::from("./data/core-en_us")).expect("to be able to load `core-en_us` bundle");
let set1 = SetBundle::load(&*PathBuf::from("./data/set1-en_us")).expect("to be able to load `set1-en_us` bundle");
let set2 = SetBundle::load(&*PathBuf::from("./data/set2-en_us")).expect("to be able to load `set2-en_us` bundle");
let set3 = SetBundle::load(&*PathBuf::from("./data/set3-en_us")).expect("to be able to load `set3-en_us` bundle");
let set4 = SetBundle::load(&*PathBuf::from("./data/set4-en_us")).expect("to be able to load `set4-en_us` bundle");
let set5 = SetBundle::load(&*PathBuf::from("./data/set5-en_us")).expect("to be able to load `set5-en_us` bundle");
let set6 = SetBundle::load(&*PathBuf::from("./data/set6-en_us")).expect("to be able to load `set6-en_us` bundle");
debug!("Loaded all bundles!");
debug!("Indexing globals...");
let globals = LocalizedGlobalsIndexes::from(core.globals);
debug!("Indexed globals!");
debug!("Indexing cards...");
let cards: Vec<Card> = [
set1.cards,
set2.cards,
set3.cards,
set4.cards,
set5.cards,
set6.cards
].concat();
let mut index = CardIndex::new();
for card in cards {
index.insert(card.code.clone(), card);
}
let cards = index;
debug!("Indexed cards!");
debug!("Creating search engine...");
let engine = CardSearchEngine::new(globals, cards);
debug!("Created search engine!");
debug!("Creating Telegram bot with parameters from the environment...");
let bot = Bot::from_env();
let me = bot.get_me().send().await.expect("Telegram bot parameters to be valid");
debug!("Created Telegram bot!");
debug!("Creating handlers...");
let handler = dptree::entry()
.branch(inline_query_handler(engine))
.branch(message_handler());
debug!("Created handlers!");
info!("@{} is ready!", &me.username.as_ref().expect("bot to have an username"));
Dispatcher::builder(bot, handler)
.enable_ctrlc_handler()
.build()
.dispatch()
.await;
}

View file

@ -5,3 +5,4 @@
pub mod display; pub mod display;
pub mod inline; pub mod inline;
pub mod handler; pub mod handler;
pub mod main;