1
0

3 Коммитууд 22185b9328 ... 1d1fa3b97c

Эзэн SHA1 Мессеж Огноо
  Frans Bergman 1d1fa3b97c Do not count bot user when voting to skip 10 сар өмнө
  Frans Bergman 4b11202152 Update serenity to 0.12 10 сар өмнө
  Frans Bergman 22185b9328 WIP: Update serenity to 0.12 10 сар өмнө

+ 104 - 0
Cargo.lock

@@ -520,6 +520,12 @@ dependencies = [
  "version_check",
 ]
 
+[[package]]
+name = "extended"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af9673d8203fcb076b19dfd17e38b3d4ae9f44959416ea532ce72415a6020365"
+
 [[package]]
 name = "fastrand"
 version = "2.1.1"
@@ -1180,6 +1186,7 @@ dependencies = [
  "serde_json",
  "serenity",
  "songbird",
+ "symphonia",
  "symphonia-core",
  "tokio",
 ]
@@ -2198,10 +2205,60 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "815c942ae7ee74737bb00f965fa5b5a2ac2ce7b6c01c0cc169bbeaf7abd5f5a9"
 dependencies = [
  "lazy_static",
+ "symphonia-bundle-flac",
+ "symphonia-codec-adpcm",
+ "symphonia-codec-pcm",
+ "symphonia-codec-vorbis",
  "symphonia-core",
+ "symphonia-format-mkv",
+ "symphonia-format-ogg",
+ "symphonia-format-riff",
  "symphonia-metadata",
 ]
 
+[[package]]
+name = "symphonia-bundle-flac"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "72e34f34298a7308d4397a6c7fbf5b84c5d491231ce3dd379707ba673ab3bd97"
+dependencies = [
+ "log",
+ "symphonia-core",
+ "symphonia-metadata",
+ "symphonia-utils-xiph",
+]
+
+[[package]]
+name = "symphonia-codec-adpcm"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c94e1feac3327cd616e973d5be69ad36b3945f16b06f19c6773fc3ac0b426a0f"
+dependencies = [
+ "log",
+ "symphonia-core",
+]
+
+[[package]]
+name = "symphonia-codec-pcm"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f395a67057c2ebc5e84d7bb1be71cce1a7ba99f64e0f0f0e303a03f79116f89b"
+dependencies = [
+ "log",
+ "symphonia-core",
+]
+
+[[package]]
+name = "symphonia-codec-vorbis"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5a98765fb46a0a6732b007f7e2870c2129b6f78d87db7987e6533c8f164a9f30"
+dependencies = [
+ "log",
+ "symphonia-core",
+ "symphonia-utils-xiph",
+]
+
 [[package]]
 name = "symphonia-core"
 version = "0.5.4"
@@ -2215,6 +2272,43 @@ dependencies = [
  "log",
 ]
 
+[[package]]
+name = "symphonia-format-mkv"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1bb43471a100f7882dc9937395bd5ebee8329298e766250b15b3875652fe3d6f"
+dependencies = [
+ "lazy_static",
+ "log",
+ "symphonia-core",
+ "symphonia-metadata",
+ "symphonia-utils-xiph",
+]
+
+[[package]]
+name = "symphonia-format-ogg"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ada3505789516bcf00fc1157c67729eded428b455c27ca370e41f4d785bfa931"
+dependencies = [
+ "log",
+ "symphonia-core",
+ "symphonia-metadata",
+ "symphonia-utils-xiph",
+]
+
+[[package]]
+name = "symphonia-format-riff"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "05f7be232f962f937f4b7115cbe62c330929345434c834359425e043bfd15f50"
+dependencies = [
+ "extended",
+ "log",
+ "symphonia-core",
+ "symphonia-metadata",
+]
+
 [[package]]
 name = "symphonia-metadata"
 version = "0.5.4"
@@ -2227,6 +2321,16 @@ dependencies = [
  "symphonia-core",
 ]
 
+[[package]]
+name = "symphonia-utils-xiph"
+version = "0.5.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "484472580fa49991afda5f6550ece662237b00c6f562c7d9638d1b086ed010fe"
+dependencies = [
+ "symphonia-core",
+ "symphonia-metadata",
+]
+
 [[package]]
 name = "syn"
 version = "1.0.109"

+ 6 - 2
Cargo.toml

@@ -11,7 +11,11 @@ futures = "0.3.5"
 lazy_static = "1.4.0"
 rand = "0.8.3"
 serenity = {version = "0.12", features = ["standard_framework", "voice", "rustls_backend", "cache", "framework"] }
-songbird = {version = "0.4.3", features = ["serenity", "driver"]}
-symphonia-core = "0.5.4"
+songbird = {version = "0.4.3", features = ["serenity", "driver", "builtin-queue"]}
 tokio = { version = "1.0", features = ["macros", "rt-multi-thread", "time", "sync"] }
 serde_json = "1.0.81"
+symphonia-core = "0.5"
+
+[dependencies.symphonia]
+version = "0.5"
+features = ["pcm"]

+ 1 - 1
src/audio/audio.rs

@@ -192,7 +192,7 @@ async fn skip(ctx: &Context, msg: &Message) -> CommandResult {
         let guild = msg.guild(&ctx.cache).ok_or("aaa".to_string())?;
         let state = guild.voice_states.get(&msg.author.id).ok_or("aaa")?;
         let channel = guild.channels.get(&state.channel_id.unwrap());
-        channel.unwrap().members(&ctx.cache).unwrap().len()
+        channel.unwrap().members(&ctx.cache).unwrap().len() - 1 // Do not count bot user
     };
 
     if let Err(why) = AudioState::vote_skip(audio_state, msg.author.clone(), total_users).await {

+ 2 - 4
src/audio/audio_state.rs

@@ -8,7 +8,7 @@ use serenity::{
     prelude::Mutex as SerenityMutex,
 };
 use songbird::{
-    input::{Input, RawAdapter},
+    input::RawAdapter,
     tracks::TrackHandle,
     Call, Event, EventContext, EventHandler as VoiceEventHandler, TrackEvent,
 };
@@ -102,13 +102,11 @@ impl AudioState {
             }
         };
         let source = RawAdapter::new(source, 48000, 2);
-        let input: Input = source.into();
-        let input = input.make_live_async().await.expect("Should work?");
 
         let handler = state.handler.clone();
         let mut handler = handler.lock().await;
 
-        let handle = handler.play_input(input);
+        let handle = handler.play_input(source.into());
         if let Err(e) = handle.set_volume(state.volume) {
             println!("{}", e);
         }

+ 3 - 6
src/audio/subprocess.rs

@@ -1,9 +1,6 @@
 use serde_json::Value;
 use symphonia_core::io::{MediaSourceStream, MediaSourceStreamOptions};
-use std::{
-    io::BufReader,
-    process::{Command, Stdio},
-};
+use std::process::{Command, Stdio};
 use symphonia_core::io::ReadOnlySource;
 use tokio::process::Command as TokioCommand;
 
@@ -54,8 +51,8 @@ pub async fn ffmpeg_pcm(url: &str) -> Result<MediaSourceStream, String> {
         .arg("pcm_f32le")
         .arg("pipe:1")
         .stdout(Stdio::piped())
-        .stderr(Stdio::inherit());
-    println!("{:?}", cmd.get_args());
+        .stderr(Stdio::null());
+
     let child = match cmd.spawn() {
         Ok(child) => child,
         Err(error) => {