Skip to content

🚀 This new wiki is in beta! Please double-check for any issue and report them on the GitHub

Voice Events

Voice events fire when members join, leave, or change voice channels. Use them to welcome voice users, update voice channel status, or log voice activity.

Triggered when a member joins any voice channel:

on member voice join:
set {_member} to event-member
set {_channel} to event-channel
# Log the join
broadcast "%{_member}% joined voice channel %{_channel}%"

Event values:

  • event-member — Member who joined
  • event-channel — Voice channel they joined
  • event-guild — Guild where it happened

Triggered when a member leaves a voice channel:

on member voice leave:
set {_member} to event-member
set {_channel} to event-channel
# Log the leave
broadcast "%{_member}% left voice channel"

Event values:

  • event-member — Member who left
  • event-channel — Voice channel they left (if available)
  • event-guild — Guild where it happened

Triggered when a member switches between voice channels:

on member voice move:
set {_member} to event-member
set {_from} to old channel
set {_to} to new channel
broadcast "%{_member}% moved from %{_from}% to %{_to}%"

Event values:

  • event-member — Member who moved
  • old channel — Channel they left
  • new channel — Channel they joined
  • event-guild — Guild where it happened

Announce when users join a specific voice channel:

on member voice join:
if event-channel is voice channel "General":
set {_msg} to "%mention tag of event-member% joined voice!"
post {_msg} to text channel "voice-logs"

Track how long members are in voice:

on member voice join:
set {voice.%discord id of event-member%.join_time} to now
on member voice leave:
set {_join} to {voice.%discord id of event-member%.join_time}
if {_join} is set:
set {_duration} to difference between now and {_join}
broadcast "%event-member% was in voice for %{_duration}%"

Update the channel status when members join/leave:

on member voice join:
set {_count} to size of members in event-channel
set status of event-channel to "%{_count}% members in voice"
on member voice leave:
set {_count} to size of members in event-channel
set status of event-channel to "%{_count}% members in voice"

Delete voice channels when the last member leaves:

on member voice leave:
if size of members in event-channel is 0:
if name of event-channel starts with "Temporary":
delete event-channel
broadcast "Deleted empty temporary voice channel"
if event-member is in voice:
# Member is currently in a voice channel
set {_vc} to voice channel of event-member
set {_members::*} to members in voice channel "General"
broadcast "Members in voice: %{_members::*}%"

Access voice channel properties:

set {_vc} to voice channel "Gaming"
# Channel properties
set {_name} to name of {_vc}
set {_limit} to user limit of {_vc}
set {_members} to members in {_vc}
set {_bitrate} to bitrate of {_vc}
  1. Be respectful — Don’t be too intrusive with voice notifications
  2. Use private channels — Log voice events in a mod-only channel
  3. Handle edge cases — Members might move quickly between channels
  4. Rate limit messages — Don’t spam updates for every voice change
  5. Clean up data — Remove old voice tracking data regularly
  • Ensure your bot has proper intents enabled (Guild Voice States)
  • Check that you’re handling the correct event name
  • Verify the channel is actually a voice channel
  • Use event-member not event-user for voice events
  • Voice channels are accessed via event-channel not text channels
  • Some properties may only be available during specific events