1+
12const
23 {
34 joinVoiceChannel,
78 getVoiceConnection
89 } = require ( "@discordjs/voice" ) ,
910 chooseRandom = require ( "./chooseRandom" ) ,
11+ {
12+ useMainPlayer,
13+ QueueRepeatMode,
14+ useQueue,
15+ getVoiceConnections
16+ } = require ( "discord-player" ) ,
1017 audioPlayer = new Map ( ) ,
11- // queue = new Map(),
1218 audioPlayerData = {
1319 behaviors : {
1420 maxMissedFrames : Math . round ( 5000 / 20 ) ,
@@ -99,7 +105,7 @@ module.exports = class {
99105 * @returns {getVoiceConnection }
100106 */
101107 get connection ( ) {
102- return getVoiceConnection ( this . data . guildId ) ;
108+ return getVoiceConnections ( ) . get ( this . data . guildId ) ;
103109 }
104110
105111 /**
@@ -118,8 +124,8 @@ module.exports = class {
118124 * @returns {number }
119125 */
120126 get volume ( ) {
121- const player = audioPlayer . get ( this . data . guildId ) ;
122- return Number ( player . state . resource . volume . volume ) ;
127+ const queue = ( useMainPlayer ( ) ) . queues . cache . get ( this . data . guildId ) ;
128+ return Number ( queue . node . volume ) ;
123129 }
124130
125131 /**
@@ -128,12 +134,10 @@ module.exports = class {
128134 * @returns {number }
129135 */
130136 setVolume ( input ) {
131- const player = audioPlayer . get ( this . data . guildId ) ;
137+ const queue = ( useMainPlayer ( ) ) . queues . cache . get ( this . data . guildId ) ;
132138 if ( input <= 100 && input >= 0 )
133- player . state . resource . volume . volume = input / 100 ;
139+ queue . node . setVolume ( input ) ;
134140
135- const connection = joinVoiceChannel ( this . data ) ;
136- connection . subscribe ( player ) ;
137141 return Number ( this . volume ) ;
138142 }
139143
@@ -142,18 +146,13 @@ module.exports = class {
142146 * @returns {void }
143147 */
144148 pause ( ) {
145- const connection = joinVoiceChannel ( this . data ) ;
146- const player = audioPlayer . get ( this . data . guildId ) ;
147- if ( this . isPaused ( ) )
148- player . unpause ( ) ;
149+ const queue = ( useMainPlayer ( ) ) . queues . cache . get ( this . data . guildId ) ;
150+ if ( queue . node . isPaused ( ) )
151+ queue . node . resume ( ) ;
149152
150153 else
151- player . pause ( ) ;
152-
153- // if (!this.isPaused())
154- // player.pause();
154+ queue . node . pause ( ) ;
155155
156- connection . subscribe ( player ) ;
157156 return this ;
158157 }
159158
@@ -162,12 +161,10 @@ module.exports = class {
162161 * @returns {void }
163162 */
164163 resume ( ) {
165- const connection = joinVoiceChannel ( this . data ) ;
166- const player = audioPlayer . get ( this . data . guildId ) ;
167- if ( this . isPaused ( ) )
168- player . unpause ( ) ;
164+ const queue = ( useMainPlayer ( ) ) . queues . cache . get ( this . data . guildId ) ;
165+ if ( queue . node . isPaused ( ) )
166+ queue . node . resume ( ) ;
169167
170- connection . subscribe ( player ) ;
171168 return this ;
172169 }
173170
@@ -176,8 +173,8 @@ module.exports = class {
176173 * @returns {boolean }
177174 */
178175 isPaused ( ) {
179- const player = audioPlayer . get ( this . data . guildId ) ;
180- if ( player . state . status === "paused" )
176+ const queue = ( useMainPlayer ( ) ) . queues . cache . get ( this . data . guildId ) ;
177+ if ( queue . node . isPaused ( ) )
181178 return true ;
182179
183180 else return false ;
@@ -188,13 +185,10 @@ module.exports = class {
188185 * @returns {void }
189186 */
190187 stop ( ) {
191- const connection = getVoiceConnection ( this . data . guildId ) ;
192- const player = audioPlayer . get ( this . data . guildId ) ;
188+ const queue = ( useMainPlayer ( ) ) . queues . cache . get ( this . data . guildId ) ;
193189 try {
194- player . stop ( ) ;
195- audioPlayer . delete ( this . data . guildId ) ;
190+ queue . delete ( ) ;
196191 } catch { }
197- connection . destroy ( ) ;
198192 return this ;
199193 }
200194
@@ -204,34 +198,32 @@ module.exports = class {
204198 * @returns {import("@discordjs/voice").AudioResource }
205199 */
206200 async radio ( resources ) {
207- const connection = joinVoiceChannel ( this . data ) ;
208- const player = createAudioPlayer ( audioPlayerData ) ;
209- // resources
210- // .forEach((re, index) => queue.set(++index, re));
211-
212- // let count = 1;
213- // if (queue.size < 1)
214- // throw this.#error("No resource to play!");
215-
216- player . play (
217- createAudioResource ( await this . #createStream( chooseRandom ( resources ) ) , audioResourceData )
218- ) ;
219- connection . subscribe ( player ) ;
220- audioPlayer . set ( this . data . guildId , player ) ;
221- player . on ( "debug" , async ( e ) => {
222- const [ oldStatus , newStatus ] = e . replace ( "state change:" , "" ) . split ( "\n" ) . map ( value => value . replace ( "from" , "" ) . replace ( "to" , "" ) . replaceAll ( " " , "" ) ) . filter ( value => value !== "" ) . map ( value => JSON . parse ( value ) ) ;
223- if ( newStatus . status === "idle" ) {
224- player . play (
225- // createAudioResource(await this.#createStream(queue.get(++count)), audioResourceData)
226- createAudioResource ( await this . #createStream( chooseRandom ( resources ) ) , audioResourceData )
227- ) ;
228- // if (count === queue.size) count = 1;
229-
230- connection . subscribe ( player ) ;
231- audioPlayer . set ( this . data . guildId , player ) ;
232- return this ;
233- }
234- } )
201+ try {
202+ const player = useMainPlayer ( ) ;
203+ const play = async ( ) => {
204+ try {
205+ const query = ( await fetch ( chooseRandom ( resources ) ) ) . url ;
206+ await player . play ( this . data . channelId , query , {
207+ nodeOptions : {
208+ pauseOnEmpty : true ,
209+ selfDeaf : true ,
210+ volume : 100 ,
211+ leaveOnEmpty : false ,
212+ leaveOnEnd : false ,
213+ leaveOnStop : true ,
214+ repeatMode : QueueRepeatMode . QUEUE
215+ }
216+ } ) ;
217+ } catch {
218+ await play ( ) ;
219+ }
220+ } ;
221+ await play ( ) ;
222+ player . events . on ( "emptyQueue" , await play ( ) ) ;
223+ player . events . on ( "playerError" , await play ( ) ) ;
224+ player . events . on ( "error" , await play ( ) ) ;
225+ player . events . on ( "connectionDestroyed" , await play ( ) ) ;
226+ } catch { }
235227 return this ;
236228 }
237229
0 commit comments