Class ListenerProxy

java.lang.Object
net.dv8tion.jda.api.audio.hooks.ListenerProxy
All Implemented Interfaces:
ConnectionListener

public class ListenerProxy extends Object implements ConnectionListener
Internal implementation of ConnectionListener, to handle possible exceptions thrown by user code.
  • Constructor Details

    • ListenerProxy

      public ListenerProxy()
  • Method Details

    • onPing

      public void onPing(long ping)
      Description copied from interface: ConnectionListener
      Called when JDA send a heartbeat packet to Discord and Discord sends an acknowledgement. The time difference between sending and receiving the acknowledgement is calculated as the ping.
      Specified by:
      onPing in interface ConnectionListener
      Parameters:
      ping - The time, in milliseconds, for round-trip packet travel to discord.
    • onStatusChange

      public void onStatusChange(@Nonnull ConnectionStatus status)
      Description copied from interface: ConnectionListener
      Called when the status of the audio channel changes. Used to track the connection state of the audio connection for easy debug and status display for clients.
      Specified by:
      onStatusChange in interface ConnectionListener
      Parameters:
      status - The new ConnectionStatus of the audio connection.
    • onUserSpeaking

      public void onUserSpeaking(@Nonnull User user, @Nonnull EnumSet<SpeakingMode> modes)
      Description copied from interface: ConnectionListener
      This method is an easy way to detect if a user is talking. Discord sends us an event when a user starts or stops talking and it is parallel to the audio socket, so this event could come milliseconds before or after audio begins or stops. This method is brilliant for clients wanting to display that a user is currently talking.

      Unlike the AudioReceiveHandler.handleCombinedAudio(CombinedAudio) and AudioReceiveHandler.handleUserAudio(UserAudio) methods which are fired extremely often, this method is fired as a flag for the beginning and ending of audio transmission, and as such is only fired when that changes. So while the AudioReceiveHandler.handleUserAudio(UserAudio) method is fired every time JDA receives audio data from Discord, this is only fired when that stream starts and when it stops.
      If the user speaks for 3 minutes straight without ever stopping, then this would fire 2 times, once at the beginning and once after 3 minutes when they stop talking even though the AudioReceiveHandler.handleUserAudio(UserAudio) method was fired thousands of times over the course of the 3 minutes.

      Specified by:
      onUserSpeaking in interface ConnectionListener
      Parameters:
      user - Never-null User who's talking status has changed.
      modes - EnumSet, containing the active speaking modes. Empty if the user has stopped transmitting audio.
      See Also:
    • onUserSpeakingModeUpdate

      public void onUserSpeakingModeUpdate(@Nonnull UserSnowflake user, @Nonnull EnumSet<SpeakingMode> modes)
      Description copied from interface: ConnectionListener
      This method is used to listen for users changing their speaking mode.

      Whenever a user joins a voice channel, this is fired once to define the initial speaking modes.

      To detect when a user is speaking, a AudioReceiveHandler should be used instead.

      This method works independently of the user cache. The provided user might not be cached.

      Specified by:
      onUserSpeakingModeUpdate in interface ConnectionListener
      Parameters:
      user - The user who changed their speaking mode
      modes - The new speaking modes of the user
    • setListener

      public void setListener(ConnectionListener listener)
    • getListener

      public ConnectionListener getListener()