diff --git a/Cargo.lock b/Cargo.lock index 03895df..e62e210 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -441,7 +441,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if", - "hashbrown 0.14.2", + "hashbrown", "lock_api", "once_cell", "parking_lot_core", @@ -496,7 +496,7 @@ dependencies = [ "const_format", "dashmap", "gettext", - "indexmap 2.1.0", + "indexmap", "itertools", "linkify", "num-format", @@ -522,9 +522,9 @@ dependencies = [ [[package]] name = "discortp" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524b9439c09174aede2c88d58cfc6b83575b06569d1af4d07562f76595b2896b" +checksum = "5c793408a15d361754613fa68123ffa60424c2617fafdf82127b4bedf37d3f5d" dependencies = [ "pnet_macros", "pnet_macros_support", @@ -635,9 +635,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c18ee0ed65a5f1f81cac6b1d213b69c35fa47d4252ad41f1486dbd8226fe36e" +checksum = "f258a7194e7f7c2a7837a8913aeab7fd8c383457034fa20ce4dd3dcb813e8eb8" dependencies = [ "libc", "windows-sys", @@ -873,9 +873,9 @@ checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" [[package]] name = "h2" -version = "0.3.21" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" +checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" dependencies = [ "bytes", "fnv", @@ -883,19 +883,13 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 1.9.3", + "indexmap", "slab", "tokio", "tokio-util", "tracing", ] -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - [[package]] name = "hashbrown" version = "0.14.2" @@ -912,7 +906,7 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" dependencies = [ - "hashbrown 0.14.2", + "hashbrown", ] [[package]] @@ -965,9 +959,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.10" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f95b9abcae896730d42b78e09c155ed4ddf82c07b4de772c64aee5b2d8b7c150" +checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" dependencies = [ "bytes", "fnv", @@ -1030,7 +1024,7 @@ dependencies = [ "futures-util", "http", "hyper", - "rustls 0.21.8", + "rustls 0.21.9", "tokio", "tokio-rustls 0.24.1", ] @@ -1074,16 +1068,6 @@ dependencies = [ "unicode-normalization", ] -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", -] - [[package]] name = "indexmap" version = "2.1.0" @@ -1091,7 +1075,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" dependencies = [ "equivalent", - "hashbrown 0.14.2", + "hashbrown", ] [[package]] @@ -1491,30 +1475,30 @@ checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "pnet_base" -version = "0.31.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9d3a993d49e5fd5d4d854d6999d4addca1f72d86c65adf224a36757161c02b6" +checksum = "fe4cf6fb3ab38b68d01ab2aea03ed3d1132b4868fa4e06285f29f16da01c5f4c" dependencies = [ "no-std-net", ] [[package]] name = "pnet_macros" -version = "0.31.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48dd52a5211fac27e7acb14cfc9f30ae16ae0e956b7b779c8214c74559cef4c3" +checksum = "688b17499eee04a0408aca0aa5cba5fc86401d7216de8a63fdf7a4c227871804" dependencies = [ "proc-macro2", "quote", "regex", - "syn 1.0.109", + "syn 2.0.39", ] [[package]] name = "pnet_macros_support" -version = "0.31.0" +version = "0.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89de095dc7739349559913aed1ef6a11e73ceade4897dadc77c5e09de6740750" +checksum = "eea925b72f4bd37f8eab0f221bbe4c78b63498350c983ffa9dd4bcde7e030f56" dependencies = [ "pnet_base", ] @@ -1522,7 +1506,7 @@ dependencies = [ [[package]] name = "poise" version = "0.5.5" -source = "git+https://github.com/serenity-rs/poise?branch=serenity-next#557c4cf39eaf22c7e929e5a0a208651395783aa5" +source = "git+https://github.com/serenity-rs/poise?branch=serenity-next#7844c03365bcf7024671c078a254a2159fd8b556" dependencies = [ "async-trait", "derivative", @@ -1540,7 +1524,7 @@ dependencies = [ [[package]] name = "poise_macros" version = "0.5.5" -source = "git+https://github.com/serenity-rs/poise?branch=serenity-next#557c4cf39eaf22c7e929e5a0a208651395783aa5" +source = "git+https://github.com/serenity-rs/poise?branch=serenity-next#7844c03365bcf7024671c078a254a2159fd8b556" dependencies = [ "darling", "proc-macro2", @@ -1734,7 +1718,7 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls 0.21.8", + "rustls 0.21.9", "rustls-pemfile", "serde", "serde_json", @@ -1826,9 +1810,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.21" +version = "0.38.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3" +checksum = "9ad981d6c340a49cdc40a1028d9c6084ec7e9fa33fcb839cab656a267071e234" dependencies = [ "bitflags 2.4.1", "errno", @@ -1851,9 +1835,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.21.8" +version = "0.21.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "446e14c5cda4f3f30fe71863c34ec70f5ac79d6087097ad0bb433e1be5edf04c" +checksum = "629648aced5775d558af50b2b4c7b02983a04b312126d45eeead26e7caa498b9" dependencies = [ "log", "ring 0.17.5", @@ -2077,7 +2061,6 @@ dependencies = [ [[package]] name = "serenity" version = "0.11.7" -source = "git+https://github.com/GnomedDev/serenity?branch=no-imagehash#af44688f6750b1f350888f4a9d5e96b0601ce15d" dependencies = [ "arrayvec", "async-trait", @@ -2101,13 +2084,14 @@ dependencies = [ "tokio-tungstenite 0.20.1", "tracing", "typemap_rev", + "typesize", "url", ] [[package]] name = "serenity-voice-model" version = "0.1.1" -source = "git+https://github.com/serenity-rs/serenity?branch=next#f0453f8ea2753d9f566f3eaa2487e78a87025a1a" +source = "git+https://github.com/serenity-rs/serenity?branch=next#45c4b0dc42b06fbd8d3e2304cd0bd4bdf9201f0f" dependencies = [ "bitflags 2.4.1", "enum_primitive", @@ -2194,7 +2178,7 @@ dependencies = [ [[package]] name = "songbird" version = "0.3.2" -source = "git+https://github.com/serenity-rs/songbird?branch=next#3ac17b62a66d22089d822962a53970bd4731ac09" +source = "git+https://github.com/serenity-rs/songbird?branch=next#c8b2dab0f01f245bd64ab3f7db796d41c40c4832" dependencies = [ "async-trait", "audiopus", @@ -2293,13 +2277,13 @@ dependencies = [ "futures-util", "hashlink", "hex", - "indexmap 2.1.0", + "indexmap", "log", "memchr", "once_cell", "paste", "percent-encoding", - "rustls 0.21.8", + "rustls 0.21.9", "rustls-pemfile", "serde", "serde_json", @@ -2731,7 +2715,7 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls 0.21.8", + "rustls 0.21.9", "tokio", ] @@ -2770,7 +2754,7 @@ checksum = "212d5dcb2a1ce06d81107c3d0ffa3121fe974b73f068c8282cb1c32328113b6c" dependencies = [ "futures-util", "log", - "rustls 0.21.8", + "rustls 0.21.9", "tokio", "tokio-rustls 0.24.1", "tungstenite 0.20.1", @@ -2818,7 +2802,7 @@ version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d34d383cd00a163b4a5b85053df514d45bc330f6de7737edfe0a93311d1eaa03" dependencies = [ - "indexmap 2.1.0", + "indexmap", "serde", "serde_spanned", "toml_datetime", @@ -2876,9 +2860,9 @@ dependencies = [ [[package]] name = "tracing-log" -version = "0.1.4" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" dependencies = [ "log", "once_cell", @@ -2887,9 +2871,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ "matchers", "nu-ansi-term", @@ -2953,7 +2937,7 @@ dependencies = [ "httparse", "log", "rand", - "rustls 0.21.8", + "rustls 0.21.9", "sha1", "thiserror", "url", @@ -3015,6 +2999,34 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +[[package]] +name = "typesize" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "374899228cccab5bc4052ddfbbe719d6c464d456aa55c8703ea7cc179487ca2f" +dependencies = [ + "chrono", + "dashmap", + "hashbrown", + "secrecy", + "serde_json", + "time", + "typesize-derive", + "url", +] + +[[package]] +name = "typesize-derive" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "952e2645c35faf5f361c03b235a068caace146d889dc3fc464efde95cc5f2260" +dependencies = [ + "either", + "proc-macro2", + "quote", + "syn 2.0.39", +] + [[package]] name = "unicase" version = "2.7.0" @@ -3386,18 +3398,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.7.25" +version = "0.7.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cd369a67c0edfef15010f980c3cbe45d7f651deac2cd67ce097cd801de16557" +checksum = "e97e415490559a91254a2979b4829267a57d2fcd741a98eee8b722fb57289aa0" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.25" +version = "0.7.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c2f140bda219a26ccc0cdb03dba58af72590c53b22642577d88a927bc5c87d6b" +checksum = "dd7e48ccf166952882ca8bd778a43502c64f33bf94c12ebe2a7f08e5a0f6689f" dependencies = [ "proc-macro2", "quote", @@ -3406,6 +3418,6 @@ dependencies = [ [[package]] name = "zeroize" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" diff --git a/Cargo.toml b/Cargo.toml index 112c30a..d2b5dc7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -55,11 +55,10 @@ version = "5" default-features = false [dependencies.serenity_feature_only] -git = "https://github.com/GnomedDev/serenity" -features = ["unstable_discord_api"] +path = "../serenity" +features = ["unstable_discord_api", "typesize"] default-features = false package = "serenity" -branch = "no-imagehash" [dependencies.poise] git = "https://github.com/serenity-rs/poise" @@ -72,7 +71,7 @@ features = ["builtin-queue"] branch = "next" [patch.crates-io] -serenity = { git = "https://github.com/GnomedDev/serenity", branch = "no-imagehash" } +serenity = { path = "../serenity" } [patch."https://github.com/serenity-rs/serenity"] -serenity = { git = "https://github.com/GnomedDev/serenity", branch = "no-imagehash" } +serenity = { path = "../serenity" } diff --git a/src/commands/owner.rs b/src/commands/owner.rs index 2346218..d8bef00 100644 --- a/src/commands/owner.rs +++ b/src/commands/owner.rs @@ -14,10 +14,11 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . -use std::{collections::HashSet, num::NonZeroU16, sync::atomic::Ordering::SeqCst}; +use std::{borrow::Cow, collections::HashSet, num::NonZeroU16, sync::atomic::Ordering::SeqCst}; use self::serenity::builder::*; -use poise::{futures_util::TryStreamExt, serenity_prelude as serenity}; +use num_format::{Locale, ToFormattedString}; +use poise::{futures_util::TryStreamExt, serenity_prelude as serenity, CreateReply}; use crate::{ funcs::dm_generic, @@ -326,7 +327,33 @@ pub async fn leave(ctx: Context<'_>) -> CommandResult { .map_err(Into::into) } -pub fn commands() -> [Command; 8] { +#[poise::command(prefix_command, owners_only)] +pub async fn cache_info(ctx: Context<'_>) -> CommandResult { + let mut embed = CreateEmbed::default().title("Cache Statistics"); + for cache in ctx.cache().get_statistics() { + let size = (cache.size / 1000).to_formatted_string(&Locale::en); + let (count, size_per) = if cache.count == 0 { + (Cow::Borrowed("0"), Cow::Borrowed("N/A")) + } else { + let count = cache.count.to_formatted_string(&Locale::en); + let mut size_per = (cache.size / cache.count).to_formatted_string(&Locale::en); + size_per.push('b'); + + (Cow::Owned(count), Cow::Owned(size_per)) + }; + + embed = embed.field( + cache.name, + format!("Size: `{size}kb`\nCount: `{count}`\nSize per model: `{size_per}`"), + false, + ); + } + + ctx.send(CreateReply::default().embed(embed)).await?; + Ok(()) +} + +pub fn commands() -> [Command; 9] { [ dm(), close(), @@ -336,5 +363,6 @@ pub fn commands() -> [Command; 8] { remove_cache(), refresh_ofs(), purge_guilds(), + cache_info(), ] }