@@ -3,6 +3,17 @@ import { EmbedBuilder, Events } from 'discord.js';
33import type Client from '../base/Client.js' ;
44import Event from '../base/Event.js' ;
55
6+ enum VoiceEvents {
7+ 'join' ,
8+ 'leave' ,
9+ 'move' ,
10+ }
11+
12+ interface CompareVoiceStatesReturn {
13+ embed : EmbedBuilder ;
14+ event : VoiceEvents | null ;
15+ }
16+
617export default class VoiceStateUpdate extends Event {
718 constructor ( ) {
819 super ( { name : Events . VoiceStateUpdate } ) ;
@@ -15,17 +26,18 @@ export default class VoiceStateUpdate extends Event {
1526 if ( ! oldState . member || ! newState . member ) return ;
1627 // console.log(oldState.channelId, newState.channelId ?? 'NULL');
1728
18- const embed = this . compareVoiceStates ( oldState , newState ) ;
29+ const comparedVoiceStates = this . compareVoiceStates ( oldState , newState ) ;
1930
20- this . log ( newState . guild ? newState . guild : oldState . guild , {
21- embeds : [ embed ] ,
22- } ) ;
31+ if ( comparedVoiceStates . event )
32+ this . log ( newState . guild ? newState . guild : oldState . guild , {
33+ embeds : [ comparedVoiceStates . embed ] ,
34+ } ) ;
2335 }
2436
2537 private compareVoiceStates (
2638 oldState : VoiceState ,
2739 newState : VoiceState
28- ) : EmbedBuilder {
40+ ) : CompareVoiceStatesReturn {
2941 const basicEmbed = new EmbedBuilder ( )
3042 . setAuthor ( {
3143 name : newState . member ?. user . tag ?? '' ,
@@ -34,30 +46,34 @@ export default class VoiceStateUpdate extends Event {
3446 . setTimestamp ( )
3547 . setFooter ( { text : `Community Service ${ this . version } ` } ) ;
3648
49+ let voiceEvent : CompareVoiceStatesReturn [ 'event' ] = null ;
50+
3751 if ( ! oldState ?. channelId && newState . channelId ) {
3852 basicEmbed
3953 . setDescription (
40- `**${ newState . member ?. user . tag } ** joined: ${ newState . channel } .`
54+ `**${ newState . member } ** joined: ${ newState . channel } .`
4155 )
4256 . addFields ( [
4357 {
4458 name : 'New Voice Channel' ,
4559 value : `${ newState . channel } ` ,
4660 } ,
4761 ] ) ;
62+ voiceEvent = VoiceEvents . join ;
4863 }
4964
5065 if ( oldState . channelId && ! newState . channelId ) {
5166 basicEmbed
5267 . setDescription (
53- `**${ newState . member ?. user . tag } ** left: ${ oldState . channel } .`
68+ `**${ newState . member } ** left: ${ oldState . channel } .`
5469 )
5570 . addFields ( [
5671 {
5772 name : 'Old Voice Channel' ,
5873 value : `${ oldState . channel } ` ,
5974 } ,
6075 ] ) ;
76+ voiceEvent = VoiceEvents . leave ;
6177 }
6278
6379 if (
@@ -67,7 +83,7 @@ export default class VoiceStateUpdate extends Event {
6783 ) {
6884 basicEmbed
6985 . setDescription (
70- `**${ newState . member ?. user . tag } ** moved to: ${ newState . channel } .`
86+ `**${ newState . member } ** moved to: ${ newState . channel } .`
7187 )
7288 . addFields ( [
7389 {
@@ -79,7 +95,9 @@ export default class VoiceStateUpdate extends Event {
7995 value : `${ newState . channel } ` ,
8096 } ,
8197 ] ) ;
98+ voiceEvent = VoiceEvents . leave ;
8299 }
83- return basicEmbed ;
100+
101+ return { embed : basicEmbed , event : voiceEvent } ;
84102 }
85103}
0 commit comments