Files
desubot/src/main.rs

47 lines
1.3 KiB
Rust
Raw Normal View History

2020-12-06 23:55:09 +03:00
use std::{env, process};
2020-11-28 17:31:08 +03:00
use futures::StreamExt;
use telegram_bot::*;
2020-12-05 15:57:11 +03:00
#[macro_use]
extern crate log;
use env_logger::Env;
2020-11-28 17:31:08 +03:00
mod commands;
mod db;
2020-11-29 16:23:27 +03:00
mod errors;
2020-12-10 14:46:19 +03:00
mod mystem;
2020-11-29 16:23:27 +03:00
mod utils;
2020-12-10 16:54:39 +03:00
mod handlers;
2020-12-05 15:57:11 +03:00
2020-12-10 16:54:39 +03:00
use mystem::MyStem;
2020-11-28 17:31:08 +03:00
#[tokio::main]
2020-11-29 16:23:27 +03:00
async fn main() -> Result<(), errors::Error> {
2020-12-07 15:55:25 +03:00
env_logger::from_env(Env::default().default_filter_or("info")).init();
2020-12-10 14:46:19 +03:00
let mut mystem = MyStem::new()?;
2020-12-07 15:55:25 +03:00
match db::update_scheme() {
2020-12-07 17:41:12 +03:00
Ok(_) => {}
Err(e) => panic!("Database error: {:?}", e),
2020-12-07 15:55:25 +03:00
}
2020-12-05 15:57:11 +03:00
let token = match env::var("TELEGRAM_BOT_TOKEN") {
Ok(token) => token,
Err(_) => {
error!("TELEGRAM_BOT_TOKEN not set");
process::exit(0x0001);
2020-12-06 23:55:09 +03:00
}
2020-12-05 15:57:11 +03:00
};
let api = Api::new(token.clone());
2020-11-28 17:31:08 +03:00
let mut stream = api.stream();
2020-12-10 16:54:39 +03:00
let me = api.send(GetMe).await?;
info!("GetMe result: Username: {}, First Name: {}, ID {}", me.username.as_ref().unwrap(), me.first_name, me.id);
2020-11-28 17:31:08 +03:00
while let Some(update) = stream.next().await {
let update = update?;
if let UpdateKind::Message(message) = update.kind {
2020-12-05 15:57:11 +03:00
db::add_conf(message.clone()).await?;
2020-12-10 16:54:39 +03:00
db::add_user(message.clone()).await?;
handlers::handler(api.clone(), message, token.clone(), &mut mystem, me.clone()).await?;
2020-11-28 17:31:08 +03:00
}
}
Ok(())
}