Improve client initialization

Signed-off-by: trivernis <trivernis@protonmail.com>
pull/27/head
trivernis 3 years ago
parent 726bee497a
commit 46b0981b6a
Signed by: Trivernis
GPG Key ID: DFFFCC2C7A02DB45

@ -20,7 +20,6 @@ use crate::utils::error::{BotError, BotResult};
use bot_serenityutils::menu::EventDrivenMessageContainer;
use lavalink_rs::LavalinkClient;
use serenity::framework::standard::buckets::LimitedFor;
use serenity::http::Http;
use std::env;
use std::sync::Arc;
use std::time::SystemTime;
@ -29,15 +28,23 @@ use tokio::sync::Mutex;
pub async fn get_client() -> BotResult<Client> {
let token = env::var("BOT_TOKEN").map_err(|_| BotError::MissingToken)?;
let database = get_database()?;
let http = Http::new_with_token(&token);
let current_application = http.get_current_application_info().await?;
let client = Client::builder(token)
.event_handler(Handler)
.framework(get_framework().await)
.register_songbird()
.type_map_insert::<Store>(StoreData::new())
.type_map_insert::<DatabaseContainer>(database)
.type_map_insert::<MusicPlayers>(HashMap::new())
.type_map_insert::<EventDrivenMessageContainer>(Arc::new(Mutex::new(HashMap::new())))
.await?;
let data = client.data.clone();
let current_application = client
.cache_and_http
.http
.get_current_application_info()
.await?;
let lava_client = LavalinkClient::builder(current_application.id.0)
.set_host(env::var("LAVALINK_HOST").unwrap_or("172.0.0.1".to_string()))
.set_password(env::var("LAVALINK_PASSWORD").expect("Missing lavalink password"))
@ -51,10 +58,6 @@ pub async fn get_client() -> BotResult<Client> {
.await?;
{
let mut data = client.data.write().await;
data.insert::<Store>(StoreData::new());
data.insert::<DatabaseContainer>(database);
data.insert::<EventDrivenMessageContainer>(Arc::new(Mutex::new(HashMap::new())));
data.insert::<MusicPlayers>(HashMap::new());
data.insert::<Lavalink>(Arc::new(lava_client));
}

@ -127,6 +127,7 @@ impl EventHandler for Handler {
player.set_leave_flag(count == 0);
}
}
// handle disconnects
if let (Some(state), None) = (old_state, new_state.channel_id) {
let current_user = ctx.cache.current_user().await;

Loading…
Cancel
Save