#javascript-typescript
1 messages · Page 9 of 1
Oui
Et tu copie colle cette ligne pour chaque commande que tu veux créer en oubliant pas de changer la variable data par la variable de la commande qui correspond :)
ah ok ptn
tu geres
Donc chaques nouvelles commandes, je dois refaire le client.on ... avec le bon nom de la variable ?
Non
C’est le client.guilds... que tu doit copier coller XD
Et tu le mets en dessous du précédent
Pas de besoin d’être désolé :)
Le but du serveur c’est de s’entraider, donc y’a pas de honte ni besoin de se sentir redevable etc 😉
Merci a toi en tt cas
const moment = require('moment.js')```
on est d'accord que c sense marcher?
C'est juste je viens de commencer je connais pas grand chose 🤣
c bon ^^
d'ailleurs comment t'as eu ton badge developer ?
il faut que tu ai un bot ou ta fait une commande slash dans les 24h
att je cherche le site
bh jl'ai fais ?
j'ai pas le badge
Integrate your service with Discord — whether it's a bot or a game or whatever your wildest imagination can come up with.
rempli le formulaire
yo quelqu'un serai comment m'aider à mettre à jour ma version nodejs en dernière version?
Hey, sur quel os ?
salut, débian
Utilise ce package alors :
https://github.com/nvm-sh/nvm
Tout est écrit dans le readme
La dernière version c'est la 19
npm install nvm
ERROR: npm v9.1.1 is known not to run on Node.js v14.1.0. You'll need to upgrade
to a newer Node.js version in order to use this version of npm. This version of
npm supports the following node versions: `^14.17.0 || ^16.13.0 || >=18.0.0`. You
can find the latest version at https://nodejs.org/.
ERROR:
/usr/local/lib/node_modules/npm/node_modules/hosted-git-info/lib/index.js:63
#fill (template, opts) {
^
SyntaxError: Unexpected token '('
at Object.compileFunction (vm.js:344:18)
at wrapSafe (internal/modules/cjs/loader.js:1106:15)
at Module._compile (internal/modules/cjs/loader.js:1140:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1196:10)
at Module.load (internal/modules/cjs/loader.js:1040:32)
at Function.Module._load (internal/modules/cjs/loader.js:929:14)
at Module.require (internal/modules/cjs/loader.js:1080:19)
at require (internal/modules/cjs/helpers.js:72:18)
at Object.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-package-arg/lib/npa.js:7:19)
at Module._compile (internal/modules/cjs/loader.js:1176:30)
Quand j'essai de l'installer
Il ne faut pas l'installer comme ça, lit bien le readme
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.2/install.sh | bash
Il faut attendre
okok, j'attend
Cloning into '/root/.nvm'...
remote: Enumerating objects: 356, done.
remote: Counting objects: 100% (356/356), done.
remote: Compressing objects: 100% (303/303), done.
remote: Total 356 (delta 39), reused 164 (delta 27), pack-reused 0
Receiving objects: 100% (356/356), 222.15 KiB | 5.05 MiB/s, done.
Resolving deltas: 100% (39/39), done.
* (HEAD detached at FETCH_HEAD)
master
=> Compressing and cleaning up git repository
=> Appending nvm source string to /root/.bashrc
=> Appending bash_completion source string to /root/.bashrc
ERROR: npm v9.1.1 is known not to run on Node.js v14.1.0. You'll need to upgrade
to a newer Node.js version in order to use this version of npm. This version of
npm supports the following node versions: `^14.17.0 || ^16.13.0 || >=18.0.0`. You
can find the latest version at https://nodejs.org/.
ERROR:
/usr/local/lib/node_modules/npm/node_modules/hosted-git-info/lib/index.js:63
#fill (template, opts) {
^
SyntaxError: Unexpected token '('
at Object.compileFunction (vm.js:344:18)
at wrapSafe (internal/modules/cjs/loader.js:1106:15)
at Module._compile (internal/modules/cjs/loader.js:1140:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1196:10)
at Module.load (internal/modules/cjs/loader.js:1040:32)
at Function.Module._load (internal/modules/cjs/loader.js:929:14)
at Module.require (internal/modules/cjs/loader.js:1080:19)
at require (internal/modules/cjs/helpers.js:72:18)
at Object.<anonymous> (/usr/local/lib/node_modules/npm/node_modules/npm-package-arg/lib/npa.js:7:19)
at Module._compile (internal/modules/cjs/loader.js:1176:30)
=> Close and reopen your terminal to start using nvm or run the following to use it now:
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
je suis pose qu'il s'est pas installer ? @cyan iron
nvm
-bash: nvm: command not found
" Close and reopen your terminal to start using nvm " 
niquel, sa a fonctionner, dernière petite question, tu serai comment up discordjs ?
car actuellement bah :
npm discordjs -v
8.19.3
npm update
Ou npm install discord.js@latest
npm install discord.js@latest
up to date, audited 97 packages in 4s
12 packages are looking for funding
run `npm fund` for details
found 0 vulnerabilities
root@po ~ $ npm discordjs -v
8.19.3
...
Fais npm -v
Jsuis sur que là ça t’affiche la version de npm parce que t’as mis le -v
Et fais npm list et là t’auras la version de djs ^^
oui effectivement vous aviez raison
^^
ça dépend si ton code est en commonJS ou ESM
Bonjour j'ai besoin d'aide pour avoir le nouveau badge
j'ai fait sa
mais il me faut une commande et je comprend rien on pourrais m'aider en voc svp
jpense que sa prend 5 min
Le nouveau badge ?
oui
@crimson zephyrDe quel badge tu parles ?
le nouveau le vert
Du / sur ton bot ? @crimson zephyr
pas compris
en gros j'ai besoin d'une /commande
pour avoir le badge
Sa ? @crimson zephyr
Connais pas
Et tu veux quoi ?
faire une /commande pour avoir le nouveau badge discord
Le principe de ce badge c’est de savoir faire ce genre de commande justement non ?
oui mais moi c'est pour faire stylé xD
bh ca c'est pas une /cmd mec
Salut ! Je suis entrain de crée un site en react avec un back en express. Cependant après une centaine de requêtes le site ne fonctionne plus et les requêtes sont en attente, quelqu'un aurais la solution ? Merci d'avance.
Salut, tu as du dépasser un nombre de requête.
Tu n'as pas lock ton cmd par hasard ?
bonsoir, j'ai crée un bot, j'ai mit toutes les dépendances ect.... le bot est bien en ligne tout mais ne répond à aucune commande, même pas un simple !ping..... quelqu'un pourrait m'aider ?
Bonjour, est ce que vous aurez un tutoriel pour faire un auto updater avec nucleus / nuts ou encore hazel ? (https://www.electronforge.io/advanced/auto-update)
Hello
Pour ceux qui utilisent Prisma ORM, vous savez pourquoi ils veulent absolument me faire cast une colonne alors que j'ai rien demandé ?
Lors du push du nouveau schéma :
You are about to alter the column
storyon theStorytable, which contains 108 non-null values. The data in that column will be cast fromVarChar(4000)toVarChar(191).
Yo g un soucis avec mon bot discord
voila mon erreur :
Uncaught DiscordAPIError DiscordAPIError[10002]: Unknown Application
at runRequest (/home/alex/Developpement/Perso/BOT/marry-jane/node_modules/@discordjs/rest/dist/index.js:659:15)
at processTicksAndRejections (internal/process/task_queues:95:5)
voila mon index et interactioncreate :
**index.js **
// https://discord.com/oauth2/authorize?client_id=778197728114638880&permissions=8&scope=bot%20applications.commands
const Discord = require("discord.js");
const config = require('./config.json');
const loadEvent = require('./loaders/loadEvent.js');
async function main() {
const client = new Discord.Client({
intents: [
Discord.GatewayIntentBits.Guilds,
Discord.GatewayIntentBits.GuildMessages,
Discord.GatewayIntentBits.MessageContent,
Discord.GatewayIntentBits.GuildMembers,
],
});
client.login(config.token)
client.token = config.token
client.createur = config.createurID
client.botID = config.botID
await loadEvent(client)
client.commands = new Discord.Collection
// Login to Discord with your client's token
client.login(config.token);
}
main()
interactionCreate.js
const Discord = require('discord.js')
module.exports = async (client, interaction) => {
if (interaction.type === Discord.InteractionType.ApplicationCommand) {
let command = require(`../commandes/${interaction.commandName}`)
command.run(client, interaction, interaction.options)
}
}
loaderSlashcommand.js
const Discord = require ("discord.js")
const { REST } = require ("@discordjs/rest")
const { Routes } = require ("discord.js")
module.exports = async client => {
let commands = [];
client.commands.forEach(async command => {
let slashcommand = new Discord.SlashCommandBuilder()
.setName(command.name)
.setDescription(command.description)
.setDMPermission(command.dm)
.setDefaultMemberPermissions(command.permission === "Aucune" ? null : command.permission)
if(command.options?.length >= 1) {
for(let i = 0; i < command.options.length; i++) {
if(command.options[i].type === "string") slashcommand[`add${command.options[i].type.slice(0, 1).toUpperCase() + command.options[i].type.slice(1, command.options[i].type.length)}Option`](option => option.setName(command.options[i].name).setDescription(command.options[i].description).setAutocomplete(command.options[i].autocomplete).setRequired(command.options[i].required))
else slashcommand[`add${command.options[i].type.slice(0, 1).toUpperCase() + command.options[i].type.slice(1, command.options[i].type.length)}Option`](option => option.setName(command.options[i].name).setDescription(command.options[i].description).setRequired(command.options[i].required))
}
}
await commands.push(slashcommand)
})
const rest = new REST({version: "10"}).setToken(client.token)
await rest.put(Routes.applicationCommands(client.createur), {body: commands})
console.log("Les slashs commandes ont été créées avec succès !")
}
Bonjour, j'essaye de faire un message de bienvenue en JS V14 avec une description aléatoire, j'ai commencé mais je n'y arrive pas, pouvez-vous m'aider svp ?
Voici le code :
const EmbedMessage = new EmbedBuilder()
.setTitle(`${member.guild.name}`)
.setColor('bot.color')
.setDescription('Le membre : <@${member.user.id}>.\n \u200B \nViens de rejoindre le serveur.', 'Bvn')
.setThumbnail(member.user.displayAvatarURL())
.setTimestamp()
.setDescription(Math.floor(Math.random()* Description.length));
if('Description' === "8ball"){
rndmessage('Description');
function rndmessage(Description){
bot.channels.cache.get('1040335477242339339').send({ embeds: [EmbedMessage]})
}}
Hey! Vous auriez du contenu à me conseiller pour apprendre JS sur YouTube en fr ou en ?
Je suis plus qu’OK sur html css, j’aimerais maintenant me diriger vers Js
?
C'est qouoi le probleme ?
sans le code on peut pas t'aider
regarde grafikart il a mit a jour son tuto sur JS
tiens
Salut elle est ou la requette que tu fais ? (le code)
Je pense que ça peut venir que tu aies mis 2 fois client.login dans ton index.
C'est que mon code ne fonctionne pas depuis que jai ajouter rnddescription
Et j'ai mis deux message différent dans la description de mon embed
Quel qu'un pourrais m'aider ?
Pas bête je v essayer
bonjour, j'ai crée un bot, j'ai mit toutes les dépendances ect.... le bot est bien en ligne tout mais ne répond à aucune commande, même pas un simple !ping..... et aucune erreur dans la console quelqu'un pourrait m'aider ?
@wet kiln on ta déjà répondu, il nous faut le code pour qu'on t'aide
Bonjour, quelqu'un peut m'aider ?
const Discord = require('discord.js');
const { Client, RichEmbed } = require('discord.js');
// const client = new Discord.Client();
const prefix = "%";
const CommandoClient = require('./client');
const path = require('path')
const client = new CommandoClient({
commandPrefix: '%',
owner: '771032023828660254',
disableMentions: 'everyone'
});
client.registry
.registerDefaultTypes()
.registerGroups([
['divers', 'Divers'],
])
.registerCommandsIn(path.join(__dirname, 'commands'))
;
let streamed = prefix + "help";
client.on('message', function (message) {
if (message.content == 'prefix') {
message.reply('mon préfix est : %');
message.react('😄');
}
});
mon client.js :
const { CommandoClient } = require('discord.js-commando')
module.exports = class BotClient extends CommandoClient {
constructor(options) {
super(options);
}
};
Tu dis que ta commande dois commencé par !ping mais ton prefix est % ?
la pas ta commande ping nn ?
node js fs et promise le mauvais melange
Je pense que ça peut venir que tu aies
c'était un exemple
le help marche pas
besoin d'aide la on a un truc c'est lunaire
ba dit nous ce que tu as besoin 🤷♂️
ah ok
Bonjour, j'essaye de faire un message de bienvenue en JS V14 avec une description aléatoire, j'ai commencé mais je n'y arrive pas, pouvez-vous m'aider svp ?
Voici le code :
const EmbedMessage = new EmbedBuilder()
.setTitle(`${member.guild.name}`)
.setColor('bot.color')
.setDescription('Le membre : <@${member.user.id}>.\n \u200B \nViens de rejoindre le serveur.', 'Bvn')
.setThumbnail(member.user.displayAvatarURL())
.setTimestamp()
.setDescription(Math.floor(Math.random()* Description.length));
if('Description' === "8ball"){
rndmessage('Description');
function rndmessage(Description){
bot.channels.cache.get('1040335477242339339').send({ embeds: [EmbedMessage]})
}}
je me suis inspiré d'ici : https://stackoverflow.com/questions/74101555/random-message-disocrd-js-v14
mais sinon le message de bienvenue fonctionne de base, c'est juste depuis que j'ai ajouté le rndmessage
Fait plutôt un truc dans ce style.
const Description = [
"Descritpion 1",
"Descritpion 2",
"Descritpion 3"
]
const EmbedMessage = new EmbedBuilder()
.setTitle(`${member.guild.name}`)
.setColor('bot.color')
.setDescription('Le membre : <@${member.user.id}>.\n \u200B \nViens de rejoindre le serveur.', 'Bvn')
.setThumbnail(member.user.displayAvatarURL())
.setTimestamp()
.setDescription(Description[Math.floor(Math.random()* Description.length]));
bot.channels.cache.get('1040335477242339339').send({ embeds: [EmbedMessage]})
j'ai essayé j'ai modifié mon code mais j'ai une erreur :
node:events:491
throw er; // Unhandled 'error' event
^
TypeError: Description is not a function
at module.exports (C:\Users\leura\OneDrive\Bureau\JS bot\Events\guildMemberAdd.js:76:21)
at Client.emit (node:events:513:28)
at Object.module.exports [as GUILD_MEMBER_ADD] (C:\Users\leura\OneDrive\Bureau\JS bot\node_modules\discord.js\src\client\websocket\handlers\GUILD_MEMBER_ADD.js:17:14)
at WebSocketManager.handlePacket (C:\Users\leura\OneDrive\Bureau\JS bot\node_modules\discord.js\src\client\websocket\WebSocketManager.js:352:31)
at WebSocketShard.onPacket (C:\Users\leura\OneDrive\Bureau\JS bot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:480:22)
at WebSocketShard.onMessage (C:\Users\leura\OneDrive\Bureau\JS bot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:320:10)
at WebSocket.onMessage (C:\Users\leura\OneDrive\Bureau\JS bot\node_modules\ws\lib\event-target.js:199:18)
at WebSocket.emit (node:events:513:28)
at Receiver.receiverOnMessage (C:\Users\leura\OneDrive\Bureau\JS bot\node_modules\ws\lib\websocket.js:1178:20)
at Receiver.emit (node:events:513:28)
Emitted 'error' event on Client instance at:
at emitUnhandledRejectionOrErr (node:events:394:10)
at processTicksAndRejections (node:internal/process/task_queues:85:21)
je te montre mon code :
const Description = [
"Description 1",
"Description 2"
]
const EmbedMessage = new EmbedBuilder()
.setTitle(`${member.guild.name}`)
.setColor('bot.color')
.setDescription('Description 1: Le membre : <@${member.user.id}>.\n \u200B \nViens de rejoindre le serveur.', 'Description 2: Bvn')
.setThumbnail(member.user.displayAvatarURL())
.setTimestamp()
.setDescription(Description(Math.floor(Math.random()* Description.length)));
bot.channels.cache.get('1040335477242339339').send({ embeds: [EmbedMessage]})
Oui parce que j'ai pas mis de fonction donc bizarre.
Ah tu as mis des parenthèses à la place des crochets.
c'est
Description[Math.floor(Math.random()* Description.length)]
ah att
merci car le message de bvn s'envoie mais sans la description aléatoire et sans le ping de la personne :
ça met <@$user.id}>
où <@${member.user.id}> quand j'ajoute le member
Au lieu de mettre les '' pour le texte mets des ``
merci ! ça fonctionne mais après avoir fait une dizaine d'essais, ma deuxième description aléatoire ne s'est jamais envoyé
Tu ne peut pas avoir 2 description @stark forge
description aléatoire*
Si
j'ai déjà vu ça sur un serveur
Ba nan 🤔
Ba faut modifier ta première description
Ou tu le remplaces par la dernière description
mais je vais pas modifier mon code a chaque nouveau membre...
bizarre parce que j'ai déjà vu quelqu'un le faire
Impossible
Si
Ba nan
malhereusement je peux pas te montrer car le serveur a été supprimer mais j'ai déjà vu un bot qui change de descrption a chaque nouveau membre
il a mis les message aléatoire que discord envoie
dans la description de son embed
Après peut-être qu'il a fais quelque chose qui puisse faire que les messages de discord aléatoire s'envoyent dans son embed
Faut enlever celui d'aux dessus
il sert a quoi le ```js
Description[Math.floor(Math.random()* Description.length)]
Ba pour avoir des messages aléatoire
oui, j'ai compris que je pouvais pas avoir deux description en meme temps, moi ce que je veux faire c'est que une des deux description s'envoyent a chaque fois qu'il y a un nouveau membre
C'est possible de faire un système aléatoire.
@copper pagoda j'ai jamais dis le contraire
Tu as dis impossible.
@copper pagoda relis avant de dire des bêtises stp
@stark forge comme je le redis, faut enlever ta première description
Waw t'es violent toi frérot.
mais ça veux dire qu'il n'y aura aucun message aléatoire, juste le même msg qui s'envoie tout le temps
Ba nan @stark forge
comment ça ? j'ai peut-être mal compris
Fait comme j'ai dis et tu test
dans le
const Description = [
"Description 1",
"Description 2"
]
``` j'enlève ``"Description 1",`` ?
Je parle dans ton embed @stark forge
dans mon embed, j'enlève "Description 1", ?
oui j'avais deux .setdescription et j'ai remplacer le deuxième par Description
stv je te montre mon code de mtn
Yes
const Description = [
"Description 1",
"Description 2"
]
const EmbedMessage = new EmbedBuilder()
.setTitle(`${member.guild.name}`)
.setColor('bot.color')
.setDescription(`Le membre : <@${member.user.id}>.\n \u200B \nViens de rejoindre le serveur.`, `Bvn`)
.setThumbnail(member.user.displayAvatarURL())
.setTimestamp()
Description[Math.floor(Math.random()* Description.length)]
bot.channels.cache.get('1040335477242339339').send({ embeds: [EmbedMessage]})
je le met dans le même ligne juste après le Bvn ?
Oui
j'ai fait plusieurs essais et la deuxième descritpion ne s'est jamais envoyé aussi
Met en plus, tu verras que sa changes bien
la j'en ai même mis 4 et toujours rien..
j'ai peut-être mal placé le Description
att jte montre
const Description = [
"Description 1",
"Description 2",
"Description 3",
"Description 4"
]
const EmbedMessage = new EmbedBuilder()
.setTitle(`${member.guild.name}`)
.setColor('bot.color')
.setDescription(`Le membre : <@${member.user.id}>.\n \u200B \nViens de rejoindre le serveur.`, `Bvn`, `test`, `Salut`, Description[Math.floor(Math.random()* Description.length)])
.setThumbnail(member.user.displayAvatarURL())
.setTimestamp()
bot.channels.cache.get('1040335477242339339').send({ embeds: [EmbedMessage]})
il y a que la première description qui s'envoie
donc je met toutes mes descriptions dans des ${} ?
ça marche pas
De ?
en faite c'est pas que ça marche pas, c'est juste que depuis toute a l'heure j'arrive pas a placer les ${} pour chaque description car ça me met plein d'erreur rouge dans mon code
?
je crois que c'est surtout a cause de <@${member.user.id}>
Non
Bah il y a que pour cette descritpion que je peux pas mettre les ${}
Screen ce que tu as fais
Mais faut pas faire ça
C'est
.setDescription(`${Description[Math.floor(Math.random() * Description.length)]}`)
tout ça j'enlève : ```js
Le membre : <@${member.user.id}>.\n \u200B \nViens de rejoindre le serveur., Bvn, test, Salut,
Oui
mais il y aura aucun message qui va s'envoyer ?
Si
Les messages automatiques de discord ?
Vous auriez une idée de combien de temps ça prends d’apprendre les bases de Js. Comprendre les grandes lignes afin de pouvoir coder tranquille ( sans forcément tout connaître par cœur ? )
2-3h ta déjà des base sympa
euh
Bonsoir, j'ai fais une commande pour permettre de voir l'avatar en plus grand mais quand je fais la commande avec le prefix ca ne marche pas.
Voici la commande si qlq peut m'aider ?
t'es optimiste ptet
après ça dépend si t'es familier avec la programmation en général
hey est ce que vous savez comment je peut faire que une fois quon a clique sur un btn apres pluspersonne peut cliquer en djs svp
Tu peux disable le btn
Une erreur ?
oui mais comment sa fait 1h que je cherche
row.components[0].setDisabled(true) ```
g fait sa mais sa marche pas
il reste cliquable et je comprend pas pourquoi
J'ai l'impression que tu modifie le bouton depuis le message.
Alors que tu devrais modifier le bouton après l'avoir récupéré depuis le message et ensuite modifier le message avec le bouton désactivé
j'ai pas compris
let nombre
const xpg = args.getNumber('quantité')
const Embed = new Discord.EmbedBuilder()
.setColor(bot.color)
.setTitle(`Drop d'xp`)
.setDescription(`soyez le premier à récupérer ${xpg}xp`)
.setTimestamp()
.setFooter({text: "normalcochon-bot", iconURL: "https://cdn.discordapp.com/avatars/831938139500970007/69fa718e7f44e3cd0c8e51accc6bad5f.webp?size=512"})
const row = new ActionRowBuilder()
.addComponents(
new ButtonBuilder()
.setCustomId('primary')
.setLabel('Clique ici pour récupérer l\'xp')
.setStyle(ButtonStyle.Success)
.setDisabled(false) ,
)
bot.on("interactionCreate", async (interaction) => {
if (interaction.customId === "primary") {
user = interaction.user
db.query(`SELECT * FROM xp WHERE guild = '${interaction.guildId}' AND user = '${user.id}'`, async (err,req) => {
const xp = parseInt(req[0].xp)
const level = parseInt(req[0].level)
const xpadd = xpg+xp
db.query(`UPDATE xp SET xp = ${xpadd} WHERE guild = '${interaction.guildId}' AND user = '${user.id}'`)
await interaction.reply({embeds: [embedr("Green",":tada: Bien joué :tada:",`${user.tag} à récupéré le drop de ${xpg}xp, il maintenant level ${level} avec ${xpadd} xp`)]})
row.components[0].setDisabled(true)
})
}
})
await message.reply({embeds : [Embed], components: [row] })```
mon code
Bonjour, excuser moi de vous deranger je suis nouveaux et j'aimerais savoir si ses possible que des un joueur se connect dans un salon vocal ( Besoins D'aide) un bot envoie ping les moderateur?
tu connais un peu les event?
Moi ?
Logiquement oui
Ah bah je suis pas un pro mais je connais les base ont va dire
Bjr, je crée mon bot discord en Java Script avec node.js (v14) et j'aimerai savoir si vous pourriez me. Donner des fichiers pour faire un slashcommznd car j'ai essayé bcp de chose et ça ne marche tjr pas
Merci de me mentionner.
Hey, montre nous ton code
Sinon tiens
const Discord = require('discord.js')
const config = require("../config")
const { REST } = require('@discordjs/rest')
const { Routes } = require('discord.js')
module.exports = async bot => {
let commands = [
];
bot.commands.forEach(async command => {
let slashcommand = new Discord.SlashCommandBuilder()
.setName(command.name)
.setDescription(command.description)
.setDMPermission(command.dm)
.setDefaultMemberPermissions(command.permission === "Aucune" ? null : command.permission)
if(command.options?.length >= 1) {
for(let i = 0; i < command.options.length; i++) {
if(command.options[i].type === "string") slashcommand[`add${command.options[i].type.slice(0, 1).toUpperCase() + command.options[i].type.slice(1, command.options[i].type.length)}Option`](option => option.setName(command.options[i].name).setDescription(command.options[i].description).setAutocomplete(command.options[i].autocomplete).setRequired(command.options[i].required))
else slashcommand[`add${command.options[i].type.slice(0, 1).toUpperCase() + command.options[i].type.slice(1, command.options[i].type.length)}Option`](option => option.setName(command.options[i].name).setDescription(command.options[i].description).setRequired(command.options[i].required))
}
}
await commands.push(slashcommand)
})
const rest = new REST({ version: 10 }).setToken(config.token)
await rest.put(Routes.applicationCommands(bot.user.id), { body: commands })
console.log("📌 Les slashs commandes sont créées avec succès ! ✅")
}```
Moi c la v14
https://discordjs.guide/creating-your-bot/command-deployment.html
https://discordjs.guide/slash-commands/response-methods.html
vous savez ou je peut trouver un bon bot music ?
Probot
sur github ?
oui
La, j'en ai aucune idée
Tu trouves ça ou l'ami @cyan iron ???
Les liens que tu m'as envoyé
Sur le site discordjs
Ça je sais
J'ai navigué sur le site avec les onglets à gauche
Bonjour, je voudrais faire un preloader. Je voudrais que mon gif ne s'affiche plus apres x temps afin de voir le site.
Mon code :
<div id="preloader"></div>
#preloader{
background: #0e111f url(https://motiongraphicsphoebe.files.wordpress.com/2018/10/943d662b-25c9-42d6-9fd2-cc36d2ffab76.gif) no-repeat center;
height: 100vh;
width: 100%;
position: fixed;
z-index: 100;
}
window.addEventListener('load',function(){
document.querySelector('body').classList.add("loaded")
});
Bonjour, je voudrais savoir si une personne peut m'aider à transformer une commande que j'ai en / commande merci d'avance ! (mentionner moi)
Bonsoir, je voudrais savoir pourquoi j'ai cette erreurs :
throw new TypeError('argument callback must be a function when provided');
^
TypeError: argument callback must be a function when provided
at Function.createQuery (/home/container/node_modules/mysql/lib/Connection.js:57:13)
at Connection.query (/home/container/node_modules/mysql/lib/Connection.js:181:26)
at Query.<anonymous> (/home/container/Events/messageCreate.js:13:20)
at Query.<anonymous> (/home/container/node_modules/mysql/lib/Connection.js:526:10)
at Query._callback (/home/container/node_modules/mysql/lib/Connection.js:488:16)
at Sequence.end (/home/container/node_modules/mysql/lib/protocol/sequences/Sequence.js:83:24)
at Query._handleFinalResultPacket (/home/container/node_modules/mysql/lib/protocol/sequences/Query.js:149:8)
at Query.EofPacket (/home/container/node_modules/mysql/lib/protocol/sequences/Query.js:133:8)
at Protocol._parsePacket (/home/container/node_modules/mysql/lib/protocol/Protocol.js:291:23)
at Parser._parsePacket (/home/container/node_modules/mysql/lib/protocol/Parser.js:433:10)```
à l'exécution de ce code :
```js
const Discord = require("discord.js")
const db = require("../Loaders/loadDatabase")
const mysql = require('mysql')
module.exports = async (bot, message) => {
// création du serveur dans la BDD
// identifiant du serveur
db.query("SELECT * FROM guild WHERE guild_ID = ?", message.guildId, async (err, req) => {
if (req.length < 1) {
db.query("INSERT INTO guild (guild_ID, guild_NAME, owner_ID) VALUES (?, ?, ?)", message.guildId, message.guild.name, message.guild.ownerId)
return message.channel.send(`> Id du serveur inscrit dans la bdd !`)
}
})
}```
et que pour le coup mes donné ne rentre pas dans ma bdd
avant tout sa j'avais fait plusieurs requête, on ma conseiller ce code..
mon ancien code c'est lui :
const Discord = require("discord.js")
const db = require("../Loaders/loadDatabase")
const mysql = require('mysql')
module.exports = async (bot, message) => {
// création du serveur dans la BDD
// identifiant du serveur
db.query("SELECT * FROM guild WHERE guild_ID = ?", message.guildId, async (err, req) => {
if (req.length < 1) {
db.query("INSERT INTO guild (guild_ID) VALUES (?)", message.guildId)
return message.channel.send(`> Id du serveur inscrit dans la bdd !`)
}
})
// nom du serveur
db.query("SELECT * FROM guild WHERE guild_NAME = ?", message.guild.name, async (err, req) => {
if (req.length < 1) {
db.query("INSERT INTO guild (guild_NAME) VALUES (?)", message.guild.name)
return message.channel.send(`> Nom du serveur inscrit dans la bdd !`)
}
})
// identifiant du fondateur du serveur
db.query("SELECT * FROM guild WHERE owner_ID = ?", message.guild.ownerId, async (err, req) => {
if (req.length < 1) {
db.query("INSERT INTO guild (owner_ID) VALUES (?)", message.guild.ownerId)
return message.channel.send(`> Id du fondateur inscrit dans la bdd !`)
}
})
}```
lui fonctionne
merci de votre éventuel aide !
Cherche dev JavaScript
Pour ?
Si c'est pour une mission il y a un outil dédié...
Pouvez vous m'aider ?
Bonjours, j'aimerai ajouter un role une fois que la vérification est passée, voici ce que j'ai fait mais cela ne fonctionne pas pouvez vous m'aider svp
if(response.content === captcha.text) {
await msg.delete()
await response.delete()
await channel.permissionOverwrites.delete(member.user.id)
const role = '1044007788029956137';
try {member.roles.add(role);} catch(err) {}```
Il nous faut plus de code
Ton msg tu le recupere ou
mon interactioncreate :
const Discord = require("discord.js")
module.exports = async (bot, interaction) => {
var db = bot.db
if(interaction.type === Discord.InteractionType.ApplicationCommandAutocomplete) {
let entry = interaction.options.getFocused()
if(interaction.commandName === "help") {
let choices = bot.commands.filter(cmd =>cmd.name.includes(entry))
await interaction.respond(entry === "" ? bot.commands.map(cmd => ({name: cmd.name, value: cmd.name})) : choices.map(choice =>({name: choice.name, value: choice.name})))
}
if(interaction.commandName === "set_captcha" || interaction.commandName === "set_antiraid") {
let choices = ["on", "off"]
let sortie = choices.filter(c =>c.includes(entry))
await interaction.respond(entry === "" ? sortie.map(c => ({name: c, value: c})) : sortie.map(c =>({name: c, value: c})))
}
}
if(interaction.type === Discord.InteractionType.ApplicationCommand) {
let command = require(`../Commandes/${interaction.commandName}`)
command.run(bot, interaction, interaction.options, db)
}
if(interaction.isButton()) {
if(interaction.customId == "ticket") {
let channel = await interaction.guild.channels.create({
name: `ticket-${interaction.user.username}`,
type: Discord.ChannelType.GuildText,
permissionOverwrites: [
{
id: interaction.guild.roles.everyone.id,
deny: [Discord.PermissionFlagsBits.ViewChannel]
}, {
id: interaction.user.id,
allow: [Discord.PermissionFlagsBits.ViewChannel, Discord.PermissionFlagsBits.SendMessages, Discord.PermissionFlagsBits.AttachFiles, Discord.PermissionFlagsBits.EmbedLinks]
}, {
id: "1044006782244233226",
allow: [Discord.PermissionFlagsBits.ViewChannel, Discord.PermissionFlagsBits.SendMessages, Discord.PermissionFlagsBits.AttachFiles, Discord.PermissionFlagsBits.EmbedLinks]
}
]
})
await channel.setParent(interaction.channel.parent.id)
await interaction.reply({content: `Votre ticket à bien été créé : ${channel}`, ephemeral: true})
}
}
}```
guildMemberadd :
const Discord = require('discord.js')
module.exports = async (bot, member) => {
let db = bot.db;
db.query(`SELECT * FROM server WHERE guild = '${member.guild.id}'`, async (err, req) => {
if(req.length<1 )return
if(req[0].antiraid === 'true') {
try {
await member.user.send("Vous ne pouvez pas rejoindre ce serveur car il est en mode antiraid")} catch(err) {}
await member.kick('antiraid actif')
}
if(req[0].captcha === 'false') return
let channel = member.guild.channels.cache.get(req[0].captcha)
if(!channel) return
await channel.permissionOverwrites.create(member.user, {
SendMessages: true,
ViewChannel: true,
ReadMessageHistory: true
})
let captcha = await bot.function.generateCaptcha()
let msg = await channel.send({content: `${member}, veuillez completer le captcha afin de débloquer l'accès au reste du serveur.\n *vous avez 2min et si vous ne le réussisez pas vous serez exclu du serveur !*`, files: [new Discord.AttachmentBuilder((await captcha.canvas).toBuffer(), {name: "captcha.png"})]})
try {
let filter = m => m.author.id === member.user.id
let response = (await channel.awaitMessages({filter, max: 1, time: 120000, errors: ["time"]})).first()
if(response.content === captcha.text) {
await msg.delete()
await response.delete()
const role = '1044007788029956137';
try {member.roles.add(role);} catch(err) {}
}else {
msg.delete()
await response.delete()
try {await member.user.send("Vous avez raté le captcha, vous pouvez re-rejoindre le serveur pour réésayer !")} catch (err) {}
await channel.permissionOverwrites.delete(member.user.id)
await member.kick("captcha non réussit !")
}
} catch (err) {
console.log(err)
await msg.delete()
try {await member.user.send("Vous avez été trop lents pour résoudre le captcha, vous pouvez re-rejoindre le serveur pour réésayer !")} catch (err) {}
await channel.permissionOverwrites.delete(member.user.id)
await member.kick("captcha non fait !")
}
})
}```
et le generate captcha
const Discord = require('discord.js')
const Canvas = require('canvas')
module.exports = async () => {
let char = [..."123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"]
let text = []
for(let i =0; i<6; i++) text.push(char[Math.floor(Math.random()*char.length)])
text = text.join('')
const canvas = Canvas.createCanvas(300,150)
const ctx = canvas.getContext("2d")
ctx.font = "35px 'Arial"
ctx.fillStyle = "#ffffff"
ctx.fillText(text, (150 - (ctx.measureText(text).width) / 2), 85)
console.log(text)
return {canvas: canvas, text: text}
}```
let msg = await channel.send({content: `${member}, veuillez completer le captcha afin de débloquer l'accès au reste du serveur.\n *vous avez 2min et si vous ne le réussisez pas vous serez exclu du serveur !*`, files: [new Discord.AttachmentBuilder((await captcha.canvas).toBuffer(), {name: "captcha.png"})]})```
Personne n'aurait un template de bot discord.js pour pas repartir de 0 😅
Salut a tous!
J'essaie de sort une liste de membre par grade sauf que quand je sort cela ne fonctionne pas voici mon code:
// Quand je get les user et les sort
let f1Members = message.guild.members.cache.filter(m => m.roles.cache.has(sysConfig.memberslist.roles.swap1)).sort(function(x, y){return y.roles.highest.position - x.roles.highest.position})
// Quand je les affiche dans mon embed
{name: `__Familly #1__:`, value: `${f1Members.map(m => `${utils.GetNickName(message.guild.id, m.user.id)} (${utils.GetRankName(message.guild.id, m.user.id)})`).join("\n")}`, inline: true},
sauf que cela ne fonctionne pas voici mon résultat:
https://prnt.sc/vBvXEcUsgNua
Merci d'avance!
ça a l'air de fonctionner pourtant
qu'est ce qui ne fonctionne pas exacteùent
Sa veut pas se sort...
Att jau
jai peut etre une idée
y a des roles au dessus de ça ?
Ses sa que je regarde 😉
aahx)
Effectivement c'était moi qui était débile ses jamais la machine qui fait l'erreur...
Merci bg
parfois la machine peut faire l'erreur mais c'est rare x)
j'ai pas fait grand chose mais de rien - (et intéressant ton system)
Merci ses pour une famille sur un serv gmod
ça fait depuis 1 mois que je travail sur un generateur de mdp vous voullez le voir?
on est daccord qec pas sense faire sa?js await message.reply({embeds: [Embed2], ephemeral: true})
Tu peux utiliser ephemeral que sur les interactions
slash command, button, select, modal
Il faut que tu repond a l'interaction pas le message
Si tu veux ephemeral
Si tu veux envoyer un msg quand le mec viens de passer un niveau non tu pourras pas le mettre en ephemeral
Par contre tu peux faire une commande genre /level pour check son niveau et là tu pourras répondre en ephemeral
Tu peux aussi lui envoyer un dm
Mais sa énerve les gens
C’est quoi l’erreur ?
Si il n’y a pas d’erreur, t’as essayé de mettre un console.log() avant et après chaque action ?
Salut, j'ai un problème avec un bot musique, les codes sont tous bon mais le resume ne fonctionne pas je ne comprend pas
const { Command, CommandoMessage } = require("discord.js-commando");
const { StreamDispatcher } = require('discord.js');
module.exports = class ResumeCommand extends Command {
constructor(client) {
super(client, {
name: 'resume',
group: 'music',
memberName: 'resume',
description: 'Reprend la musique qui est actuellement en pause.'
});
}
/**
*
* @param {CommandoMessage} message
* @param {String} query
*/
async run(message) {
/**
* @type StreamDispatcher
*/
const dispatcher = message.client.server.dispatcher;
if (!message.member.voice.channel) {
return message.say(':x: Tu dois être dans un salon vocal pour pouvoir utiliser cette commande !')
}
if (!message.client.voice.connections.first()) {
return message.say(":x: Je ne suis pas connecté au salon vocal ! Tape `-join` pour m'ajouter.");
}
if (dispatcher) {
dispatcher.resume();
}
return message.say("La musique à repris ! :thumbsup:");
}
}
Salut à tous j'ai une erreur
Uncaught Error Error [ERR_REQUIRE_ESM]: require() of ES Module c:\Users\moi\OneDrive\Bureau\BotDiscord\svp\node_modules\chalk\source\index.js from c:\Users\moi\OneDrive\Bureau\BotDiscord\svp\index.js not supported.
Instead change the require of c:\Users\moi\OneDrive\Bureau\BotDiscord\svp\node_modules\chalk\source\index.js in c:\Users\tomzi\OneDrive\Bureau\BotDiscord\svp\index.js to a dynamic import() which is available in all CommonJS modules.
Bonjours,
J'ai une question j'aimerait pouvoir convertir tout mes fichier dans un autre dossier grâce a rollup js un bundler mais j'aimerait savoir comment on fait pour directement convertir tout mes fichier sans écrire a chaque fois le nom du fichier dans le fichier config
Cordialement
bonjour quelqun pour maider en js + json ?
voici mon erreur que je ne suis pas capable dexpliquer
$('#locker-price').html(data.locker-token.usd)
Déjà ça c'est du code et non une erreur et ensuite je crois pas que tu veuilles faire une soustraction
Le - est utilisé pour les soustractions dans ton cas si ton objet data a une propriété locker-token qui lui a une propriété usd tu dois y accéder comme ça data["locker-token"].usd
Bonjour je cherche à mettre à jour une valeurs fonction tiré d'un tableau google sheet mais je n'arrive pas
Bonjour à tous, J'ai un soucis en React je n'arrive pas à récupérer mon images depuis le fichier JSON
Regarde dans le menu f12 dans network à quel endroit il essaye de trouver l’image
tu dois importer ton image pour pouvoir l'utiliser et si le chemin est dynamique . Tu peux utiliser la réponse donnée dans ce post qui est vraiment pas mal : https://stackoverflow.com/questions/53775936/import-image-dynamically-in-react-component#answer-70024111
Bonjour !
J'ai ce problème et je ne trouve pas de bonne réponse sur Internet
Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: No "exports" main defined in S:\dev\Bot UltrArthy\node_modules\discord-api-types\package.json
at new NodeError (node:internal/errors:393:5)
at throwExportsNotFound (node:internal/modules/esm/resolve:358:9)
at packageExportsResolve (node:internal/modules/esm/resolve:668:3)
at resolveExports (node:internal/modules/cjs/loader:529:36)
at Module._findPath (node:internal/modules/cjs/loader:569:31)
at Module._resolveFilename (node:internal/modules/cjs/loader:981:27)
at Module._load (node:internal/modules/cjs/loader:841:27)
at Module.require (node:internal/modules/cjs/loader:1061:19)
at require (node:internal/modules/cjs/helpers:103:18)
at Object.<anonymous> (S:\dev\Bot UltrArthy\index.js:22:23) {
code: 'ERR_PACKAGE_PATH_NOT_EXPORTED'
}
ah si vous voulez, regardez le package.json ciblé
il apparaît quand je veux lancer mon bot
oh je suis heureux
dans mon code, j'avais un const { EmbedType } = require('discord-api-types'); qui ne servait à rien, je ne me souvenais pas l'avoir mit, j'ai dû le mettre par erreur
en tout cas, c'est bon, mon problème est réglé
PS C:\Users\Squash\Desktop\EttyOfficial> npm tsc --init
Unknown command: "tsc"```
Comment je peux régler ça ?
En installant tsc
Bonjour je voudrais savoir comment je peux mettre plus de 5 boutons sur un embed
Car quand j'en met plus le bot crash
Il te suffit d’utiliser plusieurs "row".
Un row peut contenir au Max 5 boutons ou 1 menu
Et je crois que c’est au maximum 5 row/message
Ok j'y avais pas penser Merci !
Salut salut
j'ai une petite question qui m'embête un max. mes / commands sont uniquement disponible pour ceux qui on la perm administrator. et je voudrais quel soit dispo pour tous. PS: Je n'es pas set de permission avec defaultmemberpermission.
Merci d'avance
Envois ton handler
const command = client.SlashCommands.get(interaction.commandName);
if (!command) return;
try {
await command.execute(interaction);
} catch (error) {
console.error(error);
await interaction.reply({
content: 'Heum cela est un peu gênant. Une erreur est survenu!',
ephemeral: true
});
}
}
Fait ctrl + maj + f puis tape des trucs du genre admin ou permission ect
Par défaut il faut la permission administrateur pour exécuter une commande. Si tu n'as pas défini de default member permission alors tout fonctionne comme ça devrait fonctionner
ok car en v13 yavais pas besoin merci a toi
Default member permission est arrivé plus tard avant c'était un booléen "default permission" pour savoir si tout le monde pouvait exécuter cette commande ou uniquement les admins
ok ok merci
quelqu'un c'est comment récupérer le contenue input et le renvoyé vers quelque par comme une adresse ip et récupérer ce qui est mis dessus?
Hello, avez vous des librairies js à me conseiller pour animer mon site web ? (j'utilise déjà scrollReavel)
hey @keen narwhal
J'en connais peu mais je pense à animate on scroll https://michalsnik.github.io/aos/
AOS - Animate On Scroll library using CSS3
Hello, merci mais scollReveal fait sensiblement les mêmes tâches 😉
ah ok x) excuses moi
Salut, est-ce que quelqu'un saurait pourquoi j'ai cette erreur ?
j'ai une nouvelle question js si quelqu'un peut m'aider?
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style.css">
<script src="index.js" defer></script>
<title>Document</title>
</head>
<body>
<h1><mark>cvheoriehg</mark></h1>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Saepe labore nemo magnam commodi nihil eveniet unde vel voluptatum hic magni!</p>
<h2>mes flexboxs</h2>
<div class="container">
<div class="box1">1</div>
<div class="box2">2</div>
<div class="box3">3</div>
<div class="box4">4</div>
<div class="box5">5</div>
<div class="box6">6</div>
h1>Titre principal</h1>
<p>Un paragraphe</p>
<button id='b1'>window.open</button>
<button id='b2'>window.resizeBy</button>
<button id='b3'>window.resizeto</button>
<button id='b4'>window.moveBy</button>
<button id='b5'>window.moveTo</button>
<button id='b6'>window.scrollby</button>
<button id='b7'>window.scrollTo</button>
<button id='b8'>window.close</button>
</div>
</body>
</html>
let b1 = document.getElementById('b1');
let b2 = document.getElementById('b2');
let b3 = document.getElementById('b3');
let b4 = document.getElementById('b4');
let b5 = document.getElementById('b5');
let b6 = document.getElementById('b6');
let b7 = document.getElementById('b7');
let b8 = document.getElementById('b8');
let winSize = 'width=200, height=200';
b1.addEventListener('click', openWindow);
b2.addEventListener('click', resizeWindowBy);
b3.addEventListener('click', resizeWindowTo);
b4.addEventListener('click', moveWindowBy);
b5.addEventListener('click', moveWindowTo);
b6.addEventListener('click', scrollWindowBy);
b7.addEventListener('click', scrollWindowTo);
b8.addEventListener('click', closeWindow);
function openWindow(){
//On recupère l'information renvoyée par open() dans une variable "fenetre"
fenetre = window.open('https://www.codepen.io','', winSize);
}
function resizeWindowBy(){
fenetre.resize(200, 100);
}
function resizeWindowTo(){
fenetre.resizeTo(960, 720);
}
function moveWindowBy(){
fenetre.moveBy(100, 100);//Déplace la fenêtre 100px à droite et 100px en bas
}
function moveWindowTo(){
fenetre.moveTo(0, 0);//Place la fenêtre contre le bord supérieur gauche
}
function scrollWindowBy(){
fenetre.scrollBy(0, 200);//Défile de 200px vers le bas
}
function scrollWindowTo(){
fenetre.scrollTo(0, 0);//Remonte en haut de la page
}
function closeWindow(){
fenetre.close();
}
J'ai mi mon html et js mais seul les boutons open et close window fonctionne, je sais pas pourquoi?
👋 Hey,
Sauriez-vous quel api steam me permet de récupérer le nombre de joueur sur un serveur Gmod ?
Salut, je viens pour vous demander de l'aide, mon bot discord Crash quand il y a une erreur, mais j'aimerai qu'il se redémarre, Je suis sur discord JS 14 et je suis débutant.
il suffit juste de catch l'erreur il ne va plus crash
Euh ouai comment que je fait sa
je ne sais pas comment te l'expliquer, mais tu peux aller chercher sur internet
ce sera plus claire que mes explications
Oki
Vous pouvez donné votre avis: https://fugure-password-generator.netlify.app/
Bonjour, sur mon bot discord j'aimerais mettre en public les slashs commands, par quoi je dois remplacé la valeur "null" pour que tous les serveurs où se trouve mon bot aient les slahs cmd
Tu as un script de deploy ?
de ce genre
const { REST, Routes } = require('discord.js');
const { clientId, guildId, token } = require('./config.json');
const fs = require('node:fs');
const commands = [];
// Grab all the command files from the commands directory you created earlier
const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));
// Grab the SlashCommandBuilder#toJSON() output of each command's data for deployment
for (const file of commandFiles) {
const command = require(`./commands/${file}`);
commands.push(command.data.toJSON());
}
// Construct and prepare an instance of the REST module
const rest = new REST({ version: '10' }).setToken(token);
// and deploy your commands!
(async () => {
try {
console.log(`Started refreshing ${commands.length} application (/) commands.`);
// The put method is used to fully refresh all commands in the guild with the current set
const data = await rest.put(
Routes.applicationGuildCommands(clientId, guildId),
{ body: commands },
);
console.log(`Successfully reloaded ${data.length} application (/) commands.`);
} catch (error) {
// And of course, make sure you catch and log any errors!
console.error(error);
}
})();```
Si oui tu remplace applicationGuildCommands par applicationCommands
Et au passage en js null c'est juste null, si tu met des guillemets ça ne sera pas null mais une string avec "null" en contenu
donc si tu fais un if (!guild) par exemple il ne passera pas dedans car la valeur de ton null ne l'ai actuellement pas
Salut coupain pq tu as pas demander en mp je t'aurais aidé tu as réussi?
Oui je sais
Yes
Et pour les 3 const je met quoi a la place?
J'ai les deux dans mon code enfaîte
Ah bah avec ton truc si tu met guild = null c'est bon
mais pas guild = "null"
En gros si tu veux comprendre
? : ça s'appelle un ternaire et ça fonctionne comme un if else
if guild
applicationGuildCommand...
else
applicationCommand...
guild ? applicationGuild... : applicationCommand
C'est la même chose mais en + compact
et souvent utile pour les légers changements de valeurs/call
Bah ducoup ton token de bot sur discord developers
Et l'id de ton bot
Egalement sur discord developper ou en faisant clic droit -> copier l'identifiant sur ton bot
Et const guild = null;
Ah ok 😂
Oui je sais
J'ai pas réfléchi, quand j'ai fais ça, j'avais pas le temps
@opal harnessModule gamedig
J'ai aucune erreur dans la console, mais les slash cmd n'apparaissent toujours pas
Après quasiment 2h
Tu peux me montrer ton code ?
const fs = require('fs');
const { REST } = require("@discordjs/rest");
const { Routes } = require("discord-api-types/v9");
const config = require("/home/container/Cosmos pub/config.json")
const token = config.token
const application_id = config.appid
const guild = null //config.guildid
module.exports = (client) => {
const slashCommands = [];
fs.readdirSync('/home/container/Cosmos pub/slashCommands/').forEach(dir => {
const slashCommandFiles = fs.readdirSync(`/home/container/Cosmos pub/slashCommands/${dir}/`).filter(file => file.endsWith('.js'));
for (const file of slashCommandFiles) {
const slashCommand = require(`/home/container/Cosmos pub/slashCommands/${dir}/${file}`);
slashCommands.push(slashCommand.data.toJSON());
if(slashCommand.data.name) {
client.slashCommands.set(slashCommand.data.name, slashCommand)
// console.log(file, '- Success')
} else {
console.log(file, '- Error')
}
}
});
const rest = new REST({ version: "9" }).setToken(token);
(async () => {
try {
console.log("Started registering application (/) commands.");
await rest.put(
guild
? Routes.applicationGuildCommands(application_id, guild)
: Routes.applicationCommands(application_id),
{
body: slashCommands,
}
);
console.log(
"Successfully registered application (/) commands."
);
} catch (error) {
console.error(error);
}
})();
}
voila
Et en guildCommands elles se mettent ?
J'ai pas compris
hello quelqu'un est disponible quelques minutes ? Je dois faire une vérif d'un "formulaire" en javascript en gros si le format de l'email est pas correcte ça met en rouge le champs de texte sinon ça passe en vert
oui
Tu le fais avec quoi ton formulaire ?
tu veux dire le langage ?
non le framework
j'utilise pas de framework je suis qu'en première année de bts
pas de jquery rien ?
je sais meme pas ce que c'est 😓
ok, envois ton code 😉
ici
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Website</title>
<link rel="stylesheet" href="./SiteMarchand.css">
</head>
<body>
<form class="formulaire">
<div class="formulaire">
<p class="txtinscription">Inscription</p>
<label>Votre nom : </label>
<input type="text" name="name" id="name">
</div>
<div class="formulaire">
<label>Votre prénom : </label>
<input type="emtextail" name="prenom" id="prenom" >
</div>
<div class="formulaire">
<label>Votre email : </label>
<input type="email" name="email" id="email">
</div>
<span class="errorcode"></span>
<div class="formulaire">
<input type="submit" value="Confirmer">
</div>
</form>
<script>
</script>
</body>
</html>```
besoin du code css aussi ?
non
c'est quoi ce type ? emtextail
normalment en html avec les inputs l'email et directement valider et si l'email n'est pas bonne ca met un message
Tu as l'info ici : https://developer.mozilla.org/fr/docs/Web/HTML/Element/Input/email#validation_simple
Les éléments dont l'attribut type vaut email permettent à une utilisatrice ou un utilisateur de saisir et d'éditer une adresse mail ou, si l'attribut multiple est indiqué, une liste d'adresses mail. La valeur saisie est automatiquement validée afin de vérifier que le champ est vide ou que l'adresse (ou la liste d'adresses) est correcte. Les pse...
Les pseudo-classes CSS :valid et :invalid peuvent être utilisées afin de mettre en forme la valeur selon qu'elle est valide ou non
d'accord mais mon prof que ça soit en javascript la vérif du format pour les champs , merci quand meme
j'ai tout mon temps tkt
function isValidEmail(emailAddress) {
const regex =
/^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; // Regex n'y fait pas attention pour l'instant
return regex.test(String(emailAddress).toLowerCase());
}
document
.getElementById("tonFormulaire") // On récupère le formulaire par son ID `getElementById()`
.addEventListener("submit", function (e) { // On écoute l'événement `submit` sur le formulaire
var input = document.getElementById("email"); // On récupère l'input avec son ID `getElementById()`
if (input.value.trim() === "") { // Si la valeur de l'input est vide
alert("Please fill in user name"); // On affiche un message d'erreur
input.focus(); // On focus l'input
e.preventDefault(); // On empêche l'envoi du formulaire
} elseif (!isValidEmail(input.value.trim())) { // Si la valeur de l'input n'est pas un email valide
alert("Please fill in a valid email address"); // On affiche un message d'erreur
input.focus(); // On focus l'input
e.preventDefault(); // On empêche l'envoi du formulaire
}
// suite de ton code
});
Voila la base
du coup tu dois :
- Ajouter un ID a ton formulaire
- Ajouter une div vide sous t'es inputs
- Chercher comme un grand comment ajouter une class et un text sur une div avec du JS
ok mais le regex je l'ai pas vu en cours je sais pas ce que c'est la seule instruction que j'ai vu pour le moment c'est document.getElementById je connais pas le reste
Le regex c'est ultra compliqué, j'ai beaucoup de mal du coup j'ai chercher sur internet pour le trouver
bah si c'est pour faire simplement un copié collé et rien comprendre du code je vais pas vraiment avancer , merci d'avoir passé du temps 👍
tous est écris il te suffit de lire et le regex je peux t'expliquer mais ca ne servira a rien sachant que tu vas bientôt l'apprendre en cours
et ca : https://www.lucaswillems.com/fr/articles/25/tutoriel-pour-maitriser-les-expressions-regulieres
Les expressions régulières sont des outils de recherche puissants, utilisés dans de nombreux langages de programmation, mais difficiles à prendre en main.
Le regex c'est très compliqué à comprendre pour le coup, c'est rare même pour le gars qui l'a écrit d'expliquer précisément ce que chaque char signifie.
Mais sinon le reste du code, tu as donc le getElement que tu connais, après il ajoute un eventListener du type "submit", donc en gros lorsque ton bouton "submit" de ton <form> serait cliquer, la fonction suivante sera déclenchée.
Après il check si l'email est vide ou s'il ne correspond pas au regex du dessus, et après a toi d'imaginre la suite
J'ai fait un truc basique mais oklm
@autumn glacier
Bah elles se deploy quand tu met un serveur en particulier?
@past nimbus t'es pas d'accord avec un truc ?
Ta première phrase
Bonjour, comment je peux faire que mon bouton soit cliquable si on est le jour x par exemple (comment un calendrier de l'avant) ?
Pour le coup j'ai mal formuler le "qui l'a écrit", c'était plus dans le sens, tu vas chercher une formule regex qui correspond à ton besoin sur stack souvent si t'es pas un expert (comme le bout de code au dessus) et y'a potentiellement des bouts de l'expression que tu ne seras pas exactement expliqué
à part si tu as suivi un cours ou autre sur le regex bien poussé
En web ?
Bah pour le coup cette remarque est vraie pour n'importe quel domaine, le petit nouveau qui vient copier/coller le code d'un bot discord sans rien comprendre, c'est la même chose
Ouai mais dans ce cas c'est pas pertinent dans l'apprentissage d'un langage de connaître le regex sur le bouts des doigts
Perso je me débrouille mais la string du dessus je saurai pas te l'expliquer char par char
🤔
regex dans la plupart des cas c'est un outil qui est sympa à connaitre qu'un langage que tu veux apprendre du genre js
si tu c/c ton code dès le début sans comprendre ça va être compliqué
et c'est d'ailleurs ce que Meister à souligné
Mais là tu tournes autour du pot pour au final dire la même chose ^^
Cette remarque est vraie peu importe le domaine, qu'on parle d'expertise ou non car ici on parle bien de comprendre un morceau de "code"
Ouais
Dans le cas précis non, c'est pas forcément pertinent de comprendre cette ligne puisqu'il veut apprendre le js de ce que j'ai cru comprendre.
Si il sait ce que cette ligne représente/fait même s'il ne connait pas le format exacte du Regex c'est moins grave que de ne pas comprendre ce que .addEventListener fait par exemple 🤷♂️
Si il arrive à expliquer que cette ligne est une expression régulière qui va venir chercher un certain format dans une string/texte c'est déjà bien s'il débute
Bon laisse tomber tu fais exprès de pas comprendre ^^
Big cerveau
Je t'ai dis dès le début que j'ai mal formuler mais que l'idée est là
C'est pas pertinent de connaître par coeur le regex quand tu veux apprendre un langage qui ce sert un p'tit coup pour check un format du regex
A aucun moment j'ai sous entendu ça
Si c'est juste front tu peux mettre un bouton en html avec un id, et dans le script js faire un check de la date actuelle avec new Date() et ajoute l'attribut disabled si c'est pas le bon jour
Bah tu dis qu'aller chercher du regex sur internet sans le comprendre dans son entièreté c'est comme aller chercher ton bout de code sur stack
Sauf que comme je t'ai dis, il découvre/apprends un langage donc de ce que j'ai vu il a la logique d'essayer de comprendre ce qu'il cherche à apprendre avant de le copier (de part ça réponse au bout de code).
Mais au lieu qu'il prenne 3h à comprendre la logique du regex (Dans ce cas précis) c'est + pertinent qu'il se concentre sur le reste du snippet.
C'est même pour ça que maintenant y'en a qui s'amusent à faire des traducteurs anglais to regex tellement même pour un dev calé ça reste un bon boulot de comprendre le regex complètement
Encore une fois, je répondais par rapport à son cas précis
Je ne parlais pas de manière générale de base seulement de lui et du bout de code qui lui a été donné.
j'entend bien, ce que je dis c'est que copier sans comprendre c'est inutile
je ne dis pas qu'il doit comprendre tout les regex du monde, mais au moins son cas précis
Si tu ne comprend pas (le dev), t'as aucune assurance sur l'update et sur le fait que c'est réellement ce que tu recherches
Son cas précis est quand même high level je trouve mais oui faut comprendre c'est important mais après quand tu déboules dans le monde du dev, comprendre le langage déjà sur lequel tu bosse c'est quand même plus sympa et pertinent qu'une string regex quoi
bah ça fait partie d'un tout
Pilote de formule 1 c'est pas juste conduire, il y a de l'étude moins drôle derrière
Enfin voilà ^^
Réel
Après je l'ai trouvée compliquée pour pas grand chose donc à expliquer -_-
et surtout à comprendre
Y'a surement 20x plus simple pour valider un email
Bref s'agirait que je retourne taf, en te souhaitant une bonne journée
A toi aussi
mais pour en revenir a ca ... Tu n'apprend pas a chercher par toi même en cours ? tu n'as le droit d'utiliser que les outils que tu as appris ? ou de faire des recherche pour en apprendre plus ?
Nan c'est démerde toi totalement tes un grand
Sauf que quand tu bloque bah...
vous savez comment je peut modifier le src d'une image avec jquery ?
j'ai fait actuellement :
function setLogo(value){
$('#logo').attr('src', value)
}
dans ce que j'essaye #logo correspond a l'id de ma balise <img> mais ma src ne se change pas, le probleme est que cela passe par 2 div avant d'arriver a img
Salut les gars, peut être que c'est hors-sujet, mais j'ai besoin d'aide pour creer un Puissance 4 en Javascript avec Prompt svp
Oui mais je dois faire sans jsquery ou autre
Tu veux dire en vanilla ? Sans rien ? parce que là c'est des technos à jour et très utiles
Tu veux dire quoi par avec prompt ?
Si jamais j’en ai fait un en vanilla, il est pas très animé mais il est fonctionnel
Enfaîte je veux attribuer moi meme genre par exemple le nb de colonne et de ligne
l'ejs il rentre aussi dans ce salon ou pas pour le support
car j'ai un peit problèle avec un programme que j'ai fait
Oui tu peux le mettre ici.
const express = require("express");
const app = express();
const fs = require("fs");
const db=require("./db.js")
const getid=(id)=>{
return new db.getpath(id)
}
app.set('view engine', 'ejs');
app.get("/", function (req, res) {
res.render('index', {
results: fs.readdirSync("C:\\Users\\MPA\\Videos\\file")
});
})
app.get("/watch", function (req, res) {
res.render('view', {
code: req.query.id
});
});
app.get("/video", function (req, res) {
// Ensure there is a range given for the video
const videoPath = getid(req.query.id);
const videoSize = fs.statSync(videoPath).size;
const CHUNK_SIZE = 10 ** 6; // 1MB
const start = Number(range.replace(/\D/g, ""));
const end = Math.min(start + CHUNK_SIZE, videoSize - 1);
// Create headers
const contentLength = end - start + 1;
const headers = {
"Content-Range": `bytes ${start}-${end}/${videoSize}`,
"Accept-Ranges": "bytes",
"Content-Length": contentLength,
"Content-Type": "video/mp4",
};
// HTTP Status 206 for Partial Content
res.writeHead(206, headers);
// create video read stream for this particular chunk
const videoStream = fs.createReadStream(videoPath, { start, end });
// Stream the video chunk to the client
videoStream.pipe(res);
});
app.listen(8000, function () {
console.log("Listening on port 8000!");
});
```index.js
quelqu’un pourrait m’aider à code un bot discord?
let uuid =require("uuid").v4
const fs =require("fs")
let array=fs.readdirSync("C:\\Users\\MPA\\Videos\\file")
init=()=>{
let result=[]
for (let index = 0; index < array.length; index++) {
const element = array[index];
result.push({path:element,id:uuid(15)})
}
return result
}
class db{
constructor(){
this.db=init()
}
getpath=(id)=>{
let content =this.db
let i=0
let path=""
while(content[i].id!==id){
i+=1
}return path="C:\\Users\\MPA\\Videos\\file"+content[i].path
}
get=(id)=>{
let content =this.db
let i=0
let path=""
while(content[i].id!==id){
i+=1
}return content[i].id
}
}
module.exports=db```db.js
programme de visualisation bugger
Bonjour, quelqu’un serait disponible pour m’aider à code un bot discord en node.js?
Si intéressé contacter moi mp
Bonjour je voulais savoir si c'etait comme ça pour mettre plusieurs components ?
({ embeds: [embed], components: [row] [test] });
({ embeds: [embed], components: [row, test] });
Bonjour,
Quelqu’un pourrait me fournir un code permettant de rajouter une commande dans les slash commands
Ahhhh ok je te remercie !
Salut 👋
Est-ce qu'il est possible depuis la propriété document de récupérer le body sans lui attribuer de class ou de id ?
Documentation suggestion for @silent ice:
:method: ApplicationCommandManager#set()
Sets all the commands for this application or guild.
😜
Salut, j'ai essaye de faire un dashboard en suivant un tuto et j'ai un soucis en allant sur localhost:8080, ca me refuse l'accès au site
impossible
Hello,
Tu peux nous en dire plus sur la stack que tu utilises ?
Et niveau code ça donne quoi?
const Discord = require("discord.js")
const loadDatabase = require("../Loaders/loadDatabase")
const DBD = require("discord-dashboard")
const Theme = require("dbd-capriham-theme")
const loadSlashCommands = require("../Loaders/loadSlashCommands")
const { Client, GatewayIntentBits, ActivityType } = require('discord.js')
const config = require("../config")
module.exports = async bot => {
await loadSlashCommands(bot)
let allcommands = [];
await bot.commands.forEach(commands => allcommands.push({commandName: commands.name, commandUsage: commands.utilisation, commandDescription: commands.description}))
bot.db = await loadDatabase()
bot.db.connect(function (err) {
if(err) console.log(err)
console.log(`${`[DISCORD]`.trap} ${`Connecté en tant que`.white} ${`${bot.user.tag}`.random}`)
})
await DBD.useLicense(config.licence)
DBD.Dashboard = DBD.UpdatedClass()
const Dashboard = new DBD.Dashboard({
port: 8080,
client: {
id: bot.user.id,
secret: config.secret
},
redirectUri: "http://localhost:8080/discord.callback",
domain: "http://localhost",
minimalizedConsoleLogs: true,
acceptPrivacyPolicy: true,
bot: bot,
feeds: {
title: "Feeds",
list: [
{```
icon: "fa fa house",
text: "New user",
timeText: "Just now",
bg: "bg-ligh-danger"
},
{
icon: "fa fa house",
text: "Server Issues",
timeText: "Just now",
bg: "bg-ligh-danger"
}
]
},
theme: Theme({
websiteName: "Amiente",
iconURL: "https://cdn.discordapp.com/attachments/1048338287691038840/1048338331630583808/telecharge.png",
index: {
card: {
title: "Amiente Bot de modération et de protection",
description: "Un bot qui fait tout"
},
information: {
title: "Informations",
description: "Description"
},
},
commands: {
pageTitle: "Commandes",
table: {
title: "Toutes les commandes",
subTitle: "Test",
list: allcommands
}
},
}),
settings: []
})```
Salut je suis nouveau en Discord JS, je suis en discord 14 et j'aimerai modifier mon Handler Event pour au lieu d'avoir ./events/file.js avoir ./events/buttons,selectmenus,modals/file. Je ne sais pas comment faire si quelqu'un pourrait m'aider.
PS : j'ai essayer avec ** mais il me charge aucun fichier
Perso moi j'ai utilisé ça events/*/*.js
Je vais essayer
Error: ENOENT: no such file or directory, scandir './events/*/'
// event handler
console.log('Le bot est entrain de se démarrer... ...')
console.log(`------------------------------------------------------------------------`);
const eventFiles = fs.readdirSync(`./events/*/`).filter(file => file.endsWith('.js'));
for (const file of eventFiles) {
const event = require(`./events/*/${file}`);
bot.on(event.name, (...args) => event.execute(...args, bot));
console.log(`${file} chargé avec succès!`)
};
File correspond au nom de l’event
Donc si tu changes ça casses tous
Perso ma ligne c'est après j'utilise pas fs.
const eventFiles = await globPromise(`${process.cwd()}/events/*/*.js`);
Je doit faire comment ?
Mais normalement ça marche très bien
Bah je ne vois pas où est le problème ?
Tu peux ajouter des dossiers enfaîtes
Ah bah ligne 63 tu fais events/**/
node:internal/fs/utils:348
throw err;
^
Error: ENOENT: no such file or directory, scandir './events/**/'
at Object.readdirSync (node:fs:1451:3)
at Object.<anonymous> (D:\JavaScript\Weazel News\main.js:58:23)
at Module._compile (node:internal/modules/cjs/loader:1159:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1213:10)
at Module.load (node:internal/modules/cjs/loader:1037:32)
at Module._load (node:internal/modules/cjs/loader:878:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:23:47 {
errno: -4058,
syscall: 'scandir',
code: 'ENOENT',
path
Attends
Salut les gars, une question parmis tant d'autres, vous héberger votre bot chez qui?
Const eventsforlder = fs.readdirSync('./events')
for (const folder of eventsforlder) {
const eventFile = fs.readdirSync(./events/${folder}).filter((file) => file.endsWith('.js'))
for (const file of eventFile) {
const eventfile= require(`../events/${folder}/${file}`)
—ton code
}
}
Ne copie pas juste sinon ça marchera pas
node:internal/modules/cjs/loader:998
throw err;
^
Error: Cannot find module '../events/boutons/buttons.js'
Require stack:
- D:\JavaScript\Weazel News\main.js
at Module._resolveFilename (node:internal/modules/cjs/loader:995:15)
at Module._load (node:internal/modules/cjs/loader:841:27)
at Module.require (node:internal/modules/cjs/loader:1061:19)
at require (node:internal/modules/cjs/helpers:103:18)
at Object.<anonymous> (D:\JavaScript\Weazel News\main.js:65:24)
at Module._compile (node:internal/modules/cjs/loader:1159:14)
at Module._extensions..js (node:internal/modules/cjs/loader:1213:10)
at Module.load (node:internal/modules/cjs/loader:1037:32)
at Module._load (node:internal/modules/cjs/loader:878:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) {
code: 'MODULE_NOT_FOUND',
requireStack: [ 'D:\\JavaScript\\Weazel News\\main.js' ]
}
Bjr
Besoin d'aide pour Bot Discord
Indentifiez moi si vs êtes intéressé
/ajter moi en ami
#demande-de-dev @meager cedar
Nn c bon merci, vais faire avec mes connaissances en solo enft @dire latch
Ok @meager cedar
Bonjour,
Quelqu'un aurait l’éventuel solution ou idée d'ou cela pourrait venir
Salut, alors j'essaye de recup des valeurs via une api en les enregistrant en local puis je push toutes les infos dans data donc hier ca marchais nikel mais la le console.log de data me renvois un array vide
await axios.get(api).then((res) => {
const data = [];
const nodes = res.data.data.user.edge_owner_to_timeline_media.edges;
nodes.map(async (node) => {
const Image = await downloadFile(
node.node.display_url,
"images",
node.node.id + ".jpg"
);
const Likes = node.node.edge_media_preview_like?.count || 0;
const Comments = node.node.edge_media_to_comment?.count || 0;
const Caption =
node.node.edge_media_to_caption?.edges[0]?.node?.text || "";
const Video = node.node.video_url
? await downloadFile(
node.node.video_url,
"videos",
node.node.id + ".mp4"
)
: "";
const Type = node.node.is_video ? "video" : "image";
const Date = node.node.taken_at_timestamp;
const Post = {
Likes,
Comments,
Caption,
Image,
Video,
Type,
Date,
};
data.push(Post);
});
console.log(data);
});
je tiens a dire que tous les fichier png et mp4 ce telechargent
il trouve pas le channel
Bon vraiment pas fou mais voila : ```js
const fetchData = async () => {
const res = await axios.get(api);
const data = [];
const nodes = await res.data.data.user.edge_owner_to_timeline_media.edges;
const dataToSend = await nodes.map(async (node) => {
const Image = await downloadFile(
node.node.display_url,
"images",
node.node.id + ".jpg"
);
const Likes = (await node.node.edge_media_preview_like?.count) || 0;
const Comments = (await node.node.edge_media_to_comment?.count) || 0;
const Caption =
(await node.node.edge_media_to_caption?.edges[0]?.node?.text) || "";
const Video = node.node.video_url
? await downloadFile(
node.node.video_url,
"videos",
node.node.id + ".mp4"
)
: "";
const Type = (await node.node.is_video) ? "video" : "image";
const Date = await node.node.taken_at_timestamp;
const Post = {
Likes,
Comments,
Caption,
Image,
Video,
Type,
Date,
};
data.push(Post);
return data;
});
const ToSend = await Promise.all(dataToSend); // ca marche ca :o
return ToSend[ToSend.length - 1];
};```
Salut j'ai un petit soucis !
Quand je fait ma commande !help cela m'affiche cette erreur :
Voici le code : https://hastebin.com/iculibiwiy.typescript
Hastebin is a free web-based pastebin service for storing and sharing text and code snippets with anyone. Get started now.
alors ?
il ne reconnait pas prefix
du coup j'aimerais de l'aide
j'ai envoyer le code
${client.config.prefix} ligne 21 et ${config.prefix} ligne 16
c'est deja assigné dans ton run : run: async (client, message, args, prefix, color)
bah pk ça marche pas du coup ?
ça marche pas
frr je règle comment le problème du coup ?
justement c'est pas mon code c'est pour ça je cherche de l'aide
et j'ai essayer pas mal de chose sinon j'aurais pas demander de l'aide tu capte
essaye ca : js module.exports = { name: 'help', aliases: [], run: async (client, message, args) => { console.log(client.config.prefix) } }
même erreur
j'ai changer
pareil
tu reboot ton bot a chaque fois ?
oe
envois ton index.js
/// ASS GESTION V2.0.5
// variable
const Discord = require('discord.js')
const client = new Discord.Client({
fetchAllMembers: true,
partials: ['MESSAGE', 'CHANNEL', 'REACTION', 'GUILD_PRESENCES', 'GUILD_MEMBERS', 'GUILD_MESSAGES', 'GUILD_VOICE_STATES'] ,
intents: [
Discord.Intents.FLAGS.DIRECT_MESSAGES,
Discord.Intents.FLAGS.DIRECT_MESSAGE_REACTIONS,
Discord.Intents.FLAGS.DIRECT_MESSAGE_TYPING,
Discord.Intents.FLAGS.GUILDS,
Discord.Intents.FLAGS.GUILD_BANS,
Discord.Intents.FLAGS.GUILD_EMOJIS_AND_STICKERS,
Discord.Intents.FLAGS.GUILD_INTEGRATIONS,
Discord.Intents.FLAGS.GUILD_INVITES,
Discord.Intents.FLAGS.GUILD_MEMBERS,
Discord.Intents.FLAGS.GUILD_MESSAGES,
Discord.Intents.FLAGS.GUILD_MESSAGE_REACTIONS,
Discord.Intents.FLAGS.GUILD_MESSAGE_TYPING,
Discord.Intents.FLAGS.GUILD_PRESENCES,
Discord.Intents.FLAGS.GUILD_VOICE_STATES,
Discord.Intents.FLAGS.GUILD_WEBHOOKS,
]
})
const {readdirSync} = require("fs")
const db = require('quick.db')
const ms = require("ms")
const { MessageEmbed } = require('discord.js')
const {login } = require("./util/login.js");
login(client)
process.on("unhandledRejection", err => {
if(err.message) return
console.error("Uncaught Promise Error: ", err);
})
const loadCommands = (dir = "./commands/") => {
readdirSync(dir).forEach(dirs => {
const commands = readdirSync(`${dir}/${dirs}/`).filter(files => files.endsWith(".js"));
for (const file of commands) {
const getFileName = require(`${dir}/${dirs}/${file}`);
client.commands.set(getFileName.name, getFileName);
console.log(`> commande charger ${getFileName.name} [${dirs}]`)
};
});
};
const loadEvents = (dir = "./events/") => {
readdirSync(dir).forEach(dirs => {
const events = readdirSync(`${dir}/${dirs}/`).filter(files => files.endsWith(".js"));
for (const event of events) {
const evt = require(`${dir}/${dirs}/${event}`);
const evtName = event.split(".")[0];
client.on(evtName, evt.bind(null, client));
console.log(`> event charger ${evtName}`)
};
});
};
loadEvents();
loadCommands();
envosi ton login .js
const { readdirSync} = require('fs');
const login = (client) => {
const Discord = require("discord.js")
const logs = require('discord-logs');
logs(client)
const disbut = require('discord-buttons');
disbut(client);
const tempo = require("./gestion/tempo.js");
tempo(client)
const config = require("../config.json")
client.cooldown = new Array();
client.interaction = {}
client.guildInvites = new Map();
client.queue = new Map();
client.commands = new Discord.Collection()
client.aliases = new Discord.Collection()
client.snipes = new Map()
client.inter = new Array()
client.login(config.token)
}
module.exports = {
login
}
alors ?
client.config = config
?
met ca sous client.inter
cela me fait plus d'erreur cependant bah la commande marche pas du tout
cependant quand je fait la cmd le préfixe apparait
c'est quoi ta nouvelle erreur ?
aucune
y'a aucune erreur juste la cmd ce lance
pas
renvois moi ta commande stp
@floral bolt
c le même
ligne 136 enleve if (!args[0])
toujours rien
pas derreur rien ?
rien
mets un console.log("test") pour voir si la commande ce lance
oui
y'a écris test
je reviens
du coup ?
d'ailleur aucune de mes commande réagisse pas uniquement le help @floral bolt
bonsoir j'ai une erreur dans mon code avec les flags on pourrais m'aider
l'erreur
GatewayIntentBits.Guilds,
^
TypeError: Cannot read property 'Guilds' of undefined
le Code
const {prefixconfig, token} = require('./config.json');
const {Discord, ActivityType, Client, GatewayIntentBits, MessageEmbed, EmbedBuilder, AttachmentBuilder} = require('discord.js');
const client = new Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
GatewayIntentBits.GuildMembers,
],
});```
enleve le client.config alors
tu sais ce que c'est qu'un handler ?
@pseudo flicker je crois que c psk tu n'as pas défini ton GatewayIntentBits.Guilds dans le "const machin = require("discord.js");
const {prefixconfig, token} = require('./config.json');
const {Discord, ActivityType, Client, GatewayIntentBits, MessageEmbed, EmbedBuilder,
GatewayIntentBits.Guilds, AttachmentBuilder} = require('discord.js');
const client = new Client({
intents: [
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,
GatewayIntentBits.GuildMembers,
],
});```
Essaie ça
Après je suis pas très bon en js donc je te dit ptêtre des connerie
Mais je vois que ça
Sinon, vérifie tes intents dans le développer portal
J'ai deco j'ai cours demain mais bon je comprends pas d'ou viens le problème
marche pas
Bonjour 👋
if (selected === 'ticketconfigtitrefirst') {
if (!interaction.member.permissions.has("ADMINISTRATOR") || !interaction.user.id === "298113799012089857") return interaction.channel.send("**Vous ne possédez pas la permission administrateur**")
var yx = await interaction.message.channel.send({content: "Quel sera le **Titre 1** ?"})
interaction.channel.awaitMessages({ max: 1, time: 60000, errors: ["time"] }) .then(async (collected) => {
if (collected.first().content.length > 100) return interaction.message.channel.send({content: "Titre trop long (max 100 caractères)."}).then(msg => {
setTimeout(() => msg.delete(), 5000) }).then(collected.first().delete(), yx.delete())
db.set(`titleticketmenufirst_${interaction.guild.id}`, collected.first().content)
interaction.message.channel.send(` le titre 1 a été définis sur : **${collected.first().content}**`).then(msg => {
setTimeout(() => msg.delete(), 5000)
})
yx.delete()
collected.first().delete()
})
} ```
Voici mon code
Il n'y a pas d'erreur en soit mais si je fais un message avec > de 100 caractères cela va supprimer mon message mais pas le titre de celui ci ("Quel sera le **titre 1**?) Comment résoudre ce petit problème ?
J'ai un problème avec mon load de slashcommand voici l'erreur
Et voici le code:
const { REST } = require('@discordjs/rest')
const { Routes } = require("discord.js")
module.exports = async bot => {
let commands = [];
bot.commands.forEach(async command => {
let slashcommand = new Discord.SlashCommandBuilder()
.setName(command.name)
.setDescription(command.description)
.setDMPermission(command.dm)
.setDefaultMemberPermissions(command.permission === "Aucune" ? null: command.permission)
if(command.options?.length >= 1) {
for(let i = 0; i < command.options.length; i++) {
slashcommand[`add${command.options[i].type.slice(0, 1).toLowerCase() + command.options[i].type.slice(1, command.options[i].type.length)}Option`](option => option.setName(command.options[i].name).setDescription(command.options[i].description).setDMPermission(command.options[i].description).setRequired(command.options[i].required))
}
}
await commands.push(slashcommand)
})
const rest = new REST({version: "10"}).setToken(bot.token)
await rest.put(Routes.applicationCommands(bot.user.id), {body: commands})
console.log("Les slashs commandes sont crées avec succès !")
}```
oui une partie mais je comprend pas l'erreur @meager cedar
Evite d'utiliser des packages de random c'est très souvent moins productif que de le faire soit même
Surtout qu'ici il t'aide pas du tout avec le retour d'erreur..
j'ai que utiliser pour slash command car j'avais pas d'idée de comment faire
D'acc, bah dans un premier temps pour debug je te conseille d'update ton code pour gérer bien l'async et ensuite debugger ligne par ligne
ok mrc
Hey ! Comment on enlève les "labels" non utilisés avec ChartJS
Ou juste récupérer le dernier point
Salut une personne pourrait m'expliquer comment marche les webhooks car personne est capable de me répondre, car j'aimerais l'utiliser pour un bot discord pour envoyer des messages avec une photo de profil différente à chaque message
Rien de très particulier
Tu as une URL sur laquelle tu postes un message (string ou embed) et le message sera envoyé dans le channel du Webhook
Ce post te retourne un objet Message qui va te permettre par le suite de faire des actions dessus (edit, delete...)
Si tu sais faire une requête HTTP, tu sais utiliser les Webhooks Discord
@zinc jasper
non je sais pas faire mais du coup j'ai trouvé la véritable doc qui n'es pas celle du développement portal
celui là et je pense que je peux y arriver avec ça je te redis, et merci
car toi je suppose tu utilise ça ?https://discord.com/developers/docs/resources/webhook#create-webhook
Integrate your service with Discord — whether it's a bot or a game or whatever your wildest imagination can come up with.
avec les liens
La "véritable" doc c'est le deuxième lien
comment on set l'activité d'un bot?
client.user.setActivity('/help', {type: ActivityType.Watching});
client.user.setPresence({
status: 'dnd', //do not distrub
activity: {
name: '',
type: ''
}```
voila après tu le change tu met ce que tu veut
Ok
MRC
dr
tui peux faire un truc comme ca : ```js
setTimeout(() => {
msg.delete()
collected.first().delete()
yx.delete()
}, 5000)
Cela ne marche pas
yx ne veut pas se delete dans le if
setInterval(() => {
tonchannel = client.channels.cache.get("tonchannelID")
await tonchannel.bulkDelete(1, true)
let example = await channel.send('ton message')
}, 5000);```
essaye d'utiliser un truc comme ça
Mais vu ce code pourquoi pas juste edit le message en question
j'ai juste modifié le code de snox si jamais pour voir si il marche comme ça
il y a un problème?
Non mais ton but ses de remplacer l'ancien message perso je ferais juste l'édit
j'ai pas compris je n'est aucun but juste j'ai voulu aider
mais d'accord
Yep tkt je dit juste que le but de cette action est de remplacer un message et aulieu de delete et send un new message tu pouvais juste lupdate
ah oui pas faux
Je veux pas bulk delete, et je veux pas send un nouveau message (???)
Le problème du bulk delete c'est que si quelqu'un écrit un message bah c'est son message qui se fera supprimer et non celui du bot
oui j'ai bien vue mais j'ai regarder le code de snox et pas le tien désoler
Bah ses sa que le code qui a la fait
Ok
Hein??
Non je réagissais au message de saduke
bonsoir !
j'ai un petit problème dans mon code j'ai beau me renseigner jusqu'ici je n'est malheureuseument pas trouver de solution , j'ai des images en css qui sont en opacity 0 et je veux les mettres à 1 quand je scroll vers l'élément j'ai des class qui porte le même nom exprès pour cela mais rien de fonctionne voici une petit parti de mon compte html et js
<section class="work" id="staff">
<div class="background">
<div class="heading">
<h2>Le staff</h2>
<h3>Notre équipe de modération.</h3>
</div>
<div class="content">
<h1>Gérants</h1>
<div class="gerent">
<div class="gleft">
<img src="./assets/Pfp/darkou.png" class="t" id="improve" />
<h4 class="t" id="improve">****</h4>
</div>
<div class="gright">
<img src="/assets/Pfp/Nans.jpg" class="t" id="improve" />
<h4 class="t" id="improve">***</h4>
</div>
</div>
</div>
<div class="workBx">
<h1>Résponsable Staff</h1>
<img src="/assets/Pfp/mao.png" class="t" id="improve" />
<h4 class="t" id="improve">***</h4>
</div>
<div class="workBx">
<h1>Administrateur</h1>
<img src="/assets/Pfp/davy.png" class="t" id="improve" />
<h4 class="t" id="improve">*****</h4>
</div>
et voici mon code en js
let lastScroll = 0;
const timg = document.querySelectorAll(".t");
window.addEventListener("scroll", () => {
var nav = document.querySelector("nav");
nav.classList.toggle("sticky", window.scrollY > 0);
let srrollValue =
(window.scrollY + window.innerHeight) / document.body.offsetHeight;
timg.css.opacity = 0;
});
function toggleMenu() {
var menuToggle = document.querySelector(".toggle");
var menu = document.querySelector(".menu");
menuToggle.classList.toggle("active");
menu.classList.toggle("active");
}
vous pouvez me mp si vous le souhaitez
merci de votre aide par avance 🙂
Envois ici sinon
Salut j'ai un léger soucis quand la page change cela met aussi celui de l'autre page ce que je ne comprends pas vraiment j'aimerais de l'aide.
Voici le screen des 2 case :
case "Antiraid":
embed.setTitle(':blurplecertifiedmoderator: ・Antiraid')
embed.setDescription(`*Les paramètres entre **\`<...>\`** sont obligatoire, alors que les paramètres entre **\`[...]\`** eux sont facultatifs* elles, sont facultatifs`)
embed.addField(`\`${prefix}antiraid\``, "Permet de gérer les modules d'antiraid sur le serveur\n\n:7866blurplemessenger: **Vous devez mettre le rôles du bot supérieur a tout les rôles pour qu'il puisse fonctionner correctement, nous vous conseillons d'ajouter uniquement des membres de confiance en `whitelist` pour éviter les potentiel raid.**")
embed.setImage("https://media.discordapp.net/attachments/1026194591759745084/1050169790276304967/Capture_decran_2022-12-07_225936.png")
m.edit(embed)
break
Deuxième case :
case "Premium":
embed.setColor(color)
embed.setTitle("L'aventure continue...")
embed.setImage()
embed.setDescription("Ce que vous avez vu n'est que le début d'une grand aventure en mer")
m.edit(embed)
break
voila en gros les page s'entremêle cela fou un bordel monstre a la page de help j'aimerais du coup de l'aide
Premièrement, cela fait un moment que les message.edit(embed) sont fini.
- <Message>(embed)
+ <Message>({ embeds : [embed] })
Après, je vois un setImage() mais sans lien 😐
le lien il passe en wifi 😉
Mais la source du problème, c'est qu'il manque tout ton code 😂
Puis après, on ne sait pas si c'est une interaction, une commande, un collector rien. Donc si j'ai rien je peux rien pour toi 
J'avais une petite question, savez-vous comment obtenir la value des nouveaux RoleSelectMenu, ChannelSelectMenu & UserSelectMenu ? Puisque, je ne trouve rien sur la documentation qui est faite un peu à la sauvage (Comme d'hab j'ai envie de dire).
Je tente de modifier les permissions d'un salon après l'avoir sélectionné via un ChannelSelectMenuBuilder mais ça ne fonctionne pas. Je vous remercie d'avance de votre aide 😄
https://discord.js.org/#/docs/discord.js/main/class/RoleSelectMenuInteraction?scrollTo=roles
https://discord.js.org/#/docs/discord.js/main/class/ChannelSelectMenuInteraction?scrollTo=channels
je ne sais pas si c'est ca que tu recherches, mais ca renvoie les roles et salons séléctionnés (selon le site)
Je te remercie ! Je check ça demain 👌
Rien ne renvoie à permissionOverwrites pour modifier après 😅
Une galère cette doc
faite un peu à la sauvage (Comme d'hab j'ai envie de dire).
Ce n'est pas la documentation le problème, c'est la lib, la doc c'est juste du texte explicatif des features de la lib, le typage est assez clair, tout comme la description, mais quand la lib est mal structurée, c'est compliqué, et ils s'en rendent compte trop tard, ce qui mène à du gros refactor comme à chaque nouvelles versions, ce qui rend la lib mal maintenable dans le temps :(
Là ce n'est pas la doc le problème, tu es essayé de voir ce que retournais le .channels ?
Ouais, c'est bien ça le problème :/
Car il peut renvoyer une collection de Channels, tout comme un json tout juste renvoyé par l'api 👀
Oui, mais impossible de modifier les permissions du salon ?
alors pourquoi continus-tu encore à l'utiliser si c'est autant galère ?
et il te renvoie quoi ducoup ?
Tu veux que j'utilise quoi ? 
Je n'ai pas pu essayer mais sur la doc avec le .channels on ne peut pas edit les permissions d'un salon donc, je ne sais pas vraiment comme faire 
Il y à quelques mois, en javascript c'était assez limité, car la seule lib +/- valable était eris avec une release tous les 7 mois, mais maintenant, il y à de nouvelles comme oceanic qui est un rewrite d'eris maintenu, et maintenable, et qui réponds à toutes les problématiques de discord.js
Si jamais tu veux un magnifique outil pour comparer les libs en fonction de leurs langages: https://libs.advaith.io
Ce qui est normal, vu qu'il ne te renvoie pas forcément un Channel
Il faut tester, debug, etc... lorsqu'on est pas certain de la documentation
Je vais me renseigner merci 👍
Et sinon, un client sur mesure pour le bot, mais ce n'est pas du tout interessant pour un bot privé, ou publique avec peu de serveurs
d'où l'intérêt des libs 🫠
Bref, bonne soirée 👋
Bonne soirée ! 😉
Si c'est possible @civic fractal
Hey! Comment ?
readdirSync("./commands/").forEach((dir) => {
^
ReferenceError: readdirSync is not defined
at Object.run (D:\02-CODING\discord-bot-the-first\SlashCommands\help\help.js:26:7)
at Client.<anonymous> (D:\02-CODING\discord-bot-the-first\events\interactionCreate.js:22:13)
at Client.emit (node:events:513:28)
at InteractionCreateAction.handle (D:\02-CODING\discord-bot-the-first\node_modules\discord.js\src\client\actions\InteractionCreate.js:66:12)
at module.exports [as INTERACTION_CREATE] (D:\02-CODING\discord-bot-the-first\node_modules\discord.js\src\client\websocket\handlers\INTERACTION_CREATE.js:4:36)
at WebSocketManager.handlePacket (D:\02-CODING\discord-bot-the-first\node_modules\discord.js\src\client\websocket\WebSocketManager.js:350:31)
at WebSocketShard.onPacket (D:\02-CODING\discord-bot-the-first\node_modules\discord.js\src\client\websocket\WebSocketShard.js:443:22)
at WebSocketShard.onMessage (D:\02-CODING\discord-bot-the-first\node_modules\discord.js\src\client\websocket\WebSocketShard.js:300:10)
at WebSocket.onMessage (D:\02-CODING\discord-bot-the-first\node_modules\ws\lib\event-target.js:199:18)
at WebSocket.emit (node:events:513:28)
Node.js v18.12.1
Hello, j'ai des petit soucis avec la création d'un bot discord :/
ajoute import {readdirSync} from 'fs' en haut du fichier
ou remplace readdirSync par fs.readdirSync et tu met const fs = require('fs'); tout en haut également
const fs = require('fs');
^
SyntaxError: Identifier 'fs' has already been declared
at Object.compileFunction (node:vm:360:18)
at wrapSafe (node:internal/modules/cjs/loader:1088:15)
at Module._compile (node:internal/modules/cjs/loader:1123:27)
at Module._extensions..js (node:internal/modules/cjs/loader:1213:10)
at Module.load (node:internal/modules/cjs/loader:1037:32)
at Module._load (node:internal/modules/cjs/loader:878:12)
at Module.require (node:internal/modules/cjs/loader:1061:19)
at require (node:internal/modules/cjs/helpers:103:18)
at D:\02-CODING\01-DISCORD\discord-bot-the-first\handler\command.js:9:24
at Array.forEach (<anonymous>)
Node.js v18.12.1
Essaie 2
D:\02-CODING\01-DISCORD\discord-bot-the-first>npm start
> devbot@1.1.0 start
> node index.js
D:\02-CODING\01-DISCORD\discord-bot-the-first\SlashCommands\help\help.js:5
import { readdirSync } from "fs";
^^^^^^
SyntaxError: Cannot use import statement outside a module
at Object.compileFunction (node:vm:360:18)
at wrapSafe (node:internal/modules/cjs/loader:1088:15)
at Module._compile (node:internal/modules/cjs/loader:1123:27)
at Module._extensions..js (node:internal/modules/cjs/loader:1213:10)
at Module.load (node:internal/modules/cjs/loader:1037:32)
at Module._load (node:internal/modules/cjs/loader:878:12)
at Module.require (node:internal/modules/cjs/loader:1061:19)
at require (node:internal/modules/cjs/helpers:103:18)
at D:\02-CODING\01-DISCORD\discord-bot-the-first\handler\command.js:9:24
at Array.forEach (<anonymous>)
Node.js v18.12.1
je n'ai pas reusi 😦
si ça te fait ça, c'est que tu as déjà la ligne fs = require... en haut de ton fichier
si oui remplace juste readdirSync par fs.readdirSync
j'ai un deuxième soucis
voici ce que je veux faire
const { Client, Intents, Collection } = require('discord.js');
const { token } = require('./config.json');
const fs = require('fs');
const client = new Client({ intents: [Intents.FLAGS.GUILDS] });
client.once('ready', () => {
console.log('Ready!');
});
client.on('interactionCreate', async interaction => {
if (!interaction.isCommand()) return;
const { commandName } = interaction;
if (commandName === 'ping') {
await interaction.reply('Pongaaaaa!');
} else if (commandName === 'server') {
await interaction.reply(`Server name: ${interaction.guild.name}\nTotal members: ${interaction.guild.memberCount}`);
} else if (commandName === 'user') {
await interaction.reply('User info.');
}
});
client.login(token);
Voici ce que j'ai, cependant le /server ne marche pas du tout
j'ai vu que nous pouvons passer par des fichiers pour faire les slash commands pour organiser et faire propre. Cepent j'ai beaucoup de difficulté à appeler mon ./commands (là c'est dans mon index.js)
sachant que j'ai suivi ce tuto : https://v13.discordjs.guide/creating-your-bot/creating-commands.html#command-deployment-script
ton bot a les permissions ?
je parle des permissions intents
le /ping marche
en vrai jsp
non
Bonjours, j'essaye de faire un role reaction avec un select menu sauf que lorseque je fait la commande, rien ne se passe et le bot ne répond pas. Pouez vous m'aider svp
const Discord = require("discord.js")
module.exports = {
name: "reactionrole",
description: "Envoie le reaction role",
permission: Discord.PermissionFlagsBits.ManageGuild,
dm: false,
category: "Administration",
options: [],
async run(bot, message, args, db) {
db.query(`SELECT * FROM server WHERE guild = '${message.guildId}'`, async (err, req) => {
let roles = req[0].reactionrole.split(" ")
if(roles.length <= 0) return message.reeply("Pas de rôle")
let options = [];
for(let i = 0; i < roles.length; i++) {
let role = message.guild.roles.cache.get(roles[i])
if(!role) return;
await options.push({label: `@${role.name}`, value: role.id})
}
console.log(options)
let Embed = new Discord.EmbedBuilder()
.setColor(bot.color)
.setTitle("Reaction Role")
.setThumbnail(bot.user.displayAvatarURL({dynamic: true}))
.setDescription("Réagir avec les réactions pour obtenir un rôle !")
.setTimestamp()
.setFooter({text: bot.user.username, iconURL: bot.user.displayAvatarURL({dynamic: true})})
const menu = new Discord.ActionRowBuilder().addComponents(new Discord.SelectMenuBuilder()
.setCustomId("reactionrole")
.setMinValues(0)
.setMaxValues(roles.length)
.setPlaceholder("Selectionnez vos rôles")
.addOptions(options))
await message.reply({embeds: [Embed], components: [menu]})
})
}
}```
je pense que sa vient de la boucle mais j'arrive pas a savoir où
est ce que vous savez comment je peut retirer les premiers guillemets?
Tu peux faire
<Array>.shift();
ça supprime la première case c'est que tu voulais nan ?
ba le truc apres c que c'est un role reaction dcp si j'ajoute d'autres roles sa ne fonctionnera plus
att
Parce que ça te le mets comment ton array avec plusieurs rôles ?
De rien.
j'aurai ptet encore besoin d'aide
en gros quand je retire un role sa me met un autre string sans rien dedans
Ouais.
Tu peux faire
<Array>.pop();
mrc
mais le prblm dcp c que sa va retirer le role si y'en a un
ya pas moyen de trier ce qu'on veut retirer?
genre un <array>.jsp('')
Bah tu peux en mode tu vérifies par case si c'est un rôle ou pas.
comment?
<Array>.filter(item => item !== '')
mercii
sa marche pas😅
<Array>.filter ne modifie pas le tableau, il en créé un nouveau en y appliquant le filtre
dcp je doit crer une nouvelle variable?
Soit en créer un nouveau soit réasigner le premier tableau
je crois que je vais en crer un nouveau mdr
Par exemple js let roles = ['', '1234...', ''] roles = roles.filter(role => role !== '')
pour ?
mhhh
Bonjour je suis a la recherche d'une personne qui peut me faire un bot discord avec 2 fonctionnalité pas très compliquer me mp pour avoir plus de detail et prix bien sur j'hébergerez le bot
Tu recherches ou tu es un développeur, graphiste, modélisateur, ou tout autre créateur de contenu ?
Tu es au bon endroit ! Tu peux désormais poster une annonce ou même proposer tes services très facilement !
Qu'attends-tu ? Rejoins-nous dès maintenant !
Salut les gars, j'aimerais bien savoir est-ce important de travailler avec "async" & "await" ? C'est une sécurité en plus?
Ça n'apporte pas de sécurité en plus, juste de la lisibilité
Il me semble que certain truc, sans async c'est impossible de le faire
C'est plus facile à lire et maintenir du code avec les promesses que du code avec des callbacks hell
Non tout est possible à faire sans promesse c'est juste compliqué
Ca me rapelle moi avant les callbacks hell 🤣
mais du coup cela évite les callback ou pas du tout ?
seulement pour les promises
Bonjour, comment je fais pour que mes commandes (+help par exmple) ce transforme en commande slash ?
Integrate your service with Discord — whether it's a bot or a game or whatever your wildest imagination can come up with.
les commandes +help c'est juste de la verification du contenue de messages, les applications commands (/) c'est pas pareil.
quelqu’un sait pourquoi il me rend fou avec ES Module?
J’ai import un « config.json » pour mon token mais il est pas content
Avec plus d'info c'est encore mieux, je crois que personne ici n'est extralucide
ta bien mis assert { type: 'json' }; ?
si tes en ESM
ou c'est un probleme de warning ?
ou ta utilisé la methode import venant de l'ESM en type commonjs ?
oui je l’avais mis mais l’erreur persiste et non pourtant je suis en « module » comme type
attend montre l'erreur
C'est chouette, je me dis "ouais je vais faire un réaction rôle" puis je me dis "ouais les boutons discord c'est trop cool" puis "bon allez je le fait pour test que pour mes notifs youtube et twitch.." et puis finnallement je l'ai fait pour tous mes rôles xD (et mon salon rules)
hey, j'aimerais faire un "middleware" en ts. Je n'utilise pas de lib n'y de framework et ce n'est pas pour faire une API, j'ai juste crée une function qui return un boolean et j'ai envie que l'orsque j'appelle une fonction et que je le renseigne comme paramètre, il s'execute que s'il est === true ```ts
function middleware (): boolean {
return false // c'est un exemple biensur
}
// ce que j'ai
function a () {
if(middleware()) return console.log("execute only if true")
}
// ce que je souhaite
function a (middleware) {
return console.log("execute only if true")
}
Merci !
function middleware(): boolean {
return false // c'est un exemple biensur
};
// ce que je souhaite
function a (middleware) {
if(middleware === true) return console.log("execute only if true")
};
a(middleware());
simplement
si je ne me trompe pas, je suis obliger de le call comme sa ```ts
a(middleware, otherEntry)
montre moi un exemple
function checkAuth(req, res, next) {
if(req.body.token) {
return next();
}
res.send('auth failed');
}
router.get('/protected', checkAuth, function(req, res) {
res.send('protected route');
});
apres la c'est avec express
j'ai oublier de delete le if ^^'
Oh grand @hazy mirage je crois que ce probleme est pour toi ! 😄
je pourrais faire ceci ```ts
class middleware {
constructor (mw: Function, next: Function) {
if(mw()) {
next()
} else {
console.error('middleware error')
}
}
}
function mw () {
return false
}
const save_cloud = () => new middleware(mw, () => {
console.log('success')
})
re
function middleware(mw: Function, next: Function) {
if(mw()) return next();
console.error('middleware error');
};
function mw() {
return false;
};
function save_cloud() {
middleware(mw, () => {
return console.log('succes');
});
};
simplement
ho bien vu 😭 . apres c'est pas aussi propre que ce que j'aurais voulu mais c'est toujours mieux que mon vieux pater
. avec checkAuth
mais sa demanderais de faire une class 🤔
j'utilise jamais express t'aurais pas un autre exemple ou tu pourrais me l'expliquer par ecrit
en gros je voudrais juste pouvoir mettre une fonction comme condition dans mes fonction. en cas pratique je vais avoir 80 fonction qui aurons comme condition que je sois login. ducoup j'ai une fonction pour detecter cela qui me retourne un boolean et j'aimerais le mettre sur mes 80 function. mais pour eviter d'ecrire cela ```ts
function a () {
if(middleware()) return console.log("execute only if true")
};
c'est vraiment dur a expliquer mdr
mais non j'ai pas d'autre exemple
ah du genre ta une fonction qui a telle action
et tu dois verifier si la personne est login par exemple avec une autre fonction
c'est bien ça ?
ca ? oui mais s'il faut que je le répète sur 80 fonction c'est pas tres propre et pour changer le code si j'ai envie de le faire un jour ... pas tres scalable
non je veux faire a() et automatiquement sa call mw()
Pourquoi pas directement le call dans a() ducoup ?
c'est pas possible là
car je ne trouve pas sa propre (obliger de faire un if puis de return) je prefere le systeme de express
sinon tu fais ça
function mw(func) {
if (true)
func();
}
function a() {
console.log("A call");
}
mw(a);```
Mais je vois pas d'autres moyens que ceux qui ont étés écrit au dessus
la solution que je veux c'est vraiment elle ```ts
function checkAuth(req, res, next) {
if(req.body.token) {
return next();
}
res.send('auth failed');
}
router.get('/protected', checkAuth, function(req, res) {
res.send('protected route');
});
mais je vais y arriver 
il faut juste que je comprenne juste comme le faire et proprement
tu ne connais pas express mais engros c'est pour faire une requete API et quand tu la fait sa passe par la function checkAuth
function verif(func) {
if(ok) {
return func();
} else {
console.log('erreur');
}
};
function a(checkAuth, func) {
return checkAuth(func);
};
a(verif(), function() {
console.log('test');
}
};
pas con
je vais essayer de l'integrer et voir si c'est propre mais sa me parait bcp mieux que de faire une class pour rien 
function checkAuth(func) {
if(ok) {
return func();
} else {
console.log('erreur');
}
};
function a(check, callback) {
return check(callback);
};
a(checkAuth, function() {
console.log('test');
}
);
tiens
c'est ça non ?
normalement oui
j'ai corrigé les bugs dans lui
Bonjour, je voudrais faire un estereggs sur ma cmd help, le problème c'est que je sais pas si le code et bon et je sais pas qu'elle donnée je pourrais mettre pour tester.
si vous pouvez m'aider ou me donner des conseil je suis preneur ! merci !
https://i.imgur.com/Uw2Nv11.png
bah mets 3 au lieu de 101, et tu mets 1 au lieu de 42, tu test et tu check, mais ton code est good à première vue
Salut, j'ai un soucis, j'ai un système de antiban sauf qu'il fonctionne pas du tout j'aimerais de l'aide et qu'on m'éclaircie :
const axios = require('axios');
const db = require("quick.db")
const { MessageEmbed } = require("discord.js");
const ms = require("ms")
module.exports = async (client, member) => {
const guild = member.guild
const color = db.get(`color_${guild.id}`) === null? client.config.color:db.get(`color_${guild.id}`)
const raidlog = guild.channels.cache.get(db.get(`${guild.id}.raidlog`))
const action = await guild.fetchAuditLogs({ limit: 1, type: "MEMBER_BAN_ADD" }).then(async (audit) => audit.entries.first());
if (action.executor.id === client.user.id) return;
if ( action.executor.id) {
let perm = ""
if (db.get(`massbanwl_${guild.id}`) === null) perm = client.user.id === action.executor.id || guild.owner.id === action.executor.id || client.config.owner.includes(action.executor.id) || db.get(`ownermd_${client.user.id}_${action.executor.id}`) === true || db.get(`wlmd_${guild.id}_${action.executor.id}`) === true
if (db.get(`massbanwl_${guild.id}`) === true) perm = client.user.id === action.executor.id || guild.owner.id === action.executor.id || client.config.owner.includes(action.executor.id) || db.get(`ownermd_${client.user.id}_${action.executor.id}`) === true
if (db.get(`massban_${guild.id}`) === true && !perm) {
if (db.get(`massbansanction_${guild.id}`) === "ban") {
guild.members.cache.get(action.executor.id).ban(`Antiban`).then(te => {
if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a ban ${member}, il a été **ban** !`))
}).catch(() => {
if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a ban ${member}, mais il n'a pas pu être **ban** !`))
})
} else if (db.get(`massbansanction_${guild.id}`) === "kick") {
guild.members.cache.get(action.executor.id).kick().then(() => {
if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a ban ${member}, il a été **kick** !`))
}).catch(() => {
if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a ban ${member}, mais il n'a pas pu être **kick** !`))
})
} else if (db.get(`massbansanction_${guild.id}`) === "derank") {
guild.members.cache.get(action.executor.id).roles.set([]).then(() => {
if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a ban ${member}, il a été **derank** !`))
}).catch(() => {
if (raidlog) return raidlog.send(new MessageEmbed().setColor(color).setDescription(`<@${action.executor.id}> a ban ${member}, mais il n'a pas pu être **derank** !`))
})
}
guild.members.unban(user, `Antiban`)
}
}
};
D'accord, merci beaucoup !
Salut les gars, du coup si je comprend bien les promesses sont utiles pour éviter la répétitions de callback?
C'est ça
Salut, pourquoi tu « npm i » au lieu de « npm install vue » ? Et juste histoire tu a réinstaller node comme il faut tu a pas eu de problème?
C’est bizzare, une question bête tu a bien « npm init » ton projet puis ensuite « npm install vue »
Oh toi ici
le fichier package.json existe déjà donc pas besoin d'init le projet
Je pense que c'est un problème dans l'installation de node
parce que j'avais eu un problème avec node sass aussi, je l'avais installé et après plus rien ne fonctionnait, et même en réinstallant node, donc j'avais fini par reset mon pc
Envois moi ton package.json
Salut, je suis entrain de faire un bot pour mettre des articles d'un journal RP, je cherche a trouver l'id d'un message envoyer par le bot pour le stocker dans la db comment faire ? (Débutant)
const { ChannelType, PermissionsBitField, EmbedBuilder, ActionRow, ActionRowBuilder, SelectMenuBuilder, ButtonBuilder, ButtonStyle } = require("discord.js")
const discordTranscripts = require('discord-html-transcripts');
module.exports = {
name: 'interactionCreate',
async execute(interaction, client) {
if (!interaction.isModalSubmit()) return;
if (interaction.customId === 'testart') {
const epxe = interaction.fields.getTextInputValue('test1')
const motiva = interaction.fields.getTextInputValue('test2')
const recrut = new EmbedBuilder()
.setColor("#2f3136")
.setTitle(`Nouveau article !`)
.setDescription(`Titre : **${epxe}**. \n Cliquez sur le boutton pour lire l'article.`)
.setTimestamp()
.setFooter(client.config.footer);
const row = new ActionRowBuilder()
.addComponents(
new ButtonBuilder()
.setCustomId('lireart')
.setLabel("Lire l'article")
.setStyle(ButtonStyle.Success),
);
interaction.message.id
client.db.set(`test_1`, epxe)
interaction.reply({embeds:[recrut], components: [row]})
}}}
De mémoire tu ne peux pas récupérer l'id du message car c'est une réponse a une interaction.
Y-a-t'il quelqu'un qui s'y connaît en react native ?
oui
je comprend pas discord js 😭 sa marche pas
const { Client, Events, GatewayIntentBits } = require('discord.js');
const { token } = require('./config.json');
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
client.once(Events.ClientReady, () => {
console.log(' -> BOT Ready !');
});
client.on(Events.MessageCreate, message => {
if (message.content === 'ping') {
message.reply('Pong.');
}
});
const { SlashCommandBuilder } = require('discord.js');
module.exports = {
data: new SlashCommandBuilder()
.setName('ping')
.setDescription('Replies with Pong!'),
async execute(interaction) {
await interaction.reply('Pong!');
},
};
client.login(token);
c'est quoi le soucis ?
justement je sais pas
mon config.json est good (token, clientid, guilid)
et tu veux faire quoi ?
juste qu'il dise pong quand je dit (/)ping
client.on("messageCreate", message => {
if (message.content === 'ping') {
message.reply('Pong.');
}
});
et pour les slash il te faut un event listener
interactionCreate
il y est déja et sa fonctionne pas
tu as essaye de juste ecrire ping ?
ui
liste d'intents : GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildPresences, GatewayIntentBits.GuildMessageReactions, GatewayIntentBits.DirectMessages, GatewayIntentBits.MessageContent, GatewayIntentBits.GuildVoiceStates
❔
const client = new Client({ intents: [GatewayIntentBits.Guilds,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.GuildPresences,
GatewayIntentBits.GuildMessageReactions,
GatewayIntentBits.DirectMessages,
GatewayIntentBits.MessageContent,
GatewayIntentBits.GuildVoiceStates] });```
oui, mais je fait quoi avec ?
tu remplaces a la place du tiens
ligne 4
et dans ton portail developer c'est bien comme ca ?
ui
yes
@floral bolt parcontre /ping ne fonctionne toujour pas
normal interaction c'est un event
interactionCreate
client.on("interactionCreate", interaction => {
console.log(interaction)
});```
Salut, je suis entrain de faire un bot pour mettre des articles d'un journal RP, je cherche a trouver l'id d'un message envoyer par le bot pour le stocker dans la db comment faire ? (Débutant)
const { ChannelType, PermissionsBitField, EmbedBuilder, ActionRow, ActionRowBuilder, SelectMenuBuilder, ButtonBuilder, ButtonStyle } = require("discord.js")
const discordTranscripts = require('discord-html-transcripts');
module.exports = {
name: 'interactionCreate',
async execute(interaction, client) {
if (!interaction.isModalSubmit()) return;
if (interaction.customId === 'testart') {
function makeid(length) {
var result = '';
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
var charactersLength = characters.length;
for ( var i = 0; i < length; i++ ) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
}
return result;
}
const epxe = interaction.fields.getTextInputValue('test1')
const motiva = interaction.fields.getTextInputValue('test2')
const recrut = new EmbedBuilder()
.setColor("#2f3136")
.setTitle(`Nouveau article !`)
.setDescription(`Titre : **${epxe}**. \n Cliquez sur le boutton pour lire l'article.`)
.setTimestamp()
.setFooter(client.config.footer);
const row = new ActionRowBuilder()
.addComponents(
new ButtonBuilder()
.setCustomId('lireart')
.setLabel("Lire l'article")
.setStyle(ButtonStyle.Success),
);
// interaction.message.id
client.db.set(`test_1`, epxe)
const channel = client.channels.cache.get('1041413309196419122');
channel.send({embeds:[recrut], components: [row]})};
interaction.reply({ content: "Article envoyé avec succès!", ephemeral: true })
// interaction.reply({embeds:[recrut], components: [row]})}
}}
ya une erreur la channel.send({embeds:[recrut], components: [row]})};
c'est channel.send({embeds:[recrut], components: [row]});
Ah ok
ensuite tu peux faire un .then((msg) => { console.log(msg)})
ca te sers a quoi la fonction makeid ?
En gros je vais stocker l'article avec l'id du message quand tu appui sur le boutton sa vérifie l'id du message et t'envoi l'article correspodant
oui mais cette fonction ?
ah c'est d'un ancien système de réception web de ticket sa na rien a voir
ok, mais si jamais tu crées des fonctions sors les de ton module.export
tu peux soit utiliser fs ou une database genre mongo (c'est le plus utilisé pour les bots discord)
j'utilise quick db
je voulait lui dire pour qu'il récupère juste l'id du message je doit faire msg.id
ah ca je te laisse chercher un peu
Bonsoir,
J'ai un soucis actuellement avec mon siteweb, je suis sous next.js et le site est hébergé sur Cpanel mais lorsque je deploy la new version de mon site j'ai toujours l'ancienne version sur google chrome , edge , safari mais lorsque je vais sur un le navigateur Opera j'ai bien la nouvelle version, j'ai bien vidé le cache sur google etc mais je comprend pas d'ou cela vient.
Merci 🙂
Yo, tu utilise cloudflare ?
Si c'est le cas cherche pas plus loin il faut vider le cache de cloudflare ou passer en mode dev
Bonjours, je suis en train de faire une commande de role reaction. J'utilise pour cela une db et met des espaces entres chaques id de roles. Sauf que lorsequ'il n'y as aucun roles, cela me renvoie un tableau avec un string vide (cf photo), cela me dérange car lorseque je n'ai aucun role d'inscrit dans la db, c'est sense me return et envoyer un msg sauf que dcp ca ne le fait pas
pouvez vou m'aider svp
let roles = req[0].reactionrole.split(' ')
console.log(roles)
if(roles.length <= 0 /*|| roles.length <= 1*/) return message.reply("Pas de rôle")
let options = [];
for(let i = 0; i < roles.length; i++) {
let role = message.guild.roles.cache.get(roles[i])
if(!role) return;
await options.push({label: `@${role.name}`, value: role.id})
```
la partie du code qui gère sa
if(roles.length <= 0 || roles == null)
sa ne change rien
Salut, j'ai un système d'invite qui fonctionne cependant j'aimerais faire en sorte que quand un membres rejoins avec un liens vanity cela le précise et l'affiche (je n'arrive pas a le faire et j'ai essayer de trouver des solution mais j'ai pas réussis)
Voici le code que j'ai actuellement :
client.on("guildMemberAdd", async member => {
let joinchannelmessage = db.get(`joinchannelmessage_${member.guild.id}`);
if (!joinchannelmessage === null) {
return console.log(`Aucun JoinChannelMessage`);
}
let joinmessage = db.get(`joinchannelmessage_${member.guild.id}`);
if (joinmessage === null) joinmessage = defaultjoinmessage;
const catchedInvites = guildInvites.get(member.guild.id);
const newInvites = await member.guild.fetchInvites();
guildInvites.set(member.guild.id, newInvites);
try {
const usedInvite = newInvites.find(
inv => catchedInvites.get(inv.code).uses < inv.uses
);
db.add(`invites_${member.guild.id}_${usedInvite.inviter.id}`, 1);
db.set(`inviter_${member.id}`, usedInvite.inviter.id);
let inv = db.fetch(`invites_${member.guild.id}_${usedInvite.inviter.id}`);
//let jointimes = db.get(`jointimes_${member.guild.id}_${member.author.id}`)
//if(jointimes === null) jointimes = "First Time";
let joinmessage2 = defaultjoinmessage
.toLowerCase()
.replace("{user}", member.user.tag)
.replace("{user}", member.user.tag)
.replace("{user}", member.user.tag)
.replace("{user}", member.user.tag)
.replace("{user}", member.user.tag)
.replace("{user}", member.user.tag)
.replace("{user}", member.user.tag)
.replace("{inviter}", usedInvite.inviter.tag)
.replace("{inviter}", usedInvite.inviter.tag)
.replace("{inviter}", usedInvite.inviter.tag)
.replace("{inviter}", usedInvite.inviter.tag)
.replace("{inviter:name}", usedInvite.inviter.name)
.replace("{inviter:name}", usedInvite.inviter.name)
.replace("{inviter:name}", usedInvite.inviter.name)
.replace("{inviter:name}", usedInvite.inviter.name)
.replace("{invite}", inv)
.replace("{invite}", inv)
.replace("{invite}", inv)
.replace("{invite}", inv)
.replace("{invite}", inv)
.replace("{invite}", inv);
// .replace("{jointimes}", jointimes)
// .replace("{jointimes}", jointimes)
// .replace("{jointimes}", jointimes)
// .replace("{jointimes}", jointimes)
db.add(`jointimes_${member.guild.id}_${member.id}`, 1);
db.add(`Regular_${member.guild.id}_${usedInvite.inviter.id}`, 1);
client.channels.cache.get(joinchannelmessage).send(joinmessage2).then((msggg)=> {
if( db.get(`joinmsgdel_${member.guild.id}`) ) {
msggg.delete({timeout: ms( db.get(`joinmsgdel_${member.guild.id}`)) })
}
});
} catch (err) {
console.log(err);
}
})
Merci d'avance a ceux qui m'aideront !
if(roles.length === 1 && roles[0] === '')
Dans ton code si usedInvite n'a pas de valeur c'est surement qu'il est passé par le vanity
A voir si tu peux pas check avec précision le nombre d'utilisation du vanity aussi pour vérifier l'info
Justement quand quelqu'un rejoins avec le vanity cela n'affiche aucun messages
et quand la personne leave cela affiche qu'il sais pas comment l'utilisateur a rejoins
Pourtant des gens on joins avec le vanity
tu sais qu'a la place de ca : js .toLowerCase() .replace("{user}", member.user.tag) .replace("{user}", member.user.tag) .replace("{user}", member.user.tag) .replace("{user}", member.user.tag) .replace("{user}", member.user.tag) .replace("{user}", member.user.tag) .replace("{user}", member.user.tag) .replace("{inviter}", usedInvite.inviter.tag) .replace("{inviter}", usedInvite.inviter.tag) .replace("{inviter}", usedInvite.inviter.tag) .replace("{inviter}", usedInvite.inviter.tag) .replace("{inviter:name}", usedInvite.inviter.name) .replace("{inviter:name}", usedInvite.inviter.name) .replace("{inviter:name}", usedInvite.inviter.name) .replace("{inviter:name}", usedInvite.inviter.name) .replace("{invite}", inv) .replace("{invite}", inv) .replace("{invite}", inv) .replace("{invite}", inv) .replace("{invite}", inv) .replace("{invite}", inv); tu peux faire replaceALL ?
D'acc merci du conseil mais du coup pour ma demande tu pourrais m'aider ?
c'est quoi un lien vanity ?
et Zaros t'a repondu
Justement je lui est répondu
C'est un lien que t'a quand t'es level 3 par exemple /gca
ca te renvois quoi si tu log usedInvite.inviter ?
absolument rien
en dirait qu'il détecte pas quand le membres viens avec l'url perso
c'est comme l'a dit Zaros du coup
comment ça ? mais du coup j'aimerais faire en sorte que quand quelqu'un rejoins avec le vanity url il sois afficher si tu peux m'aider bien sûr
Du coup bah si il y a rien dans usedInvite c’est que c’est vanity
Oui est donc ce que j'ai demander c'est comment faire en sorte que cela sois afficher et que le message sois envoyer par exemple que ça envoie user a rejoins avec invites personnalisés tu capte ?
Alors tu fais une condition
genre if (usedInvite == null) { -- ton code } else { user a rejoins avec invites personnalisés}
fonctionne pas
montre le code que tu as fais
client.on("guildMemberAdd", async member => {
let joinchannelmessage = db.get(`joinchannelmessage_${member.guild.id}`);
if (!joinchannelmessage === null) {
return console.log(`Aucun JoinChannelMessage`);
}
let joinmessage = db.get(`joinchannelmessage_${member.guild.id}`);
if (joinmessage === null) joinmessage = defaultjoinmessage;
const catchedInvites = guildInvites.get(member.guild.id);
const newInvites = await member.guild.fetchInvites();
guildInvites.set(member.guild.id, newInvites);
try {
const usedInvite = newInvites.find(
inv => catchedInvites.get(inv.code).uses < inv.uses
);
if (usedInvite == null) {
db.add(`invites_${member.guild.id}_${usedInvite.inviter.id}`, 1);
db.set(`inviter_${member.id}`, usedInvite.inviter.id);
let inv = db.fetch(`invites_${member.guild.id}_${usedInvite.inviter.id}`);
//let jointimes = db.get(`jointimes_${member.guild.id}_${member.author.id}`)
//if(jointimes === null) jointimes = "First Time";
let joinmessage2 = defaultjoinmessage
.toLowerCase()
.replace("{user}", member.user.tag)
.replace("{user}", member.user.tag)
.replace("{user}", member.user.tag)
.replace("{user}", member.user.tag)
.replace("{user}", member.user.tag)
.replace("{user}", member.user.tag)
.replace("{user}", member.user.tag)
.replace("{inviter}", usedInvite.inviter.tag)
.replace("{inviter}", usedInvite.inviter.tag)
.replace("{inviter}", usedInvite.inviter.tag)
.replace("{inviter}", usedInvite.inviter.tag)
.replace("{inviter:name}", usedInvite.inviter.name)
.replace("{inviter:name}", usedInvite.inviter.name)
.replace("{inviter:name}", usedInvite.inviter.name)
.replace("{inviter:name}", usedInvite.inviter.name)
.replace("{invite}", inv)
.replace("{invite}", inv)
.replace("{invite}", inv)
.replace("{invite}", inv)
.replace("{invite}", inv)
.replace("{invite}", inv);
// .replace("{jointimes}", jointimes)
// .replace("{jointimes}", jointimes)
// .replace("{jointimes}", jointimes)
// .replace("{jointimes}", jointimes)
db.add(`jointimes_${member.guild.id}_${member.id}`, 1);
db.add(`Regular_${member.guild.id}_${usedInvite.inviter.id}`, 1);
client.channels.cache.get(joinchannelmessage).send(joinmessage2).then((msggg)=> {
if( db.get(`joinmsgdel_${member.guild.id}`) ) {
msggg.delete({timeout: ms( db.get(`joinmsgdel_${member.guild.id}`)) })
}
});
} else client.channels.cache.get(joinchannelmessage).send("test")
} catch (err) {
console.log(err);
}
})
mais tu n'as pas essayer ce que je t'es dis
comment ça ?
ba si j'ai fait ce que t'a dis
absolument rien
c'est comme si cela ne la détecter pas
ok alors deja tiens : js let joinmessage2 = defaultjoinmessage.toLowerCase() .replace(/{user}/g, member.user.tag) .replace(/{inviter}/g, usedInvite.inviter.tag) .replace(/{inviter:name}/g, usedInvite.inviter.name) .replace(/{invite}/g, inv);
et pour le vanity ?
const isEmpty = (value) => {
return (
value === undefined ||
value === null ||
(typeof value === "object" && Object.keys(value).length === 0) ||
(typeof value === "string" && value.trim().length === 0)
);
};
client.on("guildMemberAdd", async (member) => {
const newInvites = await member.guild.fetchInvites();
try {
const usedInvite = newInvites.find(
(inv) => catchedInvites.get(inv.code).uses < inv.uses
);
if (usedInvite && !isEmpty(usedInvite.inviter)) {
console.log("Non vanity");
} else {
console.log("Vanity");
}
} catch (err) {
console.log(err);
}
});
je met ça ?
j'ai corriger
Y'a une erreur (je crois qu'elle était déjà quand je viens avec vanity)
return (
value === undefined ||
value === null ||
(typeof value === "object" && Object.keys(value).length === 0) ||
(typeof value === "string" && value.trim().length === 0)
);
};
client.on("guildMemberAdd", async (member) => {
const newInvites = await member.guild.fetchInvites();
try {
const usedInvite = newInvites.find(
(inv) =>
!isEmpty(catchedInvites.get(inv.code)) &&
catchedInvites.get(inv.code).uses < inv.uses
);
if (usedInvite && !isEmpty(usedInvite)) {
console.log("Non vanity");
} else {
console.log("Vanity");
}
} catch (err) {
console.log(err);
}
});
rajoute const catchedInvites = guildInvites.get(member.guild.id); au dessus de newInvites
c fait mais toujours rien
Nn cbon
y'a écris vanity
j'ai fait un test avec un non vanity url et ça a afficher que cela ne l'était pas
voila ton code marche 🙂
Bonjour petit problème dans mon code node js pour upload une commande sur un fichier a part :
message_lecture.js```javascript
const {SlashCommandBuilder} = require("@discordjs/builders");
const {PermissionsBitField} = require('discord.js');
module.exports = {
data: new SlashCommandBuilder()
.setName('message_lecture')
.setDescription('Lecture d un message')
.addStringOption(option => option.setName('message').setDescription('Message à lire')),
async execute(interaction) {
if(!interaction.member.permissions.has(PermissionsBitField.FLAGS.ADMINISTRATOR)) {
return interaction.reply({ content: 'Vous n'avez pas les permissions nécessaires pour effectuer cette action.', ephemeral: true });
}
const message = interaction.options.getString('message');
await interaction.reply(message);
}
}
index.js
const LectureMessage = require('./message_lecture.js');```
La commande apparait pas
Est-ce qu'il y'a besoin d'un ? ```client.guilds.cache.get```
Et surprise depuis que j'ai rajouté ca j'ai aussi cette erreur
Bonjour, j'ai cette fonction dans une balise script :
function deleteLink (code) {
import {writeFile} from "fs";
fetch("./links.json").then(data => data.json()).then(res => {
const newLinks = res.filter(link => link.code !== code)
writeFile("./links.json", JSON.stringify(newLinks), () => {
alert("Lien supprimé avec succès !")
getLinks()
})
})
}
Est-ce que quelqu'un saurait pourquoi j'ai cette erreur ?
tu dois indiquer le type module dans l'appel de ton script dans ton fichier html
J'ai ça maintenant
