|
@@ -8,7 +8,7 @@ use sheets4::{Sheets, yup_oauth2, hyper_rustls, hyper_util};
|
|
use tera::Tera;
|
|
use tera::Tera;
|
|
|
|
|
|
use poem::listener::TcpListener;
|
|
use poem::listener::TcpListener;
|
|
-use poem::{get, post, Result, Route, Server, EndpointExt};
|
|
|
|
|
|
+use poem::{post, Result, Route, Server, EndpointExt};
|
|
use api;
|
|
use api;
|
|
use msg_handler;
|
|
use msg_handler;
|
|
|
|
|
|
@@ -47,7 +47,6 @@ async fn run_t_bot_pull_mode() -> Result<(), ()>{
|
|
|
|
|
|
let gs_hub: Sheets<hyper_rustls::HttpsConnector<hyper_util::client::legacy::connect::HttpConnector>> = Sheets::new(client, sheets_account);
|
|
let gs_hub: Sheets<hyper_rustls::HttpsConnector<hyper_util::client::legacy::connect::HttpConnector>> = Sheets::new(client, sheets_account);
|
|
|
|
|
|
-
|
|
|
|
let tg_bot = TelegramBot::new(
|
|
let tg_bot = TelegramBot::new(
|
|
bot_token, redis_client
|
|
bot_token, redis_client
|
|
);
|
|
);
|
|
@@ -59,7 +58,7 @@ async fn run_t_bot_pull_mode() -> Result<(), ()>{
|
|
let updates = tg_bot.get_updates(last_update).await;
|
|
let updates = tg_bot.get_updates(last_update).await;
|
|
debug!("Data -> | {:?} |", updates);
|
|
debug!("Data -> | {:?} |", updates);
|
|
|
|
|
|
- 'handling_updates: for update in match updates {
|
|
|
|
|
|
+ for update in match updates {
|
|
Ok(updates) => updates,
|
|
Ok(updates) => updates,
|
|
Err(error_) => {debug!("{:?}", error_); continue 'updates_loop}
|
|
Err(error_) => {debug!("{:?}", error_); continue 'updates_loop}
|
|
} {
|
|
} {
|
|
@@ -74,8 +73,6 @@ async fn run_t_bot_pull_mode() -> Result<(), ()>{
|
|
).await;
|
|
).await;
|
|
|
|
|
|
debug!("Data -> | {:?} |", update);
|
|
debug!("Data -> | {:?} |", update);
|
|
-
|
|
|
|
-
|
|
|
|
// match tg_bot.send_message(
|
|
// match tg_bot.send_message(
|
|
// update.message.chat.id, "message", None
|
|
// update.message.chat.id, "message", None
|
|
// ).await {
|
|
// ).await {
|
|
@@ -96,27 +93,24 @@ async fn run_t_bot_pull_mode() -> Result<(), ()>{
|
|
#[tokio::main]
|
|
#[tokio::main]
|
|
async fn start() -> std::io::Result<()> {
|
|
async fn start() -> std::io::Result<()> {
|
|
env_logger::init();
|
|
env_logger::init();
|
|
- // get env vars
|
|
|
|
- //dotenvy::dotenv().ok();
|
|
|
|
|
|
+ //*Getting config from env and building apis
|
|
let bot_token = env::var("BOT_TOKEN").expect("BOT_TOKEN is not set in .env file");
|
|
let bot_token = env::var("BOT_TOKEN").expect("BOT_TOKEN is not set in .env file");
|
|
-
|
|
|
|
let db_url = env::var("DATABASE_URL").expect("DATABASE_URL is not set in .env file");
|
|
let db_url = env::var("DATABASE_URL").expect("DATABASE_URL is not set in .env file");
|
|
let server_url: String = env::var("SERVER_URL").expect("SERVER_URL is not set in .env file");
|
|
let server_url: String = env::var("SERVER_URL").expect("SERVER_URL is not set in .env file");
|
|
-
|
|
|
|
- // create post table if not exists
|
|
|
|
- let conn: sea_orm::DatabaseConnection = sea_orm::Database::connect(&db_url).await.unwrap();
|
|
|
|
let templates = Tera::new(
|
|
let templates = Tera::new(
|
|
&env::var("TERA_TEMPLATES"
|
|
&env::var("TERA_TEMPLATES"
|
|
).expect(
|
|
).expect(
|
|
"TERA_TEMPLATES is not set in .env file"
|
|
"TERA_TEMPLATES is not set in .env file"
|
|
)).unwrap();
|
|
)).unwrap();
|
|
-
|
|
|
|
let redis_client = redis::Client::open("redis://127.0.0.1/").unwrap();
|
|
let redis_client = redis::Client::open("redis://127.0.0.1/").unwrap();
|
|
|
|
|
|
|
|
+ let conn: sea_orm::DatabaseConnection = sea_orm::Database::connect(&db_url).await.unwrap();
|
|
|
|
+
|
|
let tg_bot = TelegramBot::new(
|
|
let tg_bot = TelegramBot::new(
|
|
bot_token, redis_client.clone()
|
|
bot_token, redis_client.clone()
|
|
);
|
|
);
|
|
- debug!("{:?}", tg_bot.update_webhook().await.unwrap());
|
|
|
|
|
|
+ let webhook_set_res = tg_bot.update_webhook().await.unwrap();
|
|
|
|
+ debug!("{:?}", webhook_set_res);
|
|
|
|
|
|
let creds = yup_oauth2::read_service_account_key(
|
|
let creds = yup_oauth2::read_service_account_key(
|
|
env::var("GOOGLE_CREDS_FILE").expect("GOOGLE_CREDS_FILE is not set in .env file")
|
|
env::var("GOOGLE_CREDS_FILE").expect("GOOGLE_CREDS_FILE is not set in .env file")
|
|
@@ -142,20 +136,17 @@ async fn start() -> std::io::Result<()> {
|
|
|
|
|
|
let gs_hub = Sheets::new(client, sheets_account);
|
|
let gs_hub = Sheets::new(client, sheets_account);
|
|
|
|
|
|
-
|
|
|
|
-
|
|
|
|
let state = api::AppState {
|
|
let state = api::AppState {
|
|
conn, templates, redis_client: redis_client.clone(), tg_bot: tg_bot.clone(), gs_hub, sheet_id
|
|
conn, templates, redis_client: redis_client.clone(), tg_bot: tg_bot.clone(), gs_hub, sheet_id
|
|
};
|
|
};
|
|
-
|
|
|
|
- info!("Starting server at {server_url}");
|
|
|
|
|
|
+ //*Starting application
|
|
|
|
|
|
let app = Route::new()
|
|
let app = Route::new()
|
|
//.at("/", get(api::index))
|
|
//.at("/", get(api::index))
|
|
.at("/", post(api::tg_bot_handler))
|
|
.at("/", post(api::tg_bot_handler))
|
|
.data(state);
|
|
.data(state);
|
|
|
|
|
|
-
|
|
|
|
|
|
+ info!("Starting server at {server_url}");
|
|
let server = Server::new(TcpListener::bind(server_url));
|
|
let server = Server::new(TcpListener::bind(server_url));
|
|
server.run(app).await
|
|
server.run(app).await
|
|
}
|
|
}
|