diff --git a/.github/workflows/build_docker_image.yml b/.github/workflows/build_docker_image.yml index da458a0..fbc3713 100644 --- a/.github/workflows/build_docker_image.yml +++ b/.github/workflows/build_docker_image.yml @@ -13,12 +13,6 @@ jobs: name: Checkout uses: actions/checkout@v4 - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - with: - platforms: arm64 - - name: Set up Docker Buildx uses: docker/setup-buildx-action@v3 diff --git a/Cargo.lock b/Cargo.lock index 30b414f..c9c826f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -172,9 +172,9 @@ dependencies = [ [[package]] name = "base64" -version = "0.21.3" +version = "0.21.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "414dcefbc63d77c526a76b3afcf6fbb9b5e2791c19c3aa2297733208750c6e53" +checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" [[package]] name = "bitflags" @@ -287,15 +287,14 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.28" +version = "0.4.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95ed24df0632f708f5f6d8082675bef2596f7084dee3dd55f632290bf35bfe0f" +checksum = "defd4e7873dbddba6c7c91e199c7fcb946abc4a6a4ac3195400bcfb01b5de877" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", "num-traits", - "time 0.1.45", "wasm-bindgen", "windows-targets", ] @@ -688,7 +687,7 @@ checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" dependencies = [ "cfg-if", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", ] [[package]] @@ -1050,7 +1049,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" dependencies = [ "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", "windows-sys", ] @@ -1369,7 +1368,7 @@ dependencies = [ "mach2", "once_cell", "raw-cpuid", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", "web-sys", "winapi", ] @@ -1746,7 +1745,7 @@ dependencies = [ "serde", "serde_json", "thiserror", - "time 0.3.28", + "time", "url", "uuid", ] @@ -1773,9 +1772,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.105" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" +checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" dependencies = [ "itoa", "ryu", @@ -2107,17 +2106,6 @@ dependencies = [ "once_cell", ] -[[package]] -name = "time" -version = "0.1.45" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" -dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", -] - [[package]] name = "time" version = "0.3.28" @@ -2502,12 +2490,6 @@ dependencies = [ "try-lock", ] -[[package]] -name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" - [[package]] name = "wasi" version = "0.11.0+wasi-snapshot-preview1" diff --git a/Cargo.toml b/Cargo.toml index be71268..0d46d3e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,18 +9,18 @@ edition = "2021" tokio = { version = "1.32.0", features = ["rt-multi-thread", "macros"] } reqwest = { version = "0.11.20", features = ["json"] } serde = { version = "1.0.188", features = ["derive"] } -serde_json = "1.0.105" +serde_json = "1.0.107" teloxide = { git = "https://github.com/teloxide/teloxide.git", branch="master", features = ["macros", "webhooks-axum", "cache-me", "throttle"] } url = "2.4.1" ctrlc = { version = "3.4.1", features = ["termination"] } strum = "0.25.0" strum_macros = "0.25.2" futures = "0.3.28" -base64 = "0.21.3" +base64 = "0.21.4" tokio-util = { version = "0.7.8", features = ["compat"] } textwrap = "0.16.0" regex = "1.9.5" -chrono = "0.4.28" +chrono = "0.4.30" dateparser = "0.2.0" sentry = { version = "0.31.6", features = ["debug-images"] } moka = { version = "0.11.3", features = ["future"] } diff --git a/src/bots/approved_bot/mod.rs b/src/bots/approved_bot/mod.rs index 5350c3c..e9642e9 100644 --- a/src/bots/approved_bot/mod.rs +++ b/src/bots/approved_bot/mod.rs @@ -9,7 +9,7 @@ use crate::{bots::approved_bot::services::user_settings::create_or_update_user_s use self::{ modules::{ annotations::get_annotations_handler, book::get_book_handler, - download::get_download_hander, help::get_help_handler, random::get_random_hander, + download::get_download_handler, help::get_help_handler, random::get_random_handler, search::get_search_handler, settings::get_settings_handler, support::get_support_handler, update_history::get_update_log_handler, }, @@ -81,8 +81,8 @@ pub fn get_approved_handler() -> (BotHandler, BotCommands) { .branch(get_help_handler()) .branch(get_settings_handler()) .branch(get_support_handler()) - .branch(get_random_hander()) - .branch(get_download_hander()) + .branch(get_random_handler()) + .branch(get_download_handler()) .branch(get_annotations_handler()) .branch(get_book_handler()) .branch(get_update_log_handler()) diff --git a/src/bots/approved_bot/modules/annotations/callback_data.rs b/src/bots/approved_bot/modules/annotations/callback_data.rs index 809cb6e..28a5f62 100644 --- a/src/bots/approved_bot/modules/annotations/callback_data.rs +++ b/src/bots/approved_bot/modules/annotations/callback_data.rs @@ -15,23 +15,21 @@ impl FromStr for AnnotationCallbackData { type Err = strum::ParseError; fn from_str(s: &str) -> Result { - let re = Regex::new(r"^(?Pa|b)_an_(?P\d+)_(?P\d+)$").unwrap(); - - let caps = re.captures(s); - let caps = match caps { - Some(v) => v, - None => return Err(strum::ParseError::VariantNotFound), - }; - - let annotation_type = &caps["an_type"]; - let id = caps["id"].parse::().unwrap(); - let page = caps["page"].parse::().unwrap(); - - match annotation_type { - "a" => Ok(AnnotationCallbackData::Author { id, page }), - "b" => Ok(AnnotationCallbackData::Book { id, page }), - _ => Err(strum::ParseError::VariantNotFound), - } + Regex::new(r"^(?P[ab])_an_(?P\d+)_(?P\d+)$") + .unwrap_or_else(|_| panic!("Broken AnnotationCallbackData regex pattern!")) + .captures(s) + .ok_or(strum::ParseError::VariantNotFound) + .map(|caps| ( + caps["an_type"].to_string(), + caps["id"].parse::().unwrap(), + caps["page"].parse::().unwrap() + )) + .map(|(annotation_type, id, page)| + match annotation_type.as_str() { + "a" => AnnotationCallbackData::Author { id, page }, + "b" => AnnotationCallbackData::Book { id, page }, + _ => panic!("Unknown AnnotationCallbackData type: {}!", annotation_type), + }) } } diff --git a/src/bots/approved_bot/modules/annotations/commands.rs b/src/bots/approved_bot/modules/annotations/commands.rs index b4ceceb..f1b76cc 100644 --- a/src/bots/approved_bot/modules/annotations/commands.rs +++ b/src/bots/approved_bot/modules/annotations/commands.rs @@ -11,7 +11,7 @@ pub enum AnnotationCommand { impl CommandParse for AnnotationCommand { fn parse(s: &str, bot_name: &str) -> Result { - let re = Regex::new(r"^/(?Pa|b)_an_(?P\d+)$") + let re = Regex::new(r"^/(?P[ab])_an_(?P\d+)$") .unwrap_or_else(|_| panic!("Can't create AnnotationCommand regexp!")); let full_bot_name = format!("@{bot_name}"); diff --git a/src/bots/approved_bot/modules/annotations/formater.rs b/src/bots/approved_bot/modules/annotations/formatter.rs similarity index 100% rename from src/bots/approved_bot/modules/annotations/formater.rs rename to src/bots/approved_bot/modules/annotations/formatter.rs diff --git a/src/bots/approved_bot/modules/annotations/mod.rs b/src/bots/approved_bot/modules/annotations/mod.rs index 8ce4116..cda56d2 100644 --- a/src/bots/approved_bot/modules/annotations/mod.rs +++ b/src/bots/approved_bot/modules/annotations/mod.rs @@ -1,6 +1,6 @@ pub mod commands; pub mod callback_data; -pub mod formater; +pub mod formatter; pub mod errors; use std::convert::TryInto; @@ -21,7 +21,7 @@ use crate::bots::{ BotHandlerInternal, }; -use self::{commands::AnnotationCommand, formater::AnnotationFormat, callback_data::AnnotationCallbackData, errors::AnnotationError}; +use self::{commands::AnnotationCommand, formatter::AnnotationFormat, callback_data::AnnotationCallbackData, errors::AnnotationError}; use super::utils::{filter_command, split_text_to_chunks}; diff --git a/src/bots/approved_bot/modules/book/callback_data.rs b/src/bots/approved_bot/modules/book/callback_data.rs index 1a19e5d..f1568e2 100644 --- a/src/bots/approved_bot/modules/book/callback_data.rs +++ b/src/bots/approved_bot/modules/book/callback_data.rs @@ -16,7 +16,7 @@ impl FromStr for BookCallbackData { type Err = strum::ParseError; fn from_str(s: &str) -> Result { - let re = Regex::new(r"^b(?Pa|t|s)_(?P\d+)_(?P\d+)$").unwrap(); + let re = Regex::new(r"^b(?P[ats])_(?P\d+)_(?P\d+)$").unwrap(); let caps = re.captures(s); let caps = match caps { diff --git a/src/bots/approved_bot/modules/book/commands.rs b/src/bots/approved_bot/modules/book/commands.rs index 9cf3561..90a8c2f 100644 --- a/src/bots/approved_bot/modules/book/commands.rs +++ b/src/bots/approved_bot/modules/book/commands.rs @@ -12,7 +12,7 @@ pub enum BookCommand { impl CommandParse for BookCommand { fn parse(s: &str, bot_name: &str) -> Result { - let re = Regex::new(r"^/(?Pa|t|s)_(?P\d+)$").unwrap(); + let re = Regex::new(r"^/(?P[ats])_(?P\d+)$").unwrap(); let full_bot_name = format!("@{bot_name}"); let after_replace = s.replace(&full_bot_name, ""); diff --git a/src/bots/approved_bot/modules/book/mod.rs b/src/bots/approved_bot/modules/book/mod.rs index 9acbac6..fcd5ada 100644 --- a/src/bots/approved_bot/modules/book/mod.rs +++ b/src/bots/approved_bot/modules/book/mod.rs @@ -12,7 +12,7 @@ use tracing::log; use crate::bots::approved_bot::{ services::{ book_library::{ - formaters::{Format, FormatTitle}, get_author_books, get_sequence_books, get_translator_books, + formatters::{Format, FormatTitle}, get_author_books, get_sequence_books, get_translator_books, types::Page, }, user_settings::get_user_or_default_lang_codes, @@ -79,7 +79,7 @@ where return Ok(()); }; - let formated_page = items_page.format(1, 4096); + let formatted_page = items_page.format(1, 4096); let callback_data = match command { BookCommand::Author { id } => BookCallbackData::Author { id, page: 1 }, @@ -90,7 +90,7 @@ where let keyboard = generic_get_pagination_keyboard(1, items_page.pages, callback_data, true); bot - .send_message(chat_id, formated_page) + .send_message(chat_id, formatted_page) .reply_markup(keyboard) .send() .await?; @@ -166,12 +166,12 @@ where }; } - let formated_page = items_page.format(page, 4096); + let formatted_page = items_page.format(page, 4096); let keyboard = generic_get_pagination_keyboard(page, items_page.pages, callback_data, true); bot - .edit_message_text(chat_id, message_id, formated_page) + .edit_message_text(chat_id, message_id, formatted_page) .reply_markup(keyboard) .send() .await?; diff --git a/src/bots/approved_bot/modules/download/callback_data.rs b/src/bots/approved_bot/modules/download/callback_data.rs index 1013b84..bd3c74d 100644 --- a/src/bots/approved_bot/modules/download/callback_data.rs +++ b/src/bots/approved_bot/modules/download/callback_data.rs @@ -59,7 +59,7 @@ impl FromStr for DownloadArchiveQueryData { type Err = strum::ParseError; fn from_str(s: &str) -> Result { - let re = Regex::new(r"^da_(?P[s|a|t])_(?P\d+)_(?P\w+)$").unwrap(); + let re = Regex::new(r"^da_(?P[sat])_(?P\d+)_(?P\w+)$").unwrap(); let caps = re.captures(s); let caps = match caps { diff --git a/src/bots/approved_bot/modules/download/commads.rs b/src/bots/approved_bot/modules/download/commands.rs similarity index 96% rename from src/bots/approved_bot/modules/download/commads.rs rename to src/bots/approved_bot/modules/download/commands.rs index 0d8b37e..2ea627f 100644 --- a/src/bots/approved_bot/modules/download/commads.rs +++ b/src/bots/approved_bot/modules/download/commands.rs @@ -54,7 +54,7 @@ impl ToString for DownloadArchiveCommand { impl CommandParse for DownloadArchiveCommand { fn parse(s: &str, bot_name: &str) -> Result { - let re = Regex::new(r"^/da_(?P[s|a|t])_(?P\d+)$").unwrap(); + let re = Regex::new(r"^/da_(?P[sat])_(?P\d+)$").unwrap(); let full_bot_name = format!("@{bot_name}"); let after_replace = s.replace(&full_bot_name, ""); diff --git a/src/bots/approved_bot/modules/download/mod.rs b/src/bots/approved_bot/modules/download/mod.rs index 5add6f3..4baa086 100644 --- a/src/bots/approved_bot/modules/download/mod.rs +++ b/src/bots/approved_bot/modules/download/mod.rs @@ -1,4 +1,4 @@ -pub mod commads; +pub mod commands; pub mod callback_data; use std::time::Duration; @@ -27,7 +27,7 @@ use crate::{ types::{CachedMessage, DownloadFile}, download_file_by_link, get_download_link, }, book_library::{get_book, get_author_books_available_types, get_translator_books_available_types, get_sequence_books_available_types}, - donation_notificatioins::send_donation_notification, user_settings::get_user_or_default_lang_codes, batch_downloader::{TaskObjectType, CreateTaskData}, + donation_notifications::send_donation_notification, user_settings::get_user_or_default_lang_codes, batch_downloader::{TaskObjectType, CreateTaskData}, batch_downloader::{create_task, get_task, TaskStatus} }, @@ -38,7 +38,7 @@ use crate::{ bots_manager::BotCache, }; -use self::{callback_data::{CheckArchiveStatus, DownloadQueryData}, commads::{StartDownloadCommand, DownloadArchiveCommand}}; +use self::{callback_data::{CheckArchiveStatus, DownloadQueryData}, commands::{StartDownloadCommand, DownloadArchiveCommand}}; use super::utils::filter_command; @@ -179,7 +179,6 @@ async fn send_download_link( .reply_markup(InlineKeyboardMarkup { inline_keyboard: vec![], }) - .send() .await?; Ok(()) @@ -400,7 +399,6 @@ async fn wait_archive( .reply_markup(InlineKeyboardMarkup { inline_keyboard: vec![], }) - .send() .await; log::error!("{:?}", err); return Err(err); @@ -459,7 +457,7 @@ async fn download_archive( Ok(()) } -pub fn get_download_hander() -> crate::bots::BotHandler { +pub fn get_download_handler() -> crate::bots::BotHandler { dptree::entry() .branch( Update::filter_message() diff --git a/src/bots/approved_bot/modules/help/mod.rs b/src/bots/approved_bot/modules/help/mod.rs index 4205fbf..95d8606 100644 --- a/src/bots/approved_bot/modules/help/mod.rs +++ b/src/bots/approved_bot/modules/help/mod.rs @@ -32,7 +32,6 @@ pub async fn help_handler(message: Message, bot: CacheMe>) -> BotH ), ) .parse_mode(ParseMode::Html) - .send() .await { Ok(_) => Ok(()), diff --git a/src/bots/approved_bot/modules/random/mod.rs b/src/bots/approved_bot/modules/random/mod.rs index b0dc66b..219c2b6 100644 --- a/src/bots/approved_bot/modules/random/mod.rs +++ b/src/bots/approved_bot/modules/random/mod.rs @@ -12,7 +12,7 @@ use teloxide::{ use crate::bots::{ approved_bot::{ services::{ - book_library::{self, formaters::Format}, + book_library::{self, formatters::Format}, user_settings::get_user_or_default_lang_codes, }, tools::filter_callback_query, modules::random::callback_data::RandomCallbackData, @@ -247,7 +247,7 @@ async fn get_random_book_by_genre( get_random_item_handler_internal(cq, bot, item).await } -pub fn get_random_hander() -> crate::bots::BotHandler { +pub fn get_random_handler() -> crate::bots::BotHandler { dptree::entry() .branch( Update::filter_message() diff --git a/src/bots/approved_bot/modules/search/callback_data.rs b/src/bots/approved_bot/modules/search/callback_data.rs index 9e52655..4fd2431 100644 --- a/src/bots/approved_bot/modules/search/callback_data.rs +++ b/src/bots/approved_bot/modules/search/callback_data.rs @@ -29,7 +29,7 @@ impl FromStr for SearchCallbackData { type Err = strum::ParseError; fn from_str(s: &str) -> Result { - let re = Regex::new(r"^(?Ps[a|b|s|t])_(?P\d+)$").unwrap(); + let re = Regex::new(r"^(?Ps[abst])_(?P\d+)$").unwrap(); let caps = re.captures(s); let caps = match caps { diff --git a/src/bots/approved_bot/modules/search/mod.rs b/src/bots/approved_bot/modules/search/mod.rs index 4eaad3c..19006f8 100644 --- a/src/bots/approved_bot/modules/search/mod.rs +++ b/src/bots/approved_bot/modules/search/mod.rs @@ -14,7 +14,7 @@ use crate::bots::{ approved_bot::{ services::{ book_library::{ - formaters::{Format, FormatTitle}, search_author, search_book, search_sequence, search_translator, + formatters::{Format, FormatTitle}, search_author, search_book, search_sequence, search_translator, types::Page, }, user_settings::get_user_or_default_lang_codes, diff --git a/src/bots/approved_bot/modules/update_history/mod.rs b/src/bots/approved_bot/modules/update_history/mod.rs index c2dd68f..711f706 100644 --- a/src/bots/approved_bot/modules/update_history/mod.rs +++ b/src/bots/approved_bot/modules/update_history/mod.rs @@ -118,9 +118,9 @@ async fn update_log_pagination_handler( let page = update_callback_data.page; let total_pages = items_page.pages; - let formated_page = items_page.format(page, 4096); + let formatted_page = items_page.format(page, 4096); - let message_text = format!("{header}{formated_page}"); + let message_text = format!("{header}{formatted_page}"); let keyboard = generic_get_pagination_keyboard(page, total_pages, update_callback_data, true); bot diff --git a/src/bots/approved_bot/services/batch_downloader.rs b/src/bots/approved_bot/services/batch_downloader.rs index d362221..2722505 100644 --- a/src/bots/approved_bot/services/batch_downloader.rs +++ b/src/bots/approved_bot/services/batch_downloader.rs @@ -19,7 +19,7 @@ pub enum TaskStatus { InProgress, Archiving, Complete, - Failled + Failed } #[derive(Serialize)] diff --git a/src/bots/approved_bot/services/book_library/formaters.rs b/src/bots/approved_bot/services/book_library/formatters.rs similarity index 99% rename from src/bots/approved_bot/services/book_library/formaters.rs rename to src/bots/approved_bot/services/book_library/formatters.rs index cb782ba..b0b3f34 100644 --- a/src/bots/approved_bot/services/book_library/formaters.rs +++ b/src/bots/approved_bot/services/book_library/formatters.rs @@ -1,6 +1,6 @@ use std::cmp::min; -use crate::bots::approved_bot::modules::download::commads::{StartDownloadCommand, DownloadArchiveCommand}; +use crate::bots::approved_bot::modules::download::commands::{StartDownloadCommand, DownloadArchiveCommand}; use super::types::{ Author, AuthorBook, Book, BookAuthor, BookGenre, SearchBook, Sequence, Translator, diff --git a/src/bots/approved_bot/services/book_library/mod.rs b/src/bots/approved_bot/services/book_library/mod.rs index 4b53d3f..3a3fb33 100644 --- a/src/bots/approved_bot/services/book_library/mod.rs +++ b/src/bots/approved_bot/services/book_library/mod.rs @@ -1,4 +1,4 @@ -pub mod formaters; +pub mod formatters; pub mod types; use smartstring::alias::String as SmartString; diff --git a/src/bots/approved_bot/services/book_library/types.rs b/src/bots/approved_bot/services/book_library/types.rs index aa7ff50..b695e53 100644 --- a/src/bots/approved_bot/services/book_library/types.rs +++ b/src/bots/approved_bot/services/book_library/types.rs @@ -2,7 +2,7 @@ use core::fmt::Debug; use serde::Deserialize; use smallvec::SmallVec; -use super::formaters::{Format, FormatResult, FormatTitle}; +use super::formatters::{Format, FormatResult, FormatTitle}; #[derive(Default, Deserialize, Debug, Clone)] diff --git a/src/bots/approved_bot/services/donation_notificatioins.rs b/src/bots/approved_bot/services/donation_notifications.rs similarity index 90% rename from src/bots/approved_bot/services/donation_notificatioins.rs rename to src/bots/approved_bot/services/donation_notifications.rs index c4a8396..e9724e2 100644 --- a/src/bots/approved_bot/services/donation_notificatioins.rs +++ b/src/bots/approved_bot/services/donation_notifications.rs @@ -2,7 +2,7 @@ use teloxide::{types::Message, adaptors::{CacheMe, Throttle}, Bot}; use crate::{bots::{BotHandlerInternal, approved_bot::modules::support::support_command_handler}, bots_manager::CHAT_DONATION_NOTIFICATIONS_CACHE}; -use super::user_settings::{is_need_donate_notifications, mark_donate_notification_sended}; +use super::user_settings::{is_need_donate_notifications, mark_donate_notification_sent}; pub async fn send_donation_notification( @@ -17,7 +17,7 @@ pub async fn send_donation_notification( } CHAT_DONATION_NOTIFICATIONS_CACHE.insert(message.chat.id, ()).await; - mark_donate_notification_sended(message.chat.id).await?; + mark_donate_notification_sent(message.chat.id).await?; support_command_handler(message, bot).await?; diff --git a/src/bots/approved_bot/services/mod.rs b/src/bots/approved_bot/services/mod.rs index 8415e8f..3c3b10c 100644 --- a/src/bots/approved_bot/services/mod.rs +++ b/src/bots/approved_bot/services/mod.rs @@ -1,5 +1,5 @@ pub mod book_cache; pub mod book_library; pub mod user_settings; -pub mod donation_notificatioins; +pub mod donation_notifications; pub mod batch_downloader; diff --git a/src/bots/approved_bot/services/user_settings/mod.rs b/src/bots/approved_bot/services/user_settings/mod.rs index a322741..b100ace 100644 --- a/src/bots/approved_bot/services/user_settings/mod.rs +++ b/src/bots/approved_bot/services/user_settings/mod.rs @@ -129,7 +129,7 @@ pub async fn is_need_donate_notifications(chat_id: ChatId) -> Result().await?) } -pub async fn mark_donate_notification_sended(chat_id: ChatId) -> Result<(), Box> { +pub async fn mark_donate_notification_sent(chat_id: ChatId) -> Result<(), Box> { reqwest::Client::new() .post(format!("{}/donate_notifications/{chat_id}", &config::CONFIG.user_settings_url)) .header("Authorization", &config::CONFIG.user_settings_api_key) diff --git a/src/main.rs b/src/main.rs index d3bc22a..1225b28 100644 --- a/src/main.rs +++ b/src/main.rs @@ -10,6 +10,7 @@ mod bots; mod bots_manager; mod config; + #[tokio::main] async fn main() { tracing_subscriber::fmt()