Files
2024-03-15 20:35:35 +01:00

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: [] });
});
},
};