diff --git a/.idea/dictionaries/jude.xml b/.idea/dictionaries/jude.xml new file mode 100644 index 0000000..864a310 --- /dev/null +++ b/.idea/dictionaries/jude.xml @@ -0,0 +1,7 @@ + + + + reqwest + + + \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 635351c..84503b9 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -280,15 +280,6 @@ dependencies = [ "lazy_static", ] -[[package]] -name = "ct-logs" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d3686f5fa27dbc1d76c751300376e167c5a43387f44bb451fd1c24776e49113" -dependencies = [ - "sct", -] - [[package]] name = "digest" version = "0.8.1" @@ -598,17 +589,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac965ea399ec3a25ac7d13b8affd4b8f39325cca00858ddf5eb29b79e6b14b08" dependencies = [ "bytes", - "ct-logs", "futures-util", "hyper", "log", "rustls 0.17.0", - "rustls-native-certs", "tokio", "tokio-rustls", "webpki", ] +[[package]] +name = "hyper-tls" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3adcd308402b9553630734e9c36b77a7e48b3821251ca2493e8cd596763aafaa" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-tls", +] + [[package]] name = "idna" version = "0.2.0" @@ -1090,11 +1092,11 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.10.4" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b81e49ddec5109a9dcfc5f2a317ff53377c915e9ae9d4f2fb50914b85614e2" +checksum = "3b82c9238b305f26f53443e3a4bc8528d64b8d0bee408ec949eb7bf5635ec680" dependencies = [ - "base64 0.11.0", + "base64 0.12.0", "bytes", "encoding_rs", "futures-core", @@ -1103,25 +1105,27 @@ dependencies = [ "http-body", "hyper", "hyper-rustls", + "hyper-tls", "js-sys", "lazy_static", "log", "mime", "mime_guess", + "native-tls", "percent-encoding", "pin-project-lite", "rustls 0.17.0", "serde", "serde_json", "serde_urlencoded", - "time", "tokio", "tokio-rustls", + "tokio-tls", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots 0.18.0", + "webpki-roots 0.19.0", "winreg", ] @@ -1172,18 +1176,6 @@ dependencies = [ "webpki", ] -[[package]] -name = "rustls-native-certs" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75ffeb84a6bd9d014713119542ce415db3a3e4748f0bfce1e1416cd224a23a5" -dependencies = [ - "openssl-probe", - "rustls 0.17.0", - "schannel", - "security-framework", -] - [[package]] name = "ryu" version = "1.0.3" @@ -1381,6 +1373,7 @@ version = "0.1.0" dependencies = [ "dotenv", "lazy_static", + "reqwest", "serenity", "sqlx", "tokio", @@ -1600,6 +1593,16 @@ dependencies = [ "webpki", ] +[[package]] +name = "tokio-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a70f4fcd7b3b24fb194f837560168208f669ca8cb70d0c4b862944452396343" +dependencies = [ + "native-tls", + "tokio", +] + [[package]] name = "tokio-util" version = "0.3.1" @@ -1844,15 +1847,6 @@ dependencies = [ "webpki", ] -[[package]] -name = "webpki-roots" -version = "0.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91cd5736df7f12a964a5067a12c62fa38e1bd8080aff1f80bc29be7c80d19ab4" -dependencies = [ - "webpki", -] - [[package]] name = "webpki-roots" version = "0.19.0" @@ -1898,9 +1892,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "winreg" -version = "0.6.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2986deb581c4fe11b621998a5e53361efe6b48a151178d0cd9eeffa4dc6acc9" +checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" dependencies = [ "winapi 0.3.8", ] diff --git a/Cargo.toml b/Cargo.toml index 91c4d0a..158cc83 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,3 +10,4 @@ sqlx = {version = "0.3.5", default-features = false, features = ["runtime-tokio" dotenv = "0.15" tokio = {version = "0.2.19", features = ["fs", "sync", "process", "io-util"]} lazy_static = "1.4.0" +reqwest = "0.10.6" diff --git a/src/main.rs b/src/main.rs index a4fa043..f382d32 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,8 @@ #[macro_use] extern crate lazy_static; +extern crate reqwest; + mod guilddata; mod sound; mod error; @@ -24,6 +26,7 @@ use serenity::{ }, model::{ channel::Message, + guild::Guild, id::{ GuildId, RoleId, @@ -85,6 +88,12 @@ impl TypeMapKey for VoiceGuilds { type Value = Arc>>; } +struct ReqwestClient; + +impl TypeMapKey for ReqwestClient { + type Value = Arc; +} + static THEME_COLOR: u32 = 0x00e0f3; lazy_static! { @@ -220,6 +229,30 @@ struct Handler; #[serenity::async_trait] impl EventHandler for Handler { + async fn guild_create(&self, ctx: Context, _guild: Guild, is_new: bool) { + if is_new { + if let Ok(token) = env::var("DISCORDBOTS_TOKEN") { + let guild_count = ctx.cache.guild_count().await; + + let mut hm = HashMap::new(); + hm.insert("server_count", guild_count); + + let client = ctx.data.read().await + .get::().cloned().expect("Could not get ReqwestClient from data"); + + let response = client.post(format!("https://top.gg/api/bots/{}/stats", ctx.cache.current_user_id().await.as_u64()).as_str()) + .header("Authorization", token) + .json(&hm) + .send() + .await; + + if let Ok(res) = response { + println!("DiscordBots Response: {:?}", res); + } + } + } + } + async fn voice_state_update(&self, ctx: Context, guild_id_opt: Option, old: Option, new: VoiceState) { if let (Some(guild_id), Some(user_channel)) = (guild_id_opt, new.channel_id) { @@ -388,6 +421,8 @@ async fn main() -> Result<(), Box> { data.insert::(Arc::clone(&client.voice_manager)); data.insert::(voice_guilds.clone()); + + data.insert::(Arc::new(reqwest::Client::new())); } let cvm = Arc::clone(&client.voice_manager);