mirror of
https://github.com/arthur-pbty/gestion-perso.git
synced 2026-06-03 15:07:27 +02:00
102 lines
3.4 KiB
TypeScript
102 lines
3.4 KiB
TypeScript
import { Message, Client, EmbedBuilder, StringSelectMenuBuilder, ActionRowBuilder } from "discord.js";
|
|
|
|
module.exports = {
|
|
aliases: ['setpres'],
|
|
description: 'Changer le status du bot',
|
|
emote: '🟢',
|
|
utilisation: '',
|
|
permission: '8',
|
|
|
|
async execute(message: Message, args:string[], client: Client) {
|
|
if (!client.user) return
|
|
|
|
let currentStatus = client.user.presence.status;
|
|
|
|
const embed = new EmbedBuilder()
|
|
.setTitle('Changement de status')
|
|
.setDescription(`Le bot est en mode :\`${currentStatus}\``)
|
|
.setTimestamp()
|
|
.setFooter({text: `${client.user.tag} © 2024`, iconURL: client.user.displayAvatarURL()});
|
|
|
|
if (currentStatus === 'dnd') {
|
|
embed.setColor('#FF0000');
|
|
} else if (currentStatus === 'idle') {
|
|
embed.setColor('#FFA500');
|
|
} else if (currentStatus === 'online') {
|
|
embed.setColor('#00FF00');
|
|
} else if (currentStatus === 'offline') {
|
|
embed.setColor('#000000');
|
|
} else {
|
|
embed.setColor('#000000');
|
|
}
|
|
|
|
const selectMenu = new StringSelectMenuBuilder()
|
|
.setCustomId('status')
|
|
.setPlaceholder('Changer le status')
|
|
.addOptions([
|
|
{
|
|
label: 'En ligne',
|
|
value: 'online',
|
|
description: 'Le bot sera en ligne',
|
|
emoji: '🟢'
|
|
},
|
|
{
|
|
label: 'Absent',
|
|
value: 'idle',
|
|
description: 'Le bot sera absent',
|
|
emoji: '🟠'
|
|
},
|
|
{
|
|
label: 'Ne pas déranger',
|
|
value: 'dnd',
|
|
description: 'Le bot ne sera pas déranger',
|
|
emoji: '🔴'
|
|
},
|
|
{
|
|
label: 'Invisible',
|
|
value: 'offline',
|
|
description: 'Le bot sera invisible',
|
|
emoji: '⚫'
|
|
}
|
|
]);
|
|
|
|
const row: any = new ActionRowBuilder()
|
|
.addComponents(selectMenu)
|
|
|
|
const sendMessage = await message.reply({ embeds: [embed], components: [row] });
|
|
|
|
const filter = (interaction: any) => interaction.user.id === message.author.id;
|
|
const collector = sendMessage.createMessageComponentCollector({ filter, time: 60000 });
|
|
collector.on('collect', async (interaction: any) => {
|
|
if (interaction.isStringSelectMenu()) {
|
|
if (!client.user) return
|
|
const value = interaction.values[0];
|
|
if (value === 'online') {
|
|
client.user.setStatus('online');
|
|
embed.setDescription('Le bot est maintenant en ligne');
|
|
embed.setColor('#00FF00');
|
|
await interaction.update({ embeds: [embed], components: [row] });
|
|
} else if (value === 'idle') {
|
|
client.user.setStatus('idle');
|
|
embed.setDescription('Le bot est maintenant absent');
|
|
embed.setColor('#FFA500');
|
|
await interaction.update({ embeds: [embed], components: [row] });
|
|
} else if (value === 'dnd') {
|
|
client.user.setStatus('dnd');
|
|
embed.setDescription('Le bot est maintenant en mode ne pas déranger');
|
|
embed.setColor('#FF0000');
|
|
await interaction.update({ embeds: [embed], components: [row] });
|
|
} else if (value === 'offline') {
|
|
client.user.setStatus('invisible');
|
|
embed.setDescription('Le bot est maintenant invisible');
|
|
embed.setColor('#000000');
|
|
await interaction.update({ embeds: [embed], components: [row] });
|
|
}
|
|
}
|
|
});
|
|
|
|
collector.on('end', async () => {
|
|
sendMessage.edit({ components: [] });
|
|
});
|
|
},
|
|
}; |