BOT_DISCORD/index.js
2022-03-30 08:34:27 +02:00

161 lines
6.2 KiB
JavaScript

const Discord = require('discord.js');
const config = require('./config.json');
const {SlashCommandBuilder} = require("@discordjs/builders")
const friendsCommands = require('./friendsCommands.json')
const {GuildEmoji, Emoji, CommandInteraction} = require("discord.js");
const Client = new Discord.Client({
intents: [
Discord.Intents.FLAGS.GUILDS,
Discord.Intents.FLAGS.GUILD_MESSAGES,
Discord.Intents.FLAGS.GUILD_MESSAGE_REACTIONS,
Discord.Intents.FLAGS.GUILD_MEMBERS
]
});
const data = new SlashCommandBuilder()
.setName("react")
.setDescription("Créer un ajout de rôle")
.addStringOption(option =>
option.setName('role')
.setDescription('Le rôle à ajouter')
.setRequired(true)
.addChoice('Lol', 'League_of_Legends')
.addChoice('OW', 'OverWatch')
.addChoice('SW', 'Summoners_War')
)
let embedCommands = new Discord.MessageEmbed().setTitle("Liste des commandes").setColor("#ff0505")
.setDescription("Voici mes commandes - (N'oublier pas le '!' )")
.setThumbnail("https://www.artmajeur.com/medias/standard/k/o/koldin-84/artwork/9533635_alone-anime-anime-art-anime-boy-favim-com-1898320.jpg")
.setTimestamp()
.setFooter("Si vous souhaitez rajouter une commande, n'hésitez pas à contacter mon créateur")
Client.on("ready", async () => {
fromCommandsToEmbed(friendsCommands.commands)
console.log(`Logged in as ${Client.user.tag}!`)
// pour tout les serveurs - lent : Client.application.commands.create(data)
/*await Client.guilds.cache.get("903598468306702336").commands.create(data)
.then(() => {
console.log(`Logged in as ${Client.user.tag}!`)
})
.catch(r => {
console.log("Erreur lors de l'ajout de la commande\n" + r)
Client.destroy()
})*/
})
Client.login(config.token)
/* config prod
* {
"clientId": "890975056400904242",
"guildId": "876543210987654321",
"token": "ODkwOTc1MDU2NDAwOTA0MjQy.YU3nLg.T5wCbJ4UuDBanMjVaE-JX-aSELo",
"authorId": "307975903999164416"
}
* */
// dev token OTA1NDMzMzQ5MDgwODc1MDM4.YYKAhA.lX9_YqbkTxlkSfnYPOKa2pl5V8s && "clientId": "905433349080875038",
Client.on("interactionCreate", async interaction => {
if (interaction.isCommand()) {
const {commandName} = interaction
if (commandName === "games") {
let embed = new Discord.MessageEmbed()
.setTitle("Mini-Jeux")
.setColor("#ff0505")
.setDescription("Voici mes mini-jeux en ligne")
.setThumbnail("https://www.artmajeur.com/medias/standard/k/o/koldin-84/artwork/9533635_alone-anime-anime-art-anime-boy-favim-com-1898320.jpg")
.addField("__SUTOM__", "https://sutom.nocle.fr/")
.addField("__WORlDLE__", "https://worldle.teuteuf.fr/")
.addField("__LETTERS__", "https://edjefferson.com/letterle/ ")
.setTimestamp()
await interaction.channel.send({embeds: [embed]})
interaction.reply({content: 'Done ! :white_check_mark:', ephemeral: true,})
} else if (commandName === "help") {
await interaction.channel.send({embeds: [embedCommands]})
interaction.reply({content: 'Done ! :white_check_mark:', ephemeral: true,})
} else if (commandName === 'react') {
const message = await interaction.reply({content: 'Ajout du role : ' + interaction.options._hoistedOptions[0].value, fetchReply: true});
console.log( interaction.options)
message.react('👍')
.then(() => message.react('👎'))
.catch(error => console.error('One of the emojis failed to react:', error))
const filter = (reaction, user) => {
return ['👍', '👎'].includes(reaction.emoji.name) && user.id === interaction.user.id;
};
message.awaitReactions({filter, max: 1, time: 60000, errors: ['time']})
.then(collected => {
const reaction = collected.first();
if (reaction.emoji.name === '👍') {
message.reply('Ajout effectué !');
} else {
message.reply('Suppression effectuée !');
}
})
.catch(collected => {
message.reply('You reacted with neither a thumbs up, nor a thumbs down.');
});
}
}
})
Client.on('messageCreate', message => {
/*
console.log(`Message [${message.content}] sent from : ${message.author.username}#${message.author.tag}`)
*/
if (message.author.bot) {
} else if (message.content === "55857548596523514251458-)Nydalicor" && message.author.id === config.authorId) {
Client.destroy()
console.log("Bye Bye")
} else if (message.content === "update-)Nydalicor") {
Client.destroy()
console.log("Reloading... ")
Client.login(config.token)
console.log("Successfully reloaded")
} else if (message.content.indexOf("!") === 0) {
let commands = friendsCommands.commands
commands.forEach(command => {
if (message.content.substring(1, message.content.length) === command.key)
send(message, command.value)
})
}
})
Client.on('messageReactionAdd', async (reaction, user) => {
// When a reaction is received, check if the structure is partial
if (reaction.partial) {
// If the message this reaction belongs to was removed, the fetching might result in an API error which should be handled
try {
await reaction.fetch();
if (reaction.emoji.name === '👍') {
reaction.reply("J'ajoute ton rôle")
}
} catch
(error) {
console.error('Something went wrong when fetching the message:', error);
// Return as `reaction.message.author` may be undefined/null
}
}
})
function fromCommandsToEmbed(commands) {
commands.forEach(command => {
addCommandToEmbed(command.key, embedCommands)
})
}
function addCommandToEmbed(title, embed) {
embed.addField(title, "-")
}
function send(message, str) {
message.channel.send(str);
}