summaryrefslogtreecommitdiff
path: root/crates/bot-client/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/bot-client/src/lib.rs')
-rw-r--r--crates/bot-client/src/lib.rs79
1 files changed, 0 insertions, 79 deletions
diff --git a/crates/bot-client/src/lib.rs b/crates/bot-client/src/lib.rs
deleted file mode 100644
index 851b853..0000000
--- a/crates/bot-client/src/lib.rs
+++ /dev/null
@@ -1,79 +0,0 @@
-use bot_config::Config;
-use bot_error::Error;
-use bot_http as http;
-
-use std::sync::Arc;
-
-use log::trace;
-use serenity::prelude::{Client, GatewayIntents, TypeMapKey};
-
-mod handler;
-
-use handler::Handler;
-
-/// Container for [`http::Client`]
-struct SharedHttp;
-
-impl TypeMapKey for SharedHttp {
- type Value = Arc<http::Client>;
-}
-
-/// Container for [`Config`]
-struct SharedConfig;
-
-impl TypeMapKey for SharedConfig {
- type Value = Arc<Config>;
-}
-
-/// Fetch our bot token
-fn token() -> Result<String, Error> {
- let token = std::env::var("DISCORD_BOT_TOKEN")?;
- Ok(token)
-}
-
-/// Create our client
-///
-/// # Errors
-///
-/// Will return [`Err`] if a [`Client`] cannot be created or configuration
-/// cannot be created from the environment.
-///
-/// # Panics
-///
-/// Will [`panic!`] if the bot token isn't found or the ctrl+c handler can't be made
-pub async fn get() -> Result<Client, Error> {
- let token = token().expect("Couldn't find token in environment! Is DISCORD_BOT_TOKEN set?");
-
- let intents = GatewayIntents::default();
- trace!("Creating client");
- let client = Client::builder(token, intents)
- .event_handler(Handler)
- .await?;
-
- // add state stuff
- let http_client = <http::Client as http::ClientExt>::default();
- let config = Config::from_env()?;
-
- {
- let mut data = client.data.write().await;
-
- data.insert::<SharedHttp>(Arc::new(http_client));
- data.insert::<SharedConfig>(Arc::new(config.clone()));
- }
-
- let shard_manager = client.shard_manager.clone();
-
- // gracefully shutdown on ctrl+c
- tokio::spawn(async move {
- #[cfg(target_family = "unix")]
- tokio::signal::ctrl_c()
- .await
- .expect("Couldn't register ctrl+c handler!");
- shard_manager.shutdown_all().await;
- });
-
- // run our jobs
- bot_jobs::dispatch(config)?;
-
- Ok(client)
-}