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 | import { Timer, WAIT } from "@/utils/Tools"; import { LOCALIZATION_ADAPTER, NestedLocalizationAdapter } from "@necord/localization"; import { Inject, Injectable, Logger } from "@nestjs/common"; import { OnEvent } from "@nestjs/event-emitter"; import { Client, GuildChannel, GuildMember, Message, TextChannel } from "discord.js"; import { Player, Track, TrackEndEvent, TrackExceptionEvent, TrackStartEvent } from "lavalink-client"; import { Music } from "../"; import { MessageTools } from "../../commands/Message"; import type { IMusicEmbeds, IMusicService } from "../interfaces"; @Injectable() export class TrackEvents { public constructor( @Inject(LOCALIZATION_ADAPTER) private readonly translate: NestedLocalizationAdapter, @Inject(Music.Embeds) private readonly embeds: IMusicEmbeds, @Inject(Music.Service) private readonly service: IMusicService, private readonly client: Client, ) {} private readonly logger = new Logger(TrackEvents.name); @OnEvent("track.start") public async onTrackStart(player: Player, track: Track, payload: TrackStartEvent): Promise<void> { const textChannel = this.client.channels.cache.get(player.textChannelId) as TextChannel; const Requester = ( (await (await this.client.guilds.fetch(player.guildId)).members.fetch(track.requester as string)) as GuildMember ).user; await WAIT(500); MessageTools.send(textChannel, { embeds: [ await this.embeds.TrackStart( textChannel, track, Requester, await Timer(this.translate, "normal", track.info.duration, textChannel.guild.preferredLocale), await this.service.URLChecker(false, track.info.uri), this.service.formatSourceName(track.info.sourceName), ), ], }).then((msg) => { try { const CURRENT_SONG_MSG = textChannel.messages.cache.get(player.songMessage) as Message; if (CURRENT_SONG_MSG && msg.id !== CURRENT_SONG_MSG.id) { CURRENT_SONG_MSG.delete().catch((error: Error) => { this.logger.warn('Não consegui deletar a "CURRENT_SONG_MSG"', error); }); } } catch {} player.songMessage = msg.id; }); } @OnEvent("track.end") public async onTrackEnd(player: Player, track: Track, payload: TrackEndEvent) { player.lastSong = track; } @OnEvent("track.stuck") public async onTrackStuck(player: Player, track: Track, payload: TrackStartEvent) { const textChannel = this.client.channels.cache.get(player.textChannelId) as TextChannel; MessageTools.send(textChannel, { embeds: [await this.embeds.TrackStuck(textChannel, track)] }); } @OnEvent("track.error") public async onTrackError(player: Player, track: Track, payload: TrackExceptionEvent) { const textChannel = this.client.channels.cache.get(player.textChannelId) as TextChannel; MessageTools.send(textChannel, { embeds: [await this.embeds.TrackError(textChannel, track, payload.exception.message)], }); } } |