Skip to content

Commit 586564b

Browse files
committed
set github dependencies in commit
1 parent 88f3135 commit 586564b

File tree

7 files changed

+890
-1147
lines changed

7 files changed

+890
-1147
lines changed

package-lock.json

Lines changed: 659 additions & 1024 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
"author": "",
3131
"license": "ISC",
3232
"dependencies": {
33+
"@discordjs/voice": "^0.16.1",
3334
"@sentry/node": "7.61.0",
3435
"@sentry/profiling-node": "1.1.2",
3536
"bindings": "1.5.0",
@@ -50,12 +51,11 @@
5051
"signale": "1.4.0",
5152
"statcord.js": "3.4.3",
5253
"stripe": "12.18.0",
53-
"yasha": "github:eliyya/ts-yasha#node",
54+
"yasha": "github:eliyya/ts-yasha#1637c64",
5455
"youtubei.js": "5.8.0"
5556
},
5657
"devDependencies": {
5758
"@types/cors": "2.8.13",
58-
"@types/dd-trace": "^0.9.0",
5959
"@types/express": "4.17.17",
6060
"@types/figlet": "1.5.6",
6161
"@types/i18n": "0.13.6",
@@ -65,7 +65,7 @@
6565
"concurrently": "8.2.0",
6666
"eslint": "8.46.0",
6767
"nodemon": "3.0.1",
68-
"transjson": "github:OnekiDevs/transjson#jspkg",
68+
"transjson": "github:OnekiDevs/transjson#1187c4b",
6969
"ts-standard": "12.0.2",
7070
"type-locales": "github:OnekiDevs/type-locales",
7171
"typescript": "5.1.6"
@@ -109,7 +109,10 @@
109109
"@typescript-eslint/restrict-plus-operands": "off",
110110
"@typescript-eslint/restrict-template-expressions": "off",
111111
"@typescript-eslint/no-base-to-string": "off",
112-
"curly": ["error", "multi"]
112+
"curly": [
113+
"error",
114+
"multi"
115+
]
113116
}
114117
},
115118
"prettier": {

src/slash/commands/Música/play.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ import {
33
ChatInputCommandInteraction,
44
EmbedBuilder,
55
VoiceChannel,
6-
GuildMember,
76
Colors,
7+
User,
88
} from 'discord.js'
99
import { MusicCarouselShelf, MusicResponsiveListItem } from 'youtubei.js/dist/src/parser/nodes.js'
1010
import performanceMeters from '#cache/performanceMeters.js'
@@ -87,7 +87,7 @@ export default class play extends Command {
8787
// Si el usuario está en el mismo canal de voz que el bot
8888
try {
8989
const song = interaction.options.getString('song', false)
90-
const search = song ? await this.search(song, interaction.member) : await this.getRecomended(player)
90+
const search = song ? await this.search(song, interaction.user) : await this.getRecomended(player, interaction.user)
9191
if (!search) return await interaction.editReply({
9292
embeds: [
9393
new EmbedBuilder()
@@ -167,23 +167,24 @@ export default class play extends Command {
167167
return true
168168
}
169169

170-
async getRecomended (player: Player) {
170+
async getRecomended (player: Player, user: User) {
171171
const client = player.guild.client as Client
172172
try {
173173
const home = await player.youtubei.music.getHomeFeed()
174174
const songs = home.sections?.[0] as MusicCarouselShelf
175-
return songs.contents?.[randomInt(songs.contents.length)] as MusicResponsiveListItem
175+
const song = songs.contents?.[randomInt(songs.contents.length)] as MusicResponsiveListItem
176+
return await this.search(song.name ?? 'music', user)
176177
} catch (error) {
177178
logger.error(error)
178179
client.errorHandler.captureException(error as Error)
179180
return undefined
180181
}
181182
}
182183

183-
async search (query: string, member: GuildMember) {
184-
const client = member.client as Client
184+
async search (query: string, user: User) {
185+
const client = user.client as Client
185186
try {
186-
return await client.music.search(query, member, 'Youtube')
187+
return await client.music.search(query, user, 'Youtube')
187188
} catch (error) {
188189
logger.error(error)
189190
client.errorHandler.captureException(error as Error)

src/structures/MusicManager.ts

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import EmbedBuilder from '#structures/EmbedBuilder.js'
2828
const spamIntervald = new SpamIntervalDB()
2929
type UserExtended = GuildMember & {}
3030
type YoutubeInjecter<T> = T & { youtubei?: Innertube }
31+
type RequesterInjecter<T> = T & { requester: User }
3132

3233
export default class MusicManager extends EventEmitter {
3334
players = new Collection<string, Player>()
@@ -54,7 +55,10 @@ export default class MusicManager extends EventEmitter {
5455
this.players.set(vc.guild.id, player)
5556
player.on('ready', async () => await this.trackStart(player))
5657
player.on('finish', () => this.trackEnd(player, true))
58+
// TODO: yasha update
59+
// @ts-expect-error
5760
player.on('debug', (debug: any) => logger.log(debug))
61+
// @ts-expect-error
5862
player.on(yasha.VoiceConnection.Status.Destroyed, async () => await player.destroy())
5963
player.on('error', err => {
6064
client.errorHandler.captureException(err)
@@ -106,7 +110,7 @@ export default class MusicManager extends EventEmitter {
106110
else return false
107111
}
108112

109-
async trackStart (player: Player) {
113+
async trackStart (player: Player): Promise<void> {
110114
// TODO: Check if the song limit is the saçme as stablished for the admins
111115
// if(player.queue.current?.duration > player.guild.)
112116

@@ -123,6 +127,7 @@ export default class MusicManager extends EventEmitter {
123127
{ band: 16000, gain: -4 }, // Frecuencia muy alta
124128
]
125129
player.setEqualizer(equalizerSettings)
130+
// @ts-expect-error
126131
player.player.playing = true
127132
player.paused = false
128133
const song = player.queue.current
@@ -157,7 +162,7 @@ export default class MusicManager extends EventEmitter {
157162
.setColor(client.settings.color)
158163
if (song.platform === 'Youtube')
159164
embed
160-
.setImage(song.thumbnails[0].url)
165+
.setImage(song.thumbnails?.[0].url ?? null)
161166
.setDescription(
162167
`${translate(keys.PLAYING)} **[${song.title}](https://music.youtube.com/watch?v=${
163168
song.id
@@ -184,7 +189,7 @@ export default class MusicManager extends EventEmitter {
184189
)
185190

186191
try {
187-
return (player.message = await (await player.getTextChannel())?.send({
192+
(player.message = await (await player.getTextChannel())?.send({
188193
embeds: [embed],
189194
components: [row],
190195
}))
@@ -206,8 +211,7 @@ export default class MusicManager extends EventEmitter {
206211
}
207212

208213
if (player.queueRepeat) {
209-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
210-
player.queue.add(player.queue.current)
214+
player.queue.add(track)
211215
player.queue.current = player.queue.shift() ?? null
212216
player.play()
213217
return this
@@ -273,7 +277,7 @@ export default class MusicManager extends EventEmitter {
273277
},
274278
{
275279
name: translate(keys.REQUESTER),
276-
value: `${player.queue.current?.requester.user}`,
280+
value: `${player.queue.current?.requester}`,
277281
inline: true,
278282
},
279283
)
@@ -304,7 +308,7 @@ export default class MusicManager extends EventEmitter {
304308
async ejecutarAccion (elemento: any, player: Player) {
305309
// Lógica de tu acción
306310
const track = await client.music.search(elemento.video_id, client.user, 'Youtube')
307-
// TODO extends track
311+
if (!track) return
308312
player.queue.add(track)
309313
}
310314

@@ -324,7 +328,7 @@ export default class MusicManager extends EventEmitter {
324328
return array
325329
}
326330

327-
async search (query: any, requester: YoutubeInjecter<User>, source: 'Spotify' | 'Youtube' | 'Soundcloud') {
331+
async search (query: any, requester: YoutubeInjecter<User>, source: 'Spotify' | 'Youtube' | 'Soundcloud'): Promise<RequesterInjecter<yasha.Track> | undefined> {
328332
// let track
329333
// if (requester.youtubei)
330334
// if (requester.youtubei.session.logged_in) {
@@ -343,9 +347,13 @@ export default class MusicManager extends EventEmitter {
343347
)
344348
if (!track) {
345349
logger.debug('No track found')
346-
track = await yasha.Source.Youtube.search(query)
350+
const search = await yasha.Source.Youtube.search(query)
351+
if (!search.length) return undefined
352+
const tracks = search.filter(t => t instanceof yasha.Track)
353+
if (!tracks.length) return undefined
354+
track = tracks[0]
347355
}
348-
logger.log('track: ', track)
356+
if (!(track instanceof yasha.Track)) return undefined
349357
if (track?.platform !== 'Youtube') return undefined
350358
// if (track instanceof TrackPlaylist) {
351359
// track.forEach(t => {
@@ -359,14 +367,16 @@ export default class MusicManager extends EventEmitter {
359367
const stream = getMax(track.streams, 'bitrate')
360368
track.streams = [stream.object]
361369
} */
370+
// @ts-expect-error
362371
track.requester = requester
363-
// track.icon = null
364-
372+
// @ts-expect-error
365373
return track
366374
// }
367375
} catch (error) {
376+
if ((error as Error).message === 'Video is age restricted') return undefined
368377
client.errorHandler.captureException(error as Error)
369378
}
379+
return undefined
370380
}
371381

372382
getPlayingPlayers () {

src/structures/Player.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ export default class Player extends yasha.TrackPlayer {
2121
guild: Guild
2222
leaveTimeout?: NodeJS.Timeout
2323
bitrate?: number
24-
// @ts-expect-error
2524
connection?: yasha.VoiceConnection
2625
subscription?: any
2726
stayInVc = false
@@ -88,6 +87,7 @@ export default class Player extends yasha.TrackPlayer {
8887
override async destroy () {
8988
try {
9089
if (this.connection) this.disconnect()
90+
// @ts-expect-error
9191
if (this.player) super.destroy()
9292

9393
return this.manager.players.delete(this.guild.id)
@@ -142,7 +142,7 @@ export default class Player extends yasha.TrackPlayer {
142142

143143
this.playing = !pause
144144
this.paused = pause
145-
145+
// @ts-expect-error
146146
if (this.player) this.setPaused(pause)
147147

148148
return this

src/structures/Queue.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
import { GuildMember } from 'discord.js'
1+
import { User } from 'discord.js'
22
import { formatDuration } from './MusicManager.js'
33
import { type Track as yashaTrack } from 'yasha'
44

5-
// @ts-expect-error
6-
type Track = yashaTrack & { requester: GuildMember, streams: any[] | null }
5+
type Track = yashaTrack & { requester: User, streams: any[] | null }
76
export default class Queue extends Array<Track> {
87
current: Track | null
98
previous: Track | null

0 commit comments

Comments
 (0)