Fix duplicate streamWatching, locale guild et console log/error
Build and Push Docker Image / build-and-push (push) Successful in 3m43s

This commit is contained in:
Zachary Guénot
2025-06-11 02:50:58 +02:00
parent 0cc81d6430
commit e714e94f85
31 changed files with 396 additions and 308 deletions
+4 -3
View File
@@ -1,6 +1,6 @@
import { Events, EmbedBuilder, ChannelType } from "discord.js"
import type { GuildMember } from "discord.js"
import { t } from "@/utils/i18n"
import { t, getGuildLocale } from "@/utils/i18n"
import { logConsole } from "@/utils/console"
export const name = Events.GuildMemberAdd
@@ -30,10 +30,11 @@ export async function execute(member: GuildMember) {
return
}
const guildLocale = await getGuildLocale(guild.id)
const embed = new EmbedBuilder()
.setColor(guild.members.me.displayHexColor)
.setTitle(t(guild.preferredLocale, "welcome.title", { username: member.user.username }))
.setDescription(t(guild.preferredLocale, "welcome.description", { memberCount: guild.memberCount.toString() }))
.setTitle(t(guildLocale, "welcome.title", { username: member.user.username }))
.setDescription(t(guildLocale, "welcome.description", { memberCount: guild.memberCount.toString() }))
.setThumbnail(member.user.avatarURL())
.setTimestamp(new Date())
+4 -3
View File
@@ -1,6 +1,6 @@
import { Events } from "discord.js"
import type { GuildMember } from "discord.js"
import { t } from "@/utils/i18n"
import { t, getGuildLocale } from "@/utils/i18n"
export const name = Events.GuildMemberRemove
export function execute(member: GuildMember) {
@@ -15,8 +15,9 @@ export function execute(member: GuildMember) {
const channel = guild.channels.cache.get("1091140609139560508")
if (!channel) return
await channel.setName(t(guild.preferredLocale, "salonpostam.update.loading"))
await channel.setName(t(guild.preferredLocale, "salonpostam.update.members_updated", { count: i.toString() }))
const guildLocale = await getGuildLocale(guild.id)
await channel.setName(t(guildLocale, "salonpostam.update.loading"))
await channel.setName(t(guildLocale, "salonpostam.update.members_updated", { count: i.toString() }))
}).catch(console.error)
}
}
+4 -3
View File
@@ -1,6 +1,6 @@
import { Events, EmbedBuilder, ChannelType } from "discord.js"
import type { GuildMember } from "discord.js"
import { t } from "@/utils/i18n"
import { t, getGuildLocale } from "@/utils/i18n"
import { logConsole } from "@/utils/console"
export const name = Events.GuildMemberUpdate
@@ -24,10 +24,11 @@ export async function execute(oldMember: GuildMember, newMember: GuildMember) {
if (!hadRole && hasRole) {
if (!guild.members.me) { logConsole('discordjs', 'boost.not_in_guild'); return }
const guildLocale = await getGuildLocale(guild.id)
const embed = new EmbedBuilder()
.setColor(guild.members.me.displayHexColor)
.setTitle(t(guild.preferredLocale, "boost.new_boost_title", { username: newMember.user.username }))
.setDescription(t(guild.preferredLocale, "boost.new_boost_description", { count: guild.premiumSubscriptionCount?.toString() ?? "0" }))
.setTitle(t(guildLocale, "boost.new_boost_title", { username: newMember.user.username }))
.setDescription(t(guildLocale, "boost.new_boost_description", { count: guild.premiumSubscriptionCount?.toString() ?? "0" }))
.setThumbnail(newMember.user.avatarURL())
.setTimestamp(new Date())
+8 -8
View File
@@ -7,7 +7,7 @@ import { connect } from "mongoose"
import type { Document } from "mongoose"
import { playerDisco, playerReplay } from "@/utils/player"
import { twitchClient, listener, onlineSub, offlineSub, startStreamWatching } from "@/utils/twitch"
import { logConsole } from "@/utils/console"
import { logConsole, logConsoleError } from "@/utils/console"
import type { GuildPlayer, Disco, GuildTwitch, GuildFbx } from "@/types/schemas"
import * as Freebox from "@/utils/freebox"
import dbGuildInit from "@/utils/dbGuildInit"
@@ -19,8 +19,10 @@ export async function execute(client: Client) {
logConsole('discordjs', 'ready', { tag: client.user?.tag ?? "unknown" })
client.user?.setActivity("some bangers...", { type: ActivityType.Listening })
await useMainPlayer().extractors.register(SpotifyExtractor, {}).then(() => { logConsole('discord_player', 'extractor_loaded', { extractor: 'Spotify' }) }).catch(console.error)
await useMainPlayer().extractors.register(YoutubeiExtractor, {}).then(() => { logConsole('discord_player', 'extractor_loaded', { extractor: 'Youtube' }) }).catch(console.error)
const player = useMainPlayer()
await player.extractors.register(SpotifyExtractor, {}).then(() => { logConsole('discord_player', 'extractor_loaded', { extractor: 'Spotify' }) }).catch(console.error)
await player.extractors.register(YoutubeiExtractor, {}).then(() => { logConsole('discord_player', 'extractor_loaded', { extractor: 'Youtube' }) }).catch(console.error)
if (process.env.NODE_ENV === "development") console.log(player.scanDeps())
const mongo_url = `mongodb://${process.env.MONGOOSE_USER}:${process.env.MONGOOSE_PASSWORD}@${process.env.MONGOOSE_HOST}/${process.env.MONGOOSE_DATABASE}`
await connect(mongo_url).catch(console.error)
@@ -95,8 +97,7 @@ export async function execute(client: Client) {
startStreamWatching(guild.id, streamer.twitchUserId, user.name, streamer.messageId)
logConsole('twitch', 'ready.monitoring_restored', { guild: guild.name, userName: user.name })
} catch (error) {
logConsole('twitch', 'ready.message_not_found', { guild: guild.name, userName: user.name })
console.error(error)
logConsoleError('twitch', 'ready.message_not_found', { guild: guild.name, userName: user.name }, error as Error)
await cleanupMessageId(guildProfile, streamer.twitchUserId)
}
}
@@ -131,9 +132,8 @@ async function cleanupMessageId(guildProfile: Document, twitchUserId: string) {
guildProfile.set("guildTwitch", dbData)
guildProfile.markModified("guildTwitch")
await guildProfile.save()
await guildProfile.save().catch(console.error)
} catch (error) {
logConsole('twitch', 'ready.cleanup_error', { userId: twitchUserId })
console.error(error)
logConsoleError('twitch', 'ready.cleanup_error', { userId: twitchUserId }, error as Error)
}
}
+5 -2
View File
@@ -1,11 +1,14 @@
import type { GuildQueue, Track } from "discord-player"
import type { PlayerMetadata } from "@/types/player"
import { t } from "@/utils/i18n"
import { t, getGuildLocale } 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 }) })
if ("send" in queue.metadata.channel) {
const guildLocale = await getGuildLocale(queue.guild.id)
return queue.metadata.channel.send({ content: t(guildLocale, "player.track_added", { title: track.title }) })
}
}
+6 -2
View File
@@ -1,10 +1,14 @@
import type { GuildQueue, Track } from "discord-player"
import type { PlayerMetadata } from "@/types/player"
import { t } from "@/utils/i18n"
import { t, getGuildLocale } 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() }) })
if ("send" in queue.metadata.channel) {
const guildLocale = await getGuildLocale(queue.guild.id)
return queue.metadata.channel.send({ content: t(guildLocale, "player.track_added_playlist", { count: track.length.toString() }) })
}
}
+6 -2
View File
@@ -1,7 +1,7 @@
import type { GuildQueue } from "discord-player"
import type { PlayerMetadata } from "@/types/player"
import { stopProgressSaving } from "@/utils/player"
import { t } from "@/utils/i18n"
import { t, getGuildLocale } from "@/utils/i18n"
export const name = "disconnect"
export async function execute(queue: GuildQueue<PlayerMetadata>) {
@@ -9,5 +9,9 @@ export async function execute(queue: GuildQueue<PlayerMetadata>) {
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") })
if ("send" in queue.metadata.channel) {
const guildLocale = await getGuildLocale(queue.guild.id)
return queue.metadata.channel.send({ content: t(guildLocale, "player.disconnect") })
}
}
+6 -2
View File
@@ -1,7 +1,7 @@
import type { GuildQueue } from "discord-player"
import type { PlayerMetadata } from "@/types/player"
import { stopProgressSaving } from "@/utils/player"
import { t } from "@/utils/i18n"
import { t, getGuildLocale } from "@/utils/i18n"
export const name = "emptyChannel"
export async function execute(queue: GuildQueue<PlayerMetadata>) {
@@ -10,5 +10,9 @@ export async function execute(queue: GuildQueue<PlayerMetadata>) {
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") })
if ("send" in queue.metadata.channel) {
const guildLocale = await getGuildLocale(queue.guild.id)
return queue.metadata.channel.send({ content: t(guildLocale, "player.leaving_empty_channel") })
}
}
+6 -2
View File
@@ -1,7 +1,7 @@
import type { GuildQueue } from "discord-player"
import type { PlayerMetadata } from "@/types/player"
import { stopProgressSaving } from "@/utils/player"
import { t } from "@/utils/i18n"
import { t, getGuildLocale } from "@/utils/i18n"
export const name = "emptyQueue"
export async function execute(queue: GuildQueue<PlayerMetadata>) {
@@ -9,5 +9,9 @@ export async function execute(queue: GuildQueue<PlayerMetadata>) {
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") })
if ("send" in queue.metadata.channel) {
const guildLocale = await getGuildLocale(queue.guild.id)
return queue.metadata.channel.send({ content: t(guildLocale, "player.queue_empty") })
}
}
+6 -4
View File
@@ -1,12 +1,14 @@
import type { GuildQueue, Track } from "discord-player"
import type { PlayerMetadata } from "@/types/player"
import { t } from "@/utils/i18n"
import { t, getGuildLocale } 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 })
})
if ("send" in queue.metadata.channel) {
const guildLocale = await getGuildLocale(queue.guild.id)
return queue.metadata.channel.send({ content: t(guildLocale, "player.track_skipped", { title: track.title, author: track.author }) })
}
}
+6 -2
View File
@@ -1,10 +1,14 @@
import type { GuildQueue, Track } from "discord-player"
import type { PlayerMetadata } from "@/types/player"
import { t } from "@/utils/i18n"
import { t, getGuildLocale } 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 }) })
if ("send" in queue.metadata.channel) {
const guildLocale = await getGuildLocale(queue.guild.id)
await queue.metadata.channel.send({ content: t(guildLocale, "player.now_playing", { title: track.title, author: track.author }) })
}
}