songbird music support init

This commit is contained in:
2024-01-30 15:17:36 +01:00
parent edcf79cf8c
commit a5a9779cb9
9 changed files with 3226 additions and 4 deletions

View File

@@ -1,3 +1,79 @@
fn main() {
println!("Hello, world!");
use songbird::SerenityInit;
use reqwest::Client as HttpClient;
use serenity::client::Context;
use serenity::{
async_trait,
client::{Client, EventHandler},
framework::{
standard::{
macros::group,
Configuration,
},
StandardFramework,
},
model::gateway::Ready,
prelude::{GatewayIntents, TypeMapKey},
};
mod commands;
use crate::commands::music::join::*;
use crate::commands::music::deafen::*;
use crate::commands::music::leave::*;
struct HttpKey;
impl TypeMapKey for HttpKey {
type Value = HttpClient;
}
struct Handler;
#[async_trait]
impl EventHandler for Handler {
async fn ready(&self, _: Context, ready: Ready) {
println!("{} is connected!", ready.user.name);
}
}
#[group]
#[commands(
join, deafen, leave
)]
struct General;
#[tokio::main]
async fn main() {
dotenv::dotenv().expect("Failed to load .env file.");
tracing_subscriber::fmt::init();
let token =
std::env::var("DISCORD_TOKEN").expect("Environment variable `DISCORD_TOKEN` not found!");
let prefix = std::env::var("PREFIX").expect("Environment variable `PREFIX` not found!");
let framework = StandardFramework::new().group(&GENERAL_GROUP);
framework.configure(Configuration::new().prefix(prefix));
let intents = GatewayIntents::non_privileged() | GatewayIntents::MESSAGE_CONTENT;
let mut client = Client::builder(&token, intents)
.event_handler(Handler)
.framework(framework)
.register_songbird()
.type_map_insert::<HttpKey>(HttpClient::new())
.await
.expect("Error creating client");
tokio::spawn(async move {
let _ = client
.start()
.await
.map_err(|why| println!("Client ended: {:?}", why));
});
let _signal_err = tokio::signal::ctrl_c().await;
println!("Recieved Ctrl-C, shutting down.");
}