Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 | import { Config } from "@/modules/shared/config/types"; import { Extends } from "@/types/Constants"; import { LOCALIZATION_ADAPTER, NestedLocalizationAdapter } from "@necord/localization"; import { Inject, Injectable, Logger } from "@nestjs/common"; import { ConfigService } from "@nestjs/config"; import { OnEvent } from "@nestjs/event-emitter"; import { Client, EmbedBuilder, TextChannel, VoiceChannel } from "discord.js"; import { Player, Track, TrackEndEvent, TrackExceptionEvent, TrackStuckEvent } from "lavalink-client"; import ms from "parse-ms"; import { MessageTools } from "../../commands/Message"; @Injectable() export class QueueEvents { public constructor( @Inject(LOCALIZATION_ADAPTER) private readonly translate: NestedLocalizationAdapter, private readonly client: Client, private readonly config: ConfigService<Config>, ) {} private readonly logger = new Logger(QueueEvents.name); @OnEvent("queue.end") public async onQueueEnd( player: Player, track: Track, payload: TrackEndEvent | TrackStuckEvent | TrackExceptionEvent, ) { const textChannel = this.client.channels.cache.get(player.textChannelId) as TextChannel; const voiceChannel = this.client.channels.cache.get(player.voiceChannelId) as VoiceChannel; if (this.config.getOrThrow<Config["Music"]>("Music").Player.AutoLeaveEmpty.Queue.Enable) { setTimeout(async () => { try { if (!player.queue && player.queue.current) { const Timer = ms(this.config.getOrThrow<Config["Music"]>("Music").Player.AutoLeaveEmpty.Queue.Delay); const embed = new EmbedBuilder() .setAuthor({ name: this.client.user.tag, url: this.client.user.displayAvatarURL(), }) .setColor("#00c26f") .setTitle( this.translate.getTranslation( "Events.PlayerEvents.playerMove.queueEnd.Title", textChannel.guild.preferredLocale, ), ) .setDescription( this.translate.getTranslation( "Events.PlayerEvents.playerMove.queueEnd.Description", textChannel.guild.preferredLocale, { CHANNEL: voiceChannel.name, Timer: String(Timer), }, ), ) .setFooter({ text: this.translate.getTranslation( "Events.PlayerEvents.playerMove.queueEnd.Footer", textChannel.guild.preferredLocale, { TIMER: String(Timer), }, ), }) .setTimestamp(); const Message = await MessageTools.send(textChannel, { embeds: [embed], }); textChannel.messages.fetch(Message.id).then((msg) => { if (msg?.deletable) { setTimeout(async () => { msg.delete().catch((error: Error) => { this.logger.warn('Não consegui deletar o "Player_MESSAGE"'); }); }, 4000); } }); player.destroy(); } } catch (error) { this.logger.error("Queue End Error: ", String(error)); } }, this.config.getOrThrow<Config["Music"]>("Music").Player.AutoLeaveEmpty.Queue.Delay); } } } |