Compare commits

...

6 Commits

Author SHA1 Message Date
Akulij
ebb3c6c3e4 change message on edit bot message request
reason: notify user why messages that use media group is not complatible
with message editing (it is compbatible if media count is <= than in
editable, but not implemented in bot and potentially will not be implemented at all)
2025-04-30 19:23:54 +03:00
Akulij
64641d4101 do not drop indexes in migration 2025-04-30 19:22:17 +03:00
Akulij
8c3cfc4d2d set env RUST_LOG=info in bacon's run job 2025-04-30 19:21:27 +03:00
Akulij
88360c91ca init pretty_env_logger 2025-04-30 19:21:00 +03:00
Akulij
0d4e2a8fcd cargo add: add pretty_env_logger as a dependency 2025-04-30 19:20:43 +03:00
Akulij
0b089113f3 create methods to delete single and all event(s) 2025-04-30 18:55:30 +03:00
5 changed files with 92 additions and 8 deletions

65
Cargo.lock generated
View File

@ -557,6 +557,19 @@ dependencies = [
"syn 2.0.100",
]
[[package]]
name = "env_logger"
version = "0.10.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4cd405aab171cb85d6735e5c8d9db038c17d3ca007a4d2c25f337935c3d90580"
dependencies = [
"humantime",
"is-terminal",
"log",
"regex",
"termcolor",
]
[[package]]
name = "envconfig"
version = "0.11.0"
@ -841,6 +854,7 @@ dependencies = [
"futures",
"log",
"mongodb",
"pretty_env_logger",
"serde",
"teloxide",
"thiserror 2.0.12",
@ -879,6 +893,12 @@ version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
[[package]]
name = "hermit-abi"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fbd780fe5cc30f81464441920d82ac8740e2e46b29a6fad543ddd075229ce37e"
[[package]]
name = "hex"
version = "0.4.3"
@ -1008,6 +1028,12 @@ version = "1.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87"
[[package]]
name = "humantime"
version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f"
[[package]]
name = "hyper"
version = "1.6.0"
@ -1290,6 +1316,17 @@ version = "2.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130"
[[package]]
name = "is-terminal"
version = "0.4.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9"
dependencies = [
"hermit-abi",
"libc",
"windows-sys 0.59.0",
]
[[package]]
name = "itertools"
version = "0.10.5"
@ -1771,6 +1808,16 @@ dependencies = [
"zerocopy 0.8.24",
]
[[package]]
name = "pretty_env_logger"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "865724d4dbe39d9f3dd3b52b88d859d66bcb2d6a0acfd5ea68a65fb66d4bdc1c"
dependencies = [
"env_logger",
"log",
]
[[package]]
name = "proc-macro-error-attr2"
version = "2.0.0"
@ -2634,6 +2681,15 @@ dependencies = [
"windows-sys 0.59.0",
]
[[package]]
name = "termcolor"
version = "1.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755"
dependencies = [
"winapi-util",
]
[[package]]
name = "thiserror"
version = "1.0.69"
@ -3139,6 +3195,15 @@ version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd7cf3379ca1aac9eea11fba24fd7e315d621f8dfe35c8d7d2be8b793726e07d"
[[package]]
name = "winapi-util"
version = "0.1.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb"
dependencies = [
"windows-sys 0.59.0",
]
[[package]]
name = "windows-core"
version = "0.52.0"

View File

@ -16,6 +16,7 @@ envconfig = "0.11.0"
futures = "0.3.31"
log = "0.4.27"
mongodb = "3.2.3"
pretty_env_logger = "0.5.0"
serde = { version = "1.0.219", features = ["derive", "serde_derive"] }
teloxide = { version = "0.14.0", features = ["macros", "postgres-storage-nativetls"] }
thiserror = "2.0.12"

View File

@ -74,6 +74,8 @@ command = [
need_stdout = true
allow_warnings = true
background = true
[jobs.run.env]
RUST_LOG = "info"
# Run your long-running application (eg server) and have the result displayed in bacon.
# For programs that never stop (eg a server), `background` is set to false

View File

@ -125,9 +125,6 @@ impl DB {
let db = self.get_database().await;
/// some migrations doesn't realy need type of collection
type AnyCollection = Event;
db.collection::<AnyCollection>("events")
.drop_indexes()
.await?;
let events = self.get_database().await.collection::<Event>("events");
events
.create_index(
@ -138,9 +135,6 @@ impl DB {
)
.await?;
db.collection::<AnyCollection>("events")
.drop_indexes()
.await?;
// clear callbacks after a day because otherwise database will contain so much data
// for just button clicks
let callback_info = self
@ -330,6 +324,24 @@ pub trait CallDB {
Ok(new_event)
}
async fn delete_event(&mut self, event_datetime: chrono::DateTime<Utc>) -> DbResult<()> {
let db = self.get_database().await;
let events = db.collection::<Event>("events");
events.delete_one(doc! { "time": event_datetime }).await?;
Ok(())
}
async fn delete_all_events(&mut self) -> DbResult<usize> {
let db = self.get_database().await;
let events = db.collection::<Event>("events");
let delete_result = events.delete_many(doc! {}).await?;
Ok(delete_result.deleted_count as usize)
}
async fn get_media(&mut self, literal: &str) -> DbResult<Vec<Media>> {
let db = self.get_database().await;
let media = db.collection::<Media>("media");

View File

@ -116,6 +116,7 @@ impl std::fmt::Display for BotError {
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
dotenvy::dotenv()?;
pretty_env_logger::init();
let config = Config::init_from_env()?;
let mut bc = BotController::new(&config).await?;
@ -253,8 +254,11 @@ async fn edit_msg_cmd_handler(
.await?;
bot.send_message(
msg.chat.id,
"Ok, now you have to send message text (formatting supported)",
)
"Ok, now you have to send message text (formatting supported)\n\
<b>Notice:</b> if this message supposed to replace message (tg shows them as edited) \
or be raplaced, do NOT send message with multiple media, only single photo, video etc. \
To get more information about why, see in /why_media_group",
).parse_mode(ParseMode::Html)
.await?;
}
None => {