@elizaos/plugin-discord 1.0.3 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -2586,8 +2586,6 @@ var MessageManager = class {
2586
2586
  };
2587
2587
 
2588
2588
  // src/voice.ts
2589
- import { EventEmitter } from "node:events";
2590
- import { pipeline } from "node:stream";
2591
2589
  import {
2592
2590
  NoSubscriberBehavior,
2593
2591
  StreamType,
@@ -2602,15 +2600,48 @@ import {
2602
2600
  ChannelType as ChannelType8,
2603
2601
  ModelType as ModelType8,
2604
2602
  createUniqueUuid as createUniqueUuid5,
2605
- getWavHeader,
2606
2603
  logger as logger5
2607
2604
  } from "@elizaos/core";
2608
2605
  import {
2609
2606
  ChannelType as DiscordChannelType3
2610
2607
  } from "discord.js";
2608
+ import { EventEmitter } from "node:events";
2609
+ import { pipeline } from "node:stream";
2611
2610
  import prism from "prism-media";
2612
2611
  var DECODE_FRAME_SIZE = 1024;
2613
2612
  var DECODE_SAMPLE_RATE = 16e3;
2613
+ function createOpusDecoder(options) {
2614
+ try {
2615
+ return new prism.opus.Decoder(options);
2616
+ } catch (error) {
2617
+ logger5.warn(`Failed to create opus decoder with prism-media: ${error}`);
2618
+ try {
2619
+ const { generateDependencyReport } = __require("@discordjs/voice");
2620
+ const report = generateDependencyReport();
2621
+ logger5.debug("Voice dependency report:", report);
2622
+ } catch (reportError) {
2623
+ logger5.warn("Could not generate dependency report:", reportError);
2624
+ }
2625
+ throw error;
2626
+ }
2627
+ }
2628
+ function getWavHeader(audioLength, sampleRate, channelCount = 1, bitsPerSample = 16) {
2629
+ const wavHeader = Buffer.alloc(44);
2630
+ wavHeader.write("RIFF", 0);
2631
+ wavHeader.writeUInt32LE(36 + audioLength, 4);
2632
+ wavHeader.write("WAVE", 8);
2633
+ wavHeader.write("fmt ", 12);
2634
+ wavHeader.writeUInt32LE(16, 16);
2635
+ wavHeader.writeUInt16LE(1, 20);
2636
+ wavHeader.writeUInt16LE(channelCount, 22);
2637
+ wavHeader.writeUInt32LE(sampleRate, 24);
2638
+ wavHeader.writeUInt32LE(sampleRate * bitsPerSample * channelCount / 8, 28);
2639
+ wavHeader.writeUInt16LE(bitsPerSample * channelCount / 8, 32);
2640
+ wavHeader.writeUInt16LE(bitsPerSample, 34);
2641
+ wavHeader.write("data", 36);
2642
+ wavHeader.writeUInt32LE(audioLength, 40);
2643
+ return wavHeader;
2644
+ }
2614
2645
  var AudioMonitor = class {
2615
2646
  readable;
2616
2647
  buffers = [];
@@ -2932,11 +2963,17 @@ var VoiceManager = class extends EventEmitter {
2932
2963
  logger5.warn(`[monitorMember] No receiveStream or empty stream for user ${entityId}`);
2933
2964
  return;
2934
2965
  }
2935
- const opusDecoder = new prism.opus.Decoder({
2936
- channels: 1,
2937
- rate: DECODE_SAMPLE_RATE,
2938
- frameSize: DECODE_FRAME_SIZE
2939
- });
2966
+ let opusDecoder;
2967
+ try {
2968
+ opusDecoder = createOpusDecoder({
2969
+ channels: 1,
2970
+ rate: DECODE_SAMPLE_RATE,
2971
+ frameSize: DECODE_FRAME_SIZE
2972
+ });
2973
+ } catch (error) {
2974
+ logger5.error(`[monitorMember] Failed to create opus decoder for user ${entityId}: ${error}`);
2975
+ return;
2976
+ }
2940
2977
  const volumeBuffer = [];
2941
2978
  const VOLUME_WINDOW_SIZE = 30;
2942
2979
  const SPEAKING_THRESHOLD = 0.05;