Réécriture complète 4.0
Some checks failed
Build and Push Docker Image / build-and-push (push) Failing after 6m16s
Some checks failed
Build and Push Docker Image / build-and-push (push) Failing after 6m16s
This commit is contained in:
@@ -1,10 +1,11 @@
|
||||
import { GuildQueue, Track } from 'discord-player'
|
||||
import { PlayerMetadata } from '../../utils/player'
|
||||
|
||||
export default {
|
||||
name: 'audioTrackAdd',
|
||||
async execute(queue: GuildQueue<PlayerMetadata>, track: Track) {
|
||||
// Emitted when the player adds a single song to its queue
|
||||
queue.metadata.channel.send(`Musique **${track.title}** de **${track.author}** ajoutée à la file d'attente !`)
|
||||
}
|
||||
}
|
||||
import type { GuildQueue, Track } from "discord-player"
|
||||
import type { PlayerMetadata } from "@/types/player"
|
||||
import { t } from "@/utils/i18n"
|
||||
|
||||
export const name = "audioTrackAdd"
|
||||
export async function execute(queue: GuildQueue<PlayerMetadata>, track: Track) {
|
||||
// Emitted when the player adds a single song to its queue
|
||||
if (!queue.metadata.channel) return
|
||||
|
||||
if ("send" in queue.metadata.channel) return queue.metadata.channel.send({ content: t(queue.guild.preferredLocale, "player.track_added", { title: track.title }) })
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
import { GuildQueue, Track } from 'discord-player'
|
||||
import { PlayerMetadata } from '../../utils/player'
|
||||
|
||||
export default {
|
||||
name: 'audioTracksAdd',
|
||||
async execute(queue: GuildQueue<PlayerMetadata>, track: Array<Track>) {
|
||||
// Emitted when the player adds multiple songs to its queue
|
||||
queue.metadata.channel.send(`Ajout de ${track.length} musiques à la file d'attente !`)
|
||||
}
|
||||
}
|
||||
import type { GuildQueue, Track } from "discord-player"
|
||||
import type { PlayerMetadata } from "@/types/player"
|
||||
import { t } from "@/utils/i18n"
|
||||
|
||||
export const name = "audioTracksAdd"
|
||||
export async function execute(queue: GuildQueue<PlayerMetadata>, track: Track[]) {
|
||||
// Emitted when the player adds multiple songs to its queue
|
||||
if (!queue.metadata.channel) return
|
||||
if ("send" in queue.metadata.channel) return queue.metadata.channel.send({ content: t(queue.guild.preferredLocale, "player.track_added_playlist", { count: track.length.toString() }) })
|
||||
}
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
import { GuildQueue } from 'discord-player'
|
||||
|
||||
export default {
|
||||
name: 'debug',
|
||||
async execute(queue: GuildQueue, message: string) {
|
||||
// Emitted when the player queue sends debug info
|
||||
// Useful for seeing what state the current queue is at
|
||||
console.log(`Player debug event: ${message}`)
|
||||
}
|
||||
}
|
||||
import type { GuildQueue } from "discord-player"
|
||||
import { logConsoleDev } from "@/utils/console"
|
||||
|
||||
export const name = "debug"
|
||||
export function execute(queue: GuildQueue, message: string) {
|
||||
// Emitted when the player queue sends debug info
|
||||
// Useful for seeing what state the current queue is at
|
||||
logConsoleDev('discord_player', 'debug', { message })
|
||||
}
|
||||
|
||||
@@ -1,24 +1,13 @@
|
||||
import { GuildQueue } from 'discord-player'
|
||||
import { PlayerMetadata } from '../../utils/player'
|
||||
import dbGuild from '../../schemas/guild'
|
||||
|
||||
export default {
|
||||
name: 'disconnect',
|
||||
async execute(queue: GuildQueue<PlayerMetadata>) {
|
||||
// Emitted when the bot leaves the voice channel
|
||||
queue.metadata.channel.send("J'ai quitté le vocal !")
|
||||
|
||||
let guildProfile = await dbGuild.findOne({ guildId: queue.guild.id })
|
||||
if (!guildProfile) return console.log(`Database data for **${queue.guild.name}** does not exist !`)
|
||||
|
||||
let dbData = guildProfile.get('guildPlayer.replay')
|
||||
dbData['textChannelId'] = ''
|
||||
dbData['voiceChannelId'] = ''
|
||||
dbData['trackUrl'] = ''
|
||||
dbData['progress'] = ''
|
||||
|
||||
guildProfile.set('guildPlayer.replay', dbData)
|
||||
guildProfile.markModified('guildPlayer.replay')
|
||||
return await guildProfile.save().catch(console.error)
|
||||
}
|
||||
}
|
||||
import type { GuildQueue } from "discord-player"
|
||||
import type { PlayerMetadata } from "@/types/player"
|
||||
import { stopProgressSaving } from "@/utils/player"
|
||||
import { t } from "@/utils/i18n"
|
||||
|
||||
export const name = "disconnect"
|
||||
export async function execute(queue: GuildQueue<PlayerMetadata>) {
|
||||
// Emitted when the bot leaves the voice channel
|
||||
await stopProgressSaving(queue.guild.id, queue.player.client.user?.id ?? "")
|
||||
|
||||
if (!queue.metadata.channel) return
|
||||
if ("send" in queue.metadata.channel) return queue.metadata.channel.send({ content: t(queue.guild.preferredLocale, "player.disconnect") })
|
||||
}
|
||||
|
||||
@@ -1,11 +1,14 @@
|
||||
import { GuildQueue } from 'discord-player'
|
||||
import { PlayerMetadata } from '../../utils/player'
|
||||
|
||||
export default {
|
||||
name: 'emptyChannel',
|
||||
async execute(queue: GuildQueue<PlayerMetadata>) {
|
||||
// Emitted when the voice channel has been empty for the set threshold
|
||||
// Bot will automatically leave the voice channel with this event
|
||||
queue.metadata.channel.send(`Je quitte le vocal car il est vide depuis trop longtemps.`)
|
||||
}
|
||||
}
|
||||
import type { GuildQueue } from "discord-player"
|
||||
import type { PlayerMetadata } from "@/types/player"
|
||||
import { stopProgressSaving } from "@/utils/player"
|
||||
import { t } from "@/utils/i18n"
|
||||
|
||||
export const name = "emptyChannel"
|
||||
export async function execute(queue: GuildQueue<PlayerMetadata>) {
|
||||
// Emitted when the voice channel has been empty for the set threshold
|
||||
// Bot will automatically leave the voice channel with this event
|
||||
await stopProgressSaving(queue.guild.id, queue.player.client.user?.id ?? "")
|
||||
|
||||
if (!queue.metadata.channel) return
|
||||
if ("send" in queue.metadata.channel) return queue.metadata.channel.send({ content: t(queue.guild.preferredLocale, "player.leaving_empty_channel") })
|
||||
}
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
import { GuildQueue } from 'discord-player'
|
||||
import { PlayerMetadata } from '../../utils/player'
|
||||
|
||||
export default {
|
||||
name: 'emptyQueue',
|
||||
async execute(queue: GuildQueue<PlayerMetadata>) {
|
||||
// Emitted when the player queue has finished
|
||||
queue.metadata.channel.send("File d'attente vide !")
|
||||
}
|
||||
}
|
||||
import type { GuildQueue } from "discord-player"
|
||||
import type { PlayerMetadata } from "@/types/player"
|
||||
import { stopProgressSaving } from "@/utils/player"
|
||||
import { t } from "@/utils/i18n"
|
||||
|
||||
export const name = "emptyQueue"
|
||||
export async function execute(queue: GuildQueue<PlayerMetadata>) {
|
||||
// Emitted when the player queue has finished
|
||||
await stopProgressSaving(queue.guild.id, queue.player.client.user?.id ?? "")
|
||||
|
||||
if (!queue.metadata.channel) return
|
||||
if ("send" in queue.metadata.channel) return queue.metadata.channel.send({ content: t(queue.guild.preferredLocale, "player.queue_empty") })
|
||||
}
|
||||
|
||||
@@ -1,10 +1,8 @@
|
||||
import { GuildQueue } from 'discord-player'
|
||||
|
||||
export default {
|
||||
name: 'error',
|
||||
async execute(queue: GuildQueue, error: Error) {
|
||||
// Emitted when the player queue encounters error
|
||||
console.log(`General player error event: ${error.message}`)
|
||||
console.error(error)
|
||||
}
|
||||
}
|
||||
import type { GuildQueue } from "discord-player"
|
||||
import { logConsoleError } from "@/utils/console"
|
||||
|
||||
export const name = "error"
|
||||
export function execute(queue: GuildQueue, error: Error) {
|
||||
// Emitted when the player queue encounters error
|
||||
logConsoleError('discord_player', 'error', { message: error.message }, error)
|
||||
}
|
||||
|
||||
25
src/events/player/index.ts
Normal file
25
src/events/player/index.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
import * as audioTrackAdd from "./audioTrackAdd"
|
||||
import * as audioTracksAdd from "./audioTracksAdd"
|
||||
import * as debug from "./debug"
|
||||
import * as disconnect from "./disconnect"
|
||||
import * as emptyChannel from "./emptyChannel"
|
||||
import * as emptyQueue from "./emptyQueue"
|
||||
import * as error from "./error"
|
||||
import * as playerError from "./playerError"
|
||||
import * as playerSkip from "./playerSkip"
|
||||
import * as playerStart from "./playerStart"
|
||||
|
||||
import type { Event } from "@/types"
|
||||
|
||||
export default [
|
||||
audioTrackAdd,
|
||||
audioTracksAdd,
|
||||
debug,
|
||||
disconnect,
|
||||
emptyChannel,
|
||||
emptyQueue,
|
||||
error,
|
||||
playerError,
|
||||
playerSkip,
|
||||
playerStart
|
||||
] as Event[]
|
||||
@@ -1,10 +1,8 @@
|
||||
import { GuildQueue } from 'discord-player'
|
||||
|
||||
export default {
|
||||
name: 'playerError',
|
||||
async execute(queue: GuildQueue, error: Error) {
|
||||
// Emitted when the audio player errors while streaming audio track
|
||||
console.log(`\u001b[1;31m Player error event: ${error.message}`)
|
||||
console.error(error)
|
||||
}
|
||||
}
|
||||
import type { GuildQueue } from "discord-player"
|
||||
import { logConsoleError } from "@/utils/console"
|
||||
|
||||
export const name = "playerError"
|
||||
export function execute(queue: GuildQueue, error: Error) {
|
||||
// Emitted when the audio player errors while streaming audio track
|
||||
logConsoleError('discord_player', 'player_error', { message: error.message }, error)
|
||||
}
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
import { GuildQueue, Track } from 'discord-player'
|
||||
import { PlayerMetadata } from '../../utils/player'
|
||||
|
||||
export default {
|
||||
name: 'playerSkip',
|
||||
async execute(queue: GuildQueue<PlayerMetadata>, track: Track) {
|
||||
// Emitted when the audio player fails to load the stream for a song
|
||||
queue.metadata.channel.send(`Musique **${track.title}** de **${track.author}** passée !`)
|
||||
}
|
||||
}
|
||||
import type { GuildQueue, Track } from "discord-player"
|
||||
import type { PlayerMetadata } from "@/types/player"
|
||||
import { t } from "@/utils/i18n"
|
||||
|
||||
export const name = "playerSkip"
|
||||
export async function execute(queue: GuildQueue<PlayerMetadata>, track: Track) {
|
||||
// Emitted when the audio player fails to load the stream for a song
|
||||
if (!queue.metadata.channel) return
|
||||
if ("send" in queue.metadata.channel) return queue.metadata.channel.send({
|
||||
content: t(queue.guild.preferredLocale, "player.track_skipped", { title: track.title, author: track.author })
|
||||
})
|
||||
}
|
||||
|
||||
@@ -1,22 +1,10 @@
|
||||
import { GuildQueue, Track } from 'discord-player'
|
||||
import { PlayerMetadata } from '../../utils/player'
|
||||
import dbGuild from '../../schemas/guild'
|
||||
|
||||
export default {
|
||||
name: 'playerStart',
|
||||
async execute(queue: GuildQueue<PlayerMetadata>, track: Track) {
|
||||
// Emitted when the player starts to play a song
|
||||
queue.metadata.channel.send(`Lecture de **${track.title}** de **${track.author}** !`)
|
||||
|
||||
let guildProfile = await dbGuild.findOne({ guildId: queue.guild.id })
|
||||
if (!guildProfile) return console.log(`Database data for **${queue.guild.name}** does not exist !`)
|
||||
|
||||
let dbData = guildProfile.get('guildPlayer.replay')
|
||||
dbData['trackUrl'] = track.url
|
||||
dbData['progress'] = '0'
|
||||
|
||||
guildProfile.set('guildPlayer.replay', dbData)
|
||||
guildProfile.markModified('guildPlayer.replay')
|
||||
return await guildProfile.save().catch(console.error)
|
||||
}
|
||||
}
|
||||
import type { GuildQueue, Track } from "discord-player"
|
||||
import type { PlayerMetadata } from "@/types/player"
|
||||
import { t } from "@/utils/i18n"
|
||||
|
||||
export const name = "playerStart"
|
||||
export async function execute(queue: GuildQueue<PlayerMetadata>, track: Track) {
|
||||
// Emitted when the player starts to play a song
|
||||
if (!queue.metadata.channel) return
|
||||
if ("send" in queue.metadata.channel) await queue.metadata.channel.send({ content: t(queue.guild.preferredLocale, "player.now_playing", { title: track.title, author: track.author }) })
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user