From b5da275320488f1e14944b08820fff6e56d24712 Mon Sep 17 00:00:00 2001 From: Christine Dodrill Date: Wed, 8 Sep 2021 18:18:18 -0400 Subject: [PATCH] enable furbooru command Signed-off-by: Christine Dodrill --- Cargo.lock | 56 ++++++++++++++++++++-------------------- src/commands/furbooru.rs | 55 +++++++++++++++++++-------------------- src/main.rs | 11 ++++---- 3 files changed, 60 insertions(+), 62 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index e5e80ed..ad67ab6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -733,9 +733,9 @@ checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" [[package]] name = "js-sys" -version = "0.3.53" +version = "0.3.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4bf49d50e2961077d9c99f4b7997d770a1114f087c3c2e0069b36c13fc2979d" +checksum = "1866b355d9c878e5e607473cbe3f63282c0b7aad2db1dbebf55076c686918254" dependencies = [ "wasm-bindgen", ] @@ -1230,8 +1230,8 @@ dependencies = [ [[package]] name = "robespierre" -version = "0.1.0" -source = "git+https://github.com/dblanovschi/robespierre#0806bc28e7cd06f258457f719ceb5d6408c3d010" +version = "0.2.0" +source = "git+https://github.com/dblanovschi/robespierre#988ea48917d7169e86d1c91bdfb16aac29b9dbe3" dependencies = [ "async-std", "async-trait", @@ -1251,8 +1251,8 @@ dependencies = [ [[package]] name = "robespierre-cache" -version = "0.1.0" -source = "git+https://github.com/dblanovschi/robespierre#0806bc28e7cd06f258457f719ceb5d6408c3d010" +version = "0.2.0" +source = "git+https://github.com/dblanovschi/robespierre#988ea48917d7169e86d1c91bdfb16aac29b9dbe3" dependencies = [ "async-trait", "robespierre-models", @@ -1261,8 +1261,8 @@ dependencies = [ [[package]] name = "robespierre-events" -version = "0.1.0" -source = "git+https://github.com/dblanovschi/robespierre#0806bc28e7cd06f258457f719ceb5d6408c3d010" +version = "0.2.0" +source = "git+https://github.com/dblanovschi/robespierre#988ea48917d7169e86d1c91bdfb16aac29b9dbe3" dependencies = [ "async-std", "async-trait", @@ -1279,8 +1279,8 @@ dependencies = [ [[package]] name = "robespierre-fw-macros" -version = "0.1.0" -source = "git+https://github.com/dblanovschi/robespierre#0806bc28e7cd06f258457f719ceb5d6408c3d010" +version = "0.2.0" +source = "git+https://github.com/dblanovschi/robespierre#988ea48917d7169e86d1c91bdfb16aac29b9dbe3" dependencies = [ "proc-macro2", "quote", @@ -1289,8 +1289,8 @@ dependencies = [ [[package]] name = "robespierre-http" -version = "0.1.0" -source = "git+https://github.com/dblanovschi/robespierre#0806bc28e7cd06f258457f719ceb5d6408c3d010" +version = "0.2.0" +source = "git+https://github.com/dblanovschi/robespierre#988ea48917d7169e86d1c91bdfb16aac29b9dbe3" dependencies = [ "reqwest", "robespierre-models", @@ -1301,8 +1301,8 @@ dependencies = [ [[package]] name = "robespierre-models" -version = "0.1.0" -source = "git+https://github.com/dblanovschi/robespierre#0806bc28e7cd06f258457f719ceb5d6408c3d010" +version = "0.2.0" +source = "git+https://github.com/dblanovschi/robespierre#988ea48917d7169e86d1c91bdfb16aac29b9dbe3" dependencies = [ "bitflags", "chrono", @@ -1932,9 +1932,9 @@ checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" [[package]] name = "wasm-bindgen" -version = "0.2.76" +version = "0.2.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce9b1b516211d33767048e5d47fa2a381ed8b76fc48d2ce4aa39877f9f183e0" +checksum = "5e68338db6becec24d3c7977b5bf8a48be992c934b5d07177e3931f5dc9b076c" dependencies = [ "cfg-if", "serde", @@ -1944,9 +1944,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.76" +version = "0.2.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe8dc78e2326ba5f845f4b5bf548401604fa20b1dd1d365fb73b6c1d6364041" +checksum = "f34c405b4f0658583dba0c1c7c9b694f3cac32655db463b56c254a1c75269523" dependencies = [ "bumpalo", "lazy_static", @@ -1959,9 +1959,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.26" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95fded345a6559c2cfee778d562300c581f7d4ff3edb9b0d230d69800d213972" +checksum = "a87d738d4abc4cf22f6eb142f5b9a81301331ee3c767f2fef2fda4e325492060" dependencies = [ "cfg-if", "js-sys", @@ -1971,9 +1971,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.76" +version = "0.2.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44468aa53335841d9d6b6c023eaab07c0cd4bddbcfdee3e2bb1e8d2cb8069fef" +checksum = "b9d5a6580be83b19dc570a8f9c324251687ab2184e57086f71625feb57ec77c8" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1981,9 +1981,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.76" +version = "0.2.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0195807922713af1e67dc66132c7328206ed9766af3858164fb583eedc25fbad" +checksum = "e3775a030dc6f5a0afd8a84981a21cc92a781eb429acef9ecce476d0c9113e92" dependencies = [ "proc-macro2", "quote", @@ -1994,15 +1994,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.76" +version = "0.2.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acdb075a845574a1fa5f09fd77e43f7747599301ea3417a9fbffdeedfc1f4a29" +checksum = "c279e376c7a8e8752a8f1eaa35b7b0bee6bb9fb0cdacfa97cc3f1f289c87e2b4" [[package]] name = "web-sys" -version = "0.3.53" +version = "0.3.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "224b2f6b67919060055ef1a67807367c2066ed520c3862cc013d26cf893a783c" +checksum = "0a84d70d1ec7d2da2d26a5bd78f4bca1b8c3254805363ce743b7a05bc30d195a" dependencies = [ "js-sys", "wasm-bindgen", diff --git a/src/commands/furbooru.rs b/src/commands/furbooru.rs index 1db4d5b..1774fd4 100644 --- a/src/commands/furbooru.rs +++ b/src/commands/furbooru.rs @@ -1,21 +1,20 @@ use furbooru::Client; -use robespierre::framework::standard::{macros::command, CommandResult, FwContext}; +use robespierre::framework::standard::{ + extractors::RawArgs, macros::command, CommandResult, FwContext, +}; use robespierre::model::MessageExt; use robespierre::UserData; use robespierre_models::channel::Message; use std::sync::Arc; -use tokio::sync::Mutex; pub struct ClientKey; impl robespierre::typemap::Key for ClientKey { - type Value = Arc>; + type Value = Arc; } -pub fn make(username: String, api_key: String) -> Arc> { - Arc::new(Mutex::new( - Client::new(user_agent(username), api_key).unwrap(), - )) +pub fn make(username: String, api_key: String) -> Arc { + Arc::new(Client::new(user_agent(username), api_key).unwrap()) } pub fn user_agent(username: String) -> String { @@ -27,31 +26,31 @@ pub fn user_agent(username: String) -> String { ) } -// #[command] -// pub async fn search_impl(ctx: &FwContext, msg: &Message) -> CommandResult { -// let data = ctx.data_lock_read().await; -// let client = data.get::().unwrap().clone(); -// let client = client.lock().await; +#[command] +pub async fn search(ctx: &FwContext, msg: &Message, args: RawArgs) -> CommandResult { + let data = ctx.data_lock_read().await; + let client = data.get::().unwrap().clone(); + let args = format!("{}", args.0); -// let mut imgs = client.image_search(args, 0_u64).await?; + let mut imgs = client.image_search(args, 0_u64).await?; -// let mut response = String::new(); + let mut response = String::new(); -// imgs.truncate(3); + imgs.truncate(3); -// for mut post in imgs.into_iter() { -// post.tags.sort(); -// post.tags.truncate(8); + for mut post in imgs.into_iter() { + post.tags.sort(); + post.tags.truncate(8); -// response.push_str(&format!( -// "<{}> - {} - <{}>\n", -// format!("http://furbooru.org/{}", post.id), -// post.tags.join(", "), -// post.view_url, -// )); -// } + response.push_str(&format!( + "<{}> - {} - <{}>\n", + format!("http://furbooru.org/{}", post.id), + post.tags.join(", "), + post.view_url, + )); + } -// msg.reply(ctx, response).await?; + msg.reply(ctx, response).await?; -// Ok(()) -// } + Ok(()) +} diff --git a/src/main.rs b/src/main.rs index a6c5034..8575e2b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -14,7 +14,6 @@ use robespierre_http::Http; use robespierre_models::{channel::Message, events::ReadyEvent}; use std::sync::atomic::{AtomicUsize, Ordering}; use std::sync::Arc; -use tokio::sync::Mutex; struct CommandCounterKey; @@ -25,7 +24,7 @@ impl robespierre::typemap::Key for CommandCounterKey { struct ReqwestClientKey; impl robespierre::typemap::Key for ReqwestClientKey { - type Value = Arc>; + type Value = Arc; } mod commands; @@ -55,12 +54,12 @@ async fn main() -> Result<()> { config.furbooru_bot_owner, )); data.insert::(Arc::new(AtomicUsize::new(0))); - data.insert::(Arc::new(Mutex::new( + data.insert::(Arc::new( reqwest::Client::builder() .user_agent(APP_USER_AGENT) .build() .unwrap(), - ))); + )); let context = Context::new(http, data).with_cache(CacheConfig::default()); let fw = StandardFramework::default() @@ -70,7 +69,7 @@ async fn main() -> Result<()> { .command(|| Command::new("ping", ping as CommandCodeFn)) .command(|| Command::new("command_counter", command_counter as CommandCodeFn)) .command(|| Command::new("front", current_front as CommandCodeFn)) - // .command(|| Command::new("fb", furbooru::search as CommandCodeFn)) + .command(|| Command::new("fb", furbooru::search as CommandCodeFn)) }); let handler = FrameworkWrap::new(fw, Handler); let handler = CacheWrap::new(EventHandlerWrap::new(handler)); @@ -109,7 +108,7 @@ async fn command_counter(ctx: &FwContext, msg: &Message) -> CommandResult { async fn current_front(ctx: &FwContext, msg: &Message) -> CommandResult { let data = ctx.data_lock_read().await; let client = data.get::().unwrap().clone(); - let client = client.lock().await; + let client = client; let front = client .get("https://home.cetacean.club/front")