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:
76
src/buttons/freebox/refresh_status.ts
Normal file
76
src/buttons/freebox/refresh_status.ts
Normal file
@@ -0,0 +1,76 @@
|
||||
import { EmbedBuilder, MessageFlags, ButtonBuilder, ButtonStyle, ActionRowBuilder } from "discord.js"
|
||||
import type { ButtonInteraction } from "discord.js"
|
||||
import type { GuildFbx } from "@/types/schemas"
|
||||
import dbGuild from "@/schemas/guild"
|
||||
import { t } from "@/utils/i18n"
|
||||
|
||||
export const id = "freebox_refresh_status"
|
||||
export async function execute(interaction: ButtonInteraction) {
|
||||
await interaction.deferUpdate()
|
||||
|
||||
const guildProfile = await dbGuild.findOne({ guildId: interaction.guild?.id })
|
||||
if (!guildProfile) return interaction.followUp({ content: t(interaction.locale, "common.database_not_found"), flags: MessageFlags.Ephemeral })
|
||||
|
||||
const dbData = guildProfile.get("guildFbx") as GuildFbx
|
||||
|
||||
// Reconstruire l'embed de statut actualisé
|
||||
const embed = new EmbedBuilder()
|
||||
.setTitle(t(interaction.locale, "freebox.status.title"))
|
||||
.setColor(dbData.enabled ? 0x00ff00 : 0xff0000)
|
||||
.addFields(
|
||||
{
|
||||
name: t(interaction.locale, "freebox.status.config_section"),
|
||||
value: [
|
||||
t(interaction.locale, "freebox.status.module_field", { status: dbData.enabled ? t(interaction.locale, "freebox.common.enabled") : t(interaction.locale, "freebox.common.disabled") }),
|
||||
t(interaction.locale, "freebox.status.host_field", { value: dbData.host ? `\`${dbData.host}\`` : t(interaction.locale, "freebox.status.host_not_configured") }),
|
||||
t(interaction.locale, "freebox.status.token_field", { status: dbData.appToken ? t(interaction.locale, "freebox.status.token_configured") : t(interaction.locale, "freebox.status.token_not_configured") })
|
||||
].join('\n'),
|
||||
inline: false
|
||||
}
|
||||
)
|
||||
|
||||
// Informations LCD si disponibles
|
||||
if (dbData.lcd) {
|
||||
const lcdStatus = dbData.lcd.enabled ? t(interaction.locale, "freebox.common.enabled") : t(interaction.locale, "freebox.common.disabled")
|
||||
const botManaged = dbData.lcd.botId ? `<@${dbData.lcd.botId}>` : t(interaction.locale, "freebox.status.timer_no_manager")
|
||||
const morningTime = dbData.lcd.morningTime ?? t(interaction.locale, "freebox.status.timer_not_configured")
|
||||
const nightTime = dbData.lcd.nightTime ?? t(interaction.locale, "freebox.status.timer_not_configured")
|
||||
|
||||
embed.addFields({
|
||||
name: t(interaction.locale, "freebox.status.timer_section"),
|
||||
value: [
|
||||
t(interaction.locale, "freebox.timer.status_field", { status: lcdStatus }),
|
||||
t(interaction.locale, "freebox.timer.managed_by", { manager: botManaged }),
|
||||
t(interaction.locale, "freebox.timer.morning", { time: morningTime }),
|
||||
t(interaction.locale, "freebox.timer.night", { time: nightTime })
|
||||
].join('\n'),
|
||||
inline: false
|
||||
})
|
||||
}
|
||||
|
||||
embed.setTimestamp()
|
||||
|
||||
// Reconstruire les boutons
|
||||
const buttons = new ActionRowBuilder<ButtonBuilder>()
|
||||
.addComponents(
|
||||
new ButtonBuilder()
|
||||
.setCustomId("freebox_test_connection")
|
||||
.setLabel(t(interaction.locale, "freebox.buttons.test_connection"))
|
||||
.setEmoji("🔌")
|
||||
.setStyle(ButtonStyle.Primary)
|
||||
.setDisabled(!dbData.appToken),
|
||||
new ButtonBuilder()
|
||||
.setCustomId("freebox_lcd_status")
|
||||
.setLabel(t(interaction.locale, "freebox.buttons.lcd_status"))
|
||||
.setEmoji("💡")
|
||||
.setStyle(ButtonStyle.Secondary)
|
||||
.setDisabled(!dbData.appToken),
|
||||
new ButtonBuilder()
|
||||
.setCustomId("freebox_refresh_status")
|
||||
.setLabel(t(interaction.locale, "freebox.buttons.refresh_status"))
|
||||
.setEmoji("🔄")
|
||||
.setStyle(ButtonStyle.Success)
|
||||
)
|
||||
|
||||
return interaction.editReply({ embeds: [embed], components: [buttons] })
|
||||
}
|
||||
Reference in New Issue
Block a user