updated songbird. removed the track thing because it wasnt useful
This commit is contained in:
parent
29dd3532bb
commit
900fe6a4f0
10
Cargo.lock
generated
10
Cargo.lock
generated
@ -1808,8 +1808,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "songbird"
|
||||
version = "0.1.5"
|
||||
source = "git+https://github.com/FelixMcFelix/songbird?branch=fix-driver-leave-join#a5c4f915bc24c09460c36156a96b38e2957bceb4"
|
||||
version = "0.1.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "358efdd4b111021b0b7499fa087aa3cba8f01ae7210d37ab45620e4791c09ab8"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"async-tungstenite 0.13.1",
|
||||
@ -1826,6 +1827,7 @@ dependencies = [
|
||||
"serenity",
|
||||
"serenity-voice-model",
|
||||
"spin_sleep",
|
||||
"spinning_top",
|
||||
"streamcatcher",
|
||||
"tokio",
|
||||
"tracing",
|
||||
@ -1873,9 +1875,9 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "spinning_top"
|
||||
version = "0.2.3"
|
||||
version = "0.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "8bd0ab6b8c375d2d963503b90d3770010d95bc3b5f98036f948dee24bf4e8879"
|
||||
checksum = "7e529d73e80d64b5f2631f9035113347c578a1c9c7774b83a2b880788459ab36"
|
||||
dependencies = [
|
||||
"lock_api",
|
||||
]
|
||||
|
@ -12,7 +12,7 @@ tokio = { version = "1.0", features = ["fs", "process", "io-util"] }
|
||||
lazy_static = "1.4"
|
||||
reqwest = "0.11"
|
||||
env_logger = "0.8"
|
||||
songbird = { git = "https://github.com/FelixMcFelix/songbird", branch = "fix-driver-leave-join" }
|
||||
songbird = "0.1.6"
|
||||
regex = "1.4"
|
||||
log = "0.4"
|
||||
serde_json = "1.0"
|
||||
|
@ -1,11 +1,7 @@
|
||||
use serenity::async_trait;
|
||||
use serenity::model::id::GuildId;
|
||||
use songbird::Event;
|
||||
use songbird::EventContext;
|
||||
use songbird::EventHandler as SongbirdEventHandler;
|
||||
use std::collections::HashMap;
|
||||
use std::sync::Arc;
|
||||
use tokio::sync::RwLock;
|
||||
|
||||
pub struct RestartTrack;
|
||||
|
||||
@ -19,22 +15,3 @@ impl SongbirdEventHandler for RestartTrack {
|
||||
None
|
||||
}
|
||||
}
|
||||
|
||||
pub struct UpdateTrackCount {
|
||||
pub guild_id: GuildId,
|
||||
pub track_count: Arc<RwLock<HashMap<GuildId, u32>>>,
|
||||
}
|
||||
|
||||
#[async_trait]
|
||||
impl SongbirdEventHandler for UpdateTrackCount {
|
||||
async fn act(&self, _ctx: &EventContext<'_>) -> Option<Event> {
|
||||
{
|
||||
let mut write_lock = self.track_count.write().await;
|
||||
|
||||
let current = write_lock.get(&self.guild_id).cloned();
|
||||
write_lock.insert(self.guild_id, current.unwrap_or(1) - 1);
|
||||
}
|
||||
|
||||
None
|
||||
}
|
||||
}
|
||||
|
85
src/main.rs
85
src/main.rs
@ -10,7 +10,7 @@ mod guild_data;
|
||||
mod sound;
|
||||
|
||||
use crate::{
|
||||
event_handlers::{RestartTrack, UpdateTrackCount},
|
||||
event_handlers::RestartTrack,
|
||||
framework::RegexFramework,
|
||||
guild_data::{CtxGuildData, GuildData},
|
||||
sound::Sound,
|
||||
@ -39,7 +39,7 @@ use songbird::{
|
||||
ffmpeg,
|
||||
input::{cached::Memory, Input},
|
||||
tracks::TrackHandle,
|
||||
Call, Event, SerenityInit, TrackEvent,
|
||||
Call, Event, SerenityInit,
|
||||
};
|
||||
|
||||
use sqlx::mysql::MySqlPool;
|
||||
@ -74,22 +74,12 @@ impl TypeMapKey for GuildDataCache {
|
||||
type Value = Arc<DashMap<GuildId, Arc<RwLock<GuildData>>>>;
|
||||
}
|
||||
|
||||
struct GuildTrackCount;
|
||||
|
||||
impl TypeMapKey for GuildTrackCount {
|
||||
type Value = Arc<RwLock<HashMap<GuildId, u32>>>;
|
||||
}
|
||||
|
||||
const THEME_COLOR: u32 = 0x00e0f3;
|
||||
|
||||
lazy_static! {
|
||||
static ref MAX_SOUNDS: u32 = env::var("MAX_SOUNDS").unwrap().parse::<u32>().unwrap();
|
||||
static ref PATREON_GUILD: u64 = env::var("PATREON_GUILD").unwrap().parse::<u64>().unwrap();
|
||||
static ref PATREON_ROLE: u64 = env::var("PATREON_ROLE").unwrap().parse::<u64>().unwrap();
|
||||
static ref AUTODISCONNECT_TIMER: u64 = env::var("AUTODISCONNECT_TIMER")
|
||||
.unwrap_or("300".to_string())
|
||||
.parse::<u64>()
|
||||
.unwrap();
|
||||
}
|
||||
|
||||
// create event handler for bot
|
||||
@ -159,20 +149,7 @@ impl EventHandler for Handler {
|
||||
if channel.members(&ctx).await.map(|m| m.len()).unwrap_or(0) <= 1 {
|
||||
let songbird = songbird::get(&ctx).await.unwrap();
|
||||
|
||||
{
|
||||
let track_count = ctx
|
||||
.data
|
||||
.read()
|
||||
.await
|
||||
.get::<GuildTrackCount>()
|
||||
.cloned()
|
||||
.unwrap();
|
||||
|
||||
let mut write_lock = track_count.write().await;
|
||||
write_lock.insert(guild_id, 0);
|
||||
}
|
||||
|
||||
let _ = songbird.leave(guild_id).await;
|
||||
let _ = songbird.remove(guild_id).await;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -394,12 +371,9 @@ async fn main() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
|
||||
.unwrap();
|
||||
|
||||
let guild_data_cache = Arc::new(DashMap::new());
|
||||
let guild_track_count = Arc::new(RwLock::new(HashMap::new()));
|
||||
|
||||
let mut data = client.data.write().await;
|
||||
|
||||
data.insert::<GuildDataCache>(guild_data_cache);
|
||||
data.insert::<GuildTrackCount>(guild_track_count);
|
||||
data.insert::<MySQL>(mysql_pool);
|
||||
|
||||
data.insert::<ReqwestClient>(Arc::new(reqwest::Client::new()));
|
||||
@ -597,7 +571,7 @@ async fn play_cmd(ctx: &Context, msg: &Message, args: Args, loop_: bool) -> Comm
|
||||
|
||||
let mut lock = call_handler.lock().await;
|
||||
|
||||
let track_handle = play_audio(
|
||||
play_audio(
|
||||
sound,
|
||||
guild_data.read().await.volume,
|
||||
&mut lock,
|
||||
@ -605,29 +579,6 @@ async fn play_cmd(ctx: &Context, msg: &Message, args: Args, loop_: bool) -> Comm
|
||||
loop_,
|
||||
)
|
||||
.await?;
|
||||
|
||||
let track_count = ctx
|
||||
.data
|
||||
.read()
|
||||
.await
|
||||
.get::<GuildTrackCount>()
|
||||
.cloned()
|
||||
.unwrap();
|
||||
|
||||
{
|
||||
let mut write_lock = track_count.write().await;
|
||||
|
||||
let current = write_lock.get(&guild_id).cloned();
|
||||
write_lock.insert(guild_id, current.unwrap_or(0) + 1);
|
||||
}
|
||||
|
||||
let _ = track_handle.add_event(
|
||||
Event::Track(TrackEvent::End),
|
||||
UpdateTrackCount {
|
||||
guild_id,
|
||||
track_count,
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
msg.channel_id
|
||||
@ -703,21 +654,6 @@ async fn play_ambience(ctx: &Context, msg: &Message, args: Args) -> CommandResul
|
||||
RestartTrack {},
|
||||
);
|
||||
|
||||
{
|
||||
let track_count = ctx
|
||||
.data
|
||||
.read()
|
||||
.await
|
||||
.get::<GuildTrackCount>()
|
||||
.cloned()
|
||||
.unwrap();
|
||||
|
||||
let mut write_lock = track_count.write().await;
|
||||
|
||||
let current = write_lock.get(&msg.guild_id.unwrap()).cloned();
|
||||
write_lock.insert(msg.guild_id.unwrap(), current.unwrap_or(0) + 1);
|
||||
}
|
||||
|
||||
msg.channel_id
|
||||
.say(&ctx, format!("Playing ambience **{}**", search_name))
|
||||
.await?;
|
||||
@ -759,19 +695,6 @@ __Available ambience sounds:__
|
||||
async fn stop_playing(ctx: &Context, msg: &Message, _args: Args) -> CommandResult {
|
||||
let guild_id = msg.guild_id.unwrap();
|
||||
|
||||
{
|
||||
let track_count = ctx
|
||||
.data
|
||||
.read()
|
||||
.await
|
||||
.get::<GuildTrackCount>()
|
||||
.cloned()
|
||||
.unwrap();
|
||||
|
||||
let mut write_lock = track_count.write().await;
|
||||
write_lock.insert(guild_id, 0);
|
||||
}
|
||||
|
||||
let songbird = songbird::get(ctx).await.unwrap();
|
||||
let call_opt = songbird.get(guild_id);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user