#javascript-typescript

1 messages · Page 9 of 1

glass cargo
#

Oui ou alors tu met data1 data2 data3 etc

bitter heron
#

et ici je laisse data tt seul ?

#

ou ca n'a rien a voir avec les constantes

glass cargo
#

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 :)

bitter heron
#

ah ok ptn

#

tu geres

#

Donc chaques nouvelles commandes, je dois refaire le client.on ... avec le bon nom de la variable ?

glass cargo
#

Non

#

C’est le client.guilds... que tu doit copier coller XD

#

Et tu le mets en dessous du précédent

bitter heron
#

ah ok mdrrr

#

bien vu

#

desoler hein

glass cargo
#

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 😉

bitter heron
#

Merci a toi en tt cas

leaden prism
#

const moment = require('moment.js')```

on est d'accord que c sense marcher?
bitter heron
#

C'est juste je viens de commencer je connais pas grand chose 🤣

bitter heron
leaden prism
#

il faut que tu ai un bot ou ta fait une commande slash dans les 24h

#

att je cherche le site

bitter heron
#

j'ai pas le badge

leaden prism
#

rempli le formulaire

bitter heron
#

Je mets quoi dans la deuxieme case ?

#

c bon tkt

#

Merci bg

wet kiln
#

yo quelqu'un serai comment m'aider à mettre à jour ma version nodejs en dernière version?

wet kiln
cyan iron
#

Tout est écrit dans le readme

#

La dernière version c'est la 19

wet kiln
# cyan iron 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

cyan iron
#

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

wet kiln
#

sa reste bloquer

cyan iron
#

Il faut attendre

wet kiln
#

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
cyan iron
#

" Close and reopen your terminal to start using nvm " Kappa

wet kiln
glass cargo
#

Ou npm install discord.js@latest

wet kiln
# glass cargo npm update
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
glass cargo
#

...

#

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 ^^

red torrent
#

npm list discord.js

#

Ou sinon npm info discord.js version

wet kiln
glass cargo
#

^^

clear geode
crimson zephyr
#

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

past nimbus
#

Le nouveau badge ?

crimson zephyr
dire latch
#

@crimson zephyrDe quel badge tu parles ?

crimson zephyr
dire latch
#

Du / sur ton bot ? @crimson zephyr

crimson zephyr
#

en gros j'ai besoin d'une /commande

#

pour avoir le badge

dire latch
#

Sa ? @crimson zephyr

crimson zephyr
dire latch
#

Connais pas

floral bolt
#

Et tu veux quoi ?

crimson zephyr
floral bolt
#

Le principe de ce badge c’est de savoir faire ce genre de commande justement non ?

crimson zephyr
bitter heron
keen nova
#

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.

copper pagoda
#

Salut, tu as du dépasser un nombre de requête.

past nimbus
wet kiln
#

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 ?

keen narwhal
ashen rapids
#

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 story on the Story table, which contains 108 non-null values. The data in that column will be cast from VarChar(4000) to VarChar(191).

last ether
#

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 !")
}
stark forge
#

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]})
    }}
plucky sage
#

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

floral bolt
floral bolt
floral bolt
wet kiln
floral bolt
copper pagoda
stark forge
#

Et j'ai mis deux message différent dans la description de mon embed

keen narwhal
wet kiln
#

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 ?

dire latch
#

@wet kiln on ta déjà répondu, il nous faut le code pour qu'on t'aide

keen narwhal
#

Bonjour, quelqu'un peut m'aider ?

wet kiln
# dire latch <@832527376503799819> on ta déjà répondu, il nous faut le code pour qu'on t'aide
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);
    }
};
keen narwhal
keen narwhal
glacial lily
#

node js fs et promise le mauvais melange

last ether
#

Je pense que ça peut venir que tu aies

wet kiln
#

le help marche pas

glacial lily
#

besoin d'aide la on a un truc c'est lunaire

keen narwhal
keen narwhal
stark forge
#

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]})
    }}
#

mais sinon le message de bienvenue fonctionne de base, c'est juste depuis que j'ai ajouté le rndmessage

copper pagoda
# stark forge ```js const EmbedMessage = new EmbedBuilder() .setTitle(`${member.guild.nam...

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]})
stark forge
# copper pagoda Fait plutôt un truc dans ce style. ```js const Description = [ "Descritpion...

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]})
copper pagoda
#

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)]
stark forge
#

ah att

#

merci car le message de bvn s'envoie mais sans la description aléatoire et sans le ping de la personne :

#

<@${member.user.id}> quand j'ajoute le member

copper pagoda
stark forge
dire latch
#

Tu ne peut pas avoir 2 description @stark forge

stark forge
#

Si

#

j'ai déjà vu ça sur un serveur

dire latch
#

Ba nan 🤔

stark forge
#

Pas deux description qui s'envoie en meme temps

#

ça change a chaque nouveau membre

dire latch
#

Ba faut modifier ta première description

#

Ou tu le remplaces par la dernière description

stark forge
#

mais je vais pas modifier mon code a chaque nouveau membre...

dire latch
#

?

#

Juste tu peut pas avoir 2 description, faut choisir entre les deux

stark forge
#

bizarre parce que j'ai déjà vu quelqu'un le faire

dire latch
#

Impossible

stark forge
#

Si

dire latch
#

Ba nan

stark forge
#

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

dire latch
#

Ba oui, c'est ta 2eme description

#

Mais tu peut pas en avoir 2

stark forge
#

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

dire latch
#

Faut enlever celui d'aux dessus

stark forge
dire latch
#

Ba pour avoir des messages aléatoire

stark forge
# dire latch Mais tu peut pas en avoir 2

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

copper pagoda
dire latch
#

@copper pagoda j'ai jamais dis le contraire

copper pagoda
#

Tu as dis impossible.

dire latch
#

@copper pagoda relis avant de dire des bêtises stp

#

@stark forge comme je le redis, faut enlever ta première description

copper pagoda
#

Waw t'es violent toi frérot.

dire latch
#

Où est la violence ?

#

C'est une réalité

stark forge
dire latch
#

Ba nan @stark forge

stark forge
dire latch
#

Fait comme j'ai dis et tu test

stark forge
#

dans le

const Description = [
        "Description 1",
        "Description 2"
    ]
``` j'enlève ``"Description 1",`` ?
dire latch
#

Je parle dans ton embed @stark forge

stark forge
#

dans mon embed, j'enlève "Description 1", ?

dire latch
#

Dans ton embed, tu as deux .setdescription

#

Faut enlever la première

stark forge
#

oui j'avais deux .setdescription et j'ai remplacer le deuxième par Description

#

stv je te montre mon code de mtn

dire latch
#

Yes

stark forge
#
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]})
dire latch
#

Justement, ton Description

#

Faut le mettre dans ton . setdescription

#

Celui en haut

stark forge
#

je le met dans le même ligne juste après le Bvn ?

dire latch
#

Oui

stark forge
# dire latch Oui

j'ai fait plusieurs essais et la deuxième descritpion ne s'est jamais envoyé aussi

dire latch
#

Met en plus, tu verras que sa changes bien

stark forge
#

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

dire latch
#

Mais pk tu met des, bvn etc

#

Faut tout mettre dans le premier `

stark forge
#

ah att

#

la, toutes les description s'envoient en même temps,..

dire latch
#

Oui

#

Screen voir

stark forge
dire latch
#

Oui faut enlever après

#

Et faut mettre ${}

#

Avec ta description dedans

stark forge
#

donc je met toutes mes descriptions dans des ${} ?

dire latch
#

Oui

#

Description[

#

Etc

stark forge
#

ça marche pas

dire latch
#

De ?

stark forge
# dire latch 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

dire latch
#

?

stark forge
#

je crois que c'est surtout a cause de <@${member.user.id}>

dire latch
#

Non

stark forge
#

Bah il y a que pour cette descritpion que je peux pas mettre les ${}

dire latch
#

Screen ce que tu as fais

stark forge
dire latch
#

Mais faut pas faire ça

#

C'est

.setDescription(`${Description[Math.floor(Math.random() * Description.length)]}`)
stark forge
#

tout ça j'enlève : ```js
Le membre : <@${member.user.id}>.\n \u200B \nViens de rejoindre le serveur., Bvn, test, Salut,

dire latch
#

Oui

stark forge
#

mais il y aura aucun message qui va s'envoyer ?

dire latch
#

Si

stark forge
#

Les messages automatiques de discord ?

dire latch
#

Non

#

Description 1 ou Description 2

stark forge
#

ah ok c'est ce qu'il y a en haut en faite

#

merci bcp !

dire latch
#

Oui

#

Np

plucky sage
#

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 ? )

sharp grail
bitter heron
#

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 ?

sharp grail
#

t'es optimiste ptet

#

après ça dépend si t'es familier avec la programmation en général

leaden prism
#

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

leaden prism
#
row.components[0].setDisabled(true)   ```
#

g fait sa mais sa marche pas

leaden prism
red torrent
#

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é

bitter heron
#

Juste aucune interaction

leaden prism
#
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

woven socket
#

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?

near saddle
#

tu connais un peu les event?

woven socket
prisma minnow
woven socket
#

Ah bah je suis pas un pro mais je connais les base ont va dire

meager cedar
#

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.

meager cedar
#

Pas mon pc actuellement

#

Mais je crois pouvoir le retrouver

cyan iron
#

Sinon tiens

meager cedar
#
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 ! ✅")
}```
cyan iron
meager cedar
#

Pk j'irai laabz

#

Là-bas

#

Pas mal, mrc

keen narwhal
#

vous savez ou je peut trouver un bon bot music ?

meager cedar
#

Probot

keen narwhal
#

sur github ?

meager cedar
#

En bot certifié

#

Ah, nan

#

Tu veux de l'open source ?

keen narwhal
#

oui

meager cedar
#

La, j'en ai aucune idée

#

Tu trouves ça ou l'ami @cyan iron ???

#

Les liens que tu m'as envoyé

cyan iron
meager cedar
#

Ça je sais

cyan iron
#

Fin t'as le lien quoi

#

Je comprends pas ta question

meager cedar
#

Mais tu vas direct sur le site et tu tapes slashcommznd ?

#

Ou tu tapes sur google

cyan iron
#

J'ai navigué sur le site avec les onglets à gauche

keen narwhal
#

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")  
    });
keen narwhal
#

Bonjour, je voudrais savoir si une personne peut m'aider à transformer une commande que j'ai en / commande merci d'avance ! (mentionner moi)

mellow parrot
#

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

mellow parrot
#

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 !`)
        }
    })

}```
mellow parrot
#

merci de votre éventuel aide !

meager cedar
#

Cherche dev JavaScript

past nimbus
mellow parrot
leaden prism
#

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) {}```
keen narwhal
#

Ton msg tu le recupere ou

leaden prism
# red torrent Il nous faut plus de code

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}
}```
leaden prism
# keen narwhal Ton msg tu le recupere ou
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"})]})```
glossy patrol
#

Personne n'aurait un template de bot discord.js pour pas repartir de 0 😅

visual sequoia
#

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!

Lightshot

Captured with Lightshot

sharp grail
#

qu'est ce qui ne fonctionne pas exacteùent

visual sequoia
#

Att jau

#

jai peut etre une idée

sharp grail
visual sequoia
sharp grail
#

aahx)

visual sequoia
# sharp grail aahx)

Effectivement c'était moi qui était débile ses jamais la machine qui fait l'erreur...

#

Merci bg

sharp grail
#

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)

visual sequoia
feral oyster
#

ça fait depuis 1 mois que je travail sur un generateur de mdp vous voullez le voir?

leaden prism
#

on est daccord qec pas sense faire sa?js await message.reply({embeds: [Embed2], ephemeral: true})

queen ocean
#

slash command, button, select, modal

leaden prism
#

ah okmrc

#

mais dcp pour mon sisteme de rank je peut pas lemettre en ephemeral?

sand venture
#

Si tu veux ephemeral

queen ocean
#

Par contre tu peux faire une commande genre /level pour check son niveau et là tu pourras répondre en ephemeral

sand venture
#

Mais sa énerve les gens

glossy patrol
#

Pourquoi ma commande kick ne marche pas ? ^^'

glass cargo
#

Si il n’y a pas d’erreur, t’as essayé de mettre un console.log() avant et après chaque action ?

night tendon
#

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:");
    }
}    
frozen depot
#

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.

keen narwhal
#

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

languid shadow
#

bonjour quelqun pour maider en js + json ?

#

voici mon erreur que je ne suis pas capable dexpliquer

#
        $('#locker-price').html(data.locker-token.usd)
red torrent
#

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

frozen depot
#

Bonjour je cherche à mettre à jour une valeurs fonction tiré d'un tableau google sheet mais je n'arrive pas

shut thistle
#

Bonjour à tous, J'ai un soucis en React je n'arrive pas à récupérer mon images depuis le fichier JSON

floral bolt
red torrent
# shut thistle Bonjour à tous, J'ai un soucis en React je n'arrive pas à récupérer mon images ...

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

blissful hemlock
#

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'
}

blissful hemlock
blissful hemlock
#

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é

keen narwhal
#
PS C:\Users\Squash\Desktop\EttyOfficial> npm tsc --init  
Unknown command: "tsc"```
#

Comment je peux régler ça ?

past nimbus
#

En installant tsc

untold shale
#

Bonjour je voudrais savoir comment je peux mettre plus de 5 boutons sur un embed

#

Car quand j'en met plus le bot crash

glass cargo
#

Un row peut contenir au Max 5 boutons ou 1 menu

#

Et je crois que c’est au maximum 5 row/message

untold shale
visual sequoia
#

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

floral bolt
#

Envois ton handler

visual sequoia
# floral bolt 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
        });
      }
    }
floral bolt
#

Fait ctrl + maj + f puis tape des trucs du genre admin ou permission ect

red torrent
visual sequoia
red torrent
feral oyster
#

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?

keen narwhal
#

Hello, avez vous des librairies js à me conseiller pour animer mon site web ? (j'utilise déjà scrollReavel)

misty parcel
#

hey @keen narwhal

keen narwhal
misty parcel
#

ah ok x) excuses moi

glass cargo
#

Salut, est-ce que quelqu'un saurait pourquoi j'ai cette erreur ?

tulip glade
#

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?

opal harness
#

👋 Hey,

Sauriez-vous quel api steam me permet de récupérer le nombre de joueur sur un serveur Gmod ?

acoustic smelt
#

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.

keen narwhal
acoustic smelt
keen narwhal
#

je ne sais pas comment te l'expliquer, mais tu peux aller chercher sur internet

#

ce sera plus claire que mes explications

acoustic smelt
#

Oki

feral oyster
grim current
#

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

autumn glacier
#

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

autumn glacier
#

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

visual sequoia
grim current
grim current
autumn glacier
#

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

autumn glacier
#

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;

grim current
grim current
#

J'ai pas réfléchi, quand j'ai fais ça, j'avais pas le temps

dire latch
#

@opal harnessModule gamedig

grim current
#

Après quasiment 2h

autumn glacier
grim current
#
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);
      }
    })();


}
grim current
autumn glacier
grim current
hazy blaze
#

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

floral bolt
#

Tu le fais avec quoi ton formulaire ?

hazy blaze
#

tu veux dire le langage ?

floral bolt
#

non le framework

hazy blaze
#

j'utilise pas de framework je suis qu'en première année de bts

floral bolt
#

pas de jquery rien ?

hazy blaze
#

je sais meme pas ce que c'est 😓

floral bolt
#

ok, envois ton code 😉

hazy blaze
#

je l'envoie où ?

#

ici ou en dm ?

floral bolt
#

ici

hazy blaze
#
<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 ?

floral bolt
#

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

#

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

hazy blaze
floral bolt
#

Ah

#

alors je peux taider 😉

#

wait a minute 🙂

hazy blaze
#

j'ai tout mon temps tkt

floral bolt
#
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 :

  1. Ajouter un ID a ton formulaire
  2. Ajouter une div vide sous t'es inputs
  3. Chercher comme un grand comment ajouter une class et un text sur une div avec du JS
hazy blaze
#

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

floral bolt
#

Le regex c'est ultra compliqué, j'ai beaucoup de mal du coup j'ai chercher sur internet pour le trouver

hazy blaze
#

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 👍

floral bolt
#

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

autumn glacier
# hazy blaze bah si c'est pour faire simplement un copié collé et rien comprendre du code je ...

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

hazy blaze
#

J'ai fait un truc basique mais oklm

grim current
autumn glacier
#

Bah elles se deploy quand tu met un serveur en particulier?

#

@past nimbus t'es pas d'accord avec un truc ?

past nimbus
#

Ta première phrase

keen narwhal
#

Bonjour, comment je peux faire que mon bouton soit cliquable si on est le jour x par exemple (comment un calendrier de l'avant) ?

autumn glacier
# past nimbus Ta première phrase

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é

past nimbus
#

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

autumn glacier
#

Perso je me débrouille mais la string du dessus je saurai pas te l'expliquer char par char

past nimbus
#

🤔

autumn glacier
#

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é

past nimbus
#

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"

keen narwhal
autumn glacier
#

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

past nimbus
#

Bon laisse tomber tu fais exprès de pas comprendre ^^

autumn glacier
#

Mdrrrr

#

Big argument

past nimbus
#

Big cerveau

autumn glacier
#

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

past nimbus
#

A aucun moment j'ai sous entendu ça

autumn glacier
# keen narwhal Ouais

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

autumn glacier
# past nimbus A aucun moment j'ai sous entendu ça

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é.

past nimbus
#

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

autumn glacier
#

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

past nimbus
#

Enfin voilà ^^

autumn glacier
#

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

past nimbus
#

A toi aussi

floral bolt
hazy blaze
#

Sauf que quand tu bloque bah...

normal lichen
#

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

whole plover
#

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

whole plover
icy oracle
#

Tu veux dire en vanilla ? Sans rien ? parce que là c'est des technos à jour et très utiles

open python
#

Si jamais j’en ai fait un en vanilla, il est pas très animé mais il est fonctionnel

whole plover
glacial lily
#

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

copper pagoda
#

Oui tu peux le mettre ici.

glacial lily
#
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
silent ice
#

quelqu’un pourrait m’aider à code un bot discord?

glacial lily
#
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

silent ice
#

Bonjour, quelqu’un serait disponible pour m’aider à code un bot discord en node.js?
Si intéressé contacter moi mp

untold shale
#

Bonjour je voulais savoir si c'etait comme ça pour mettre plusieurs components ?

({ embeds: [embed], components: [row] [test] });
past nimbus
silent ice
#

Bonjour,
Quelqu’un pourrait me fournir un code permettant de rajouter une commande dans les slash commands

untold shale
glass cargo
#

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 ?

desert riverBOT
glass cargo
#

😜

keen narwhal
#

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

glacial lily
#

impossible

hazy mirage
keen narwhal
#

discord-dashboard

#

et dbd-capriham-theme

hazy mirage
#

Et niveau code ça donne quoi?

keen narwhal
#
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: []
    })```
acoustic smelt
#

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

copper pagoda
acoustic smelt
#

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!`)
};

floral bolt
#

Donc si tu changes ça casses tous

copper pagoda
#

Perso ma ligne c'est après j'utilise pas fs.

#
const eventFiles = await globPromise(`${process.cwd()}/events/*/*.js`);
acoustic smelt
floral bolt
#

Mais normalement ça marche très bien

#

Bah je ne vois pas où est le problème ?

#

Tu peux ajouter des dossiers enfaîtes

acoustic smelt
#

Oe mais quand je le start il me dit qu'il y en as aucun

floral bolt
#

Ah bah ligne 63 tu fais events/**/

acoustic smelt
#
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
floral bolt
#

Attends

stiff jackal
#

Salut les gars, une question parmis tant d'autres, vous héberger votre bot chez qui?

floral bolt
#

Ne copie pas juste sinon ça marchera pas

acoustic smelt
#
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' ]
}
meager cedar
#

Bjr

#

Besoin d'aide pour Bot Discord

#

Indentifiez moi si vs êtes intéressé

#

/ajter moi en ami

dire latch
meager cedar
#

Nn c bon merci, vais faire avec mes connaissances en solo enft @dire latch

dire latch
#

Ok @meager cedar

night plank
#

Bonjour,
Quelqu'un aurait l’éventuel solution ou idée d'ou cela pourrait venir

floral bolt
#

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

floral bolt
#

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];

};```

keen narwhal
#

Salut j'ai un petit soucis !
Quand je fait ma commande !help cela m'affiche cette erreur :

keen narwhal
#

alors ?

floral bolt
keen narwhal
#

j'ai envoyer le code

floral bolt
#

${client.config.prefix} ligne 21 et ${config.prefix} ligne 16

#

c'est deja assigné dans ton run : run: async (client, message, args, prefix, color)

keen narwhal
floral bolt
#

bah je ne sais pas

#

essaye de changer ${config.prefix} par ${client.config.prefix}

keen narwhal
#

frr je règle comment le problème du coup ?

floral bolt
#

C'est ton code tu devrais savoir comment récupérer le prefix

#

essaye des trucs

keen narwhal
#

et j'ai essayer pas mal de chose sinon j'aurais pas demander de l'aide tu capte

floral bolt
#

essaye ca : js module.exports = { name: 'help', aliases: [], run: async (client, message, args) => { console.log(client.config.prefix) } }

floral bolt
#

j'ai changer

keen narwhal
floral bolt
#

tu reboot ton bot a chaque fois ?

keen narwhal
floral bolt
#

envois ton index.js

keen narwhal
#
/// 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();
floral bolt
#

envosi ton login .js

keen narwhal
#
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
}
keen narwhal
floral bolt
#

client.config = config

keen narwhal
floral bolt
#

met ca sous client.inter

keen narwhal
#

cependant quand je fait la cmd le préfixe apparait

floral bolt
#

c'est quoi ta nouvelle erreur ?

keen narwhal
#

y'a aucune erreur juste la cmd ce lance

#

pas

floral bolt
#

renvois moi ta commande stp

floral bolt
#

Le nouveau

#

enfin depuis que tu as update

keen narwhal
#

c le même

floral bolt
#

ligne 136 enleve if (!args[0])

keen narwhal
floral bolt
#

pas derreur rien ?

keen narwhal
#

rien

floral bolt
#

mets un console.log("test") pour voir si la commande ce lance

keen narwhal
#

y'a écris test

floral bolt
#

je reviens

keen narwhal
#

du coup ?

#

d'ailleur aucune de mes commande réagisse pas uniquement le help @floral bolt

pseudo flicker
#

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,
    ],
});```
floral bolt
#

enleve le client.config alors

floral bolt
meager cedar
#

@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

keen narwhal
grim current
#

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 ?
feral oyster
#

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 !")
}```
meager cedar
#

Tu fais avec des tutos toi nan ? @feral oyster

#

Ça ressemble au tutos de Mad Rage

feral oyster
#

oui une partie mais je comprend pas l'erreur @meager cedar

past nimbus
#

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..

feral oyster
#

j'ai que utiliser pour slash command car j'avais pas d'idée de comment faire

past nimbus
#

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

feral oyster
#

ok mrc

civic finch
#

Hey ! Comment on enlève les "labels" non utilisés avec ChartJS
Ou juste récupérer le dernier point

zinc jasper
#

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

past nimbus
#

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

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

#

avec les liens

past nimbus
#

La "véritable" doc c'est le deuxième lien

feral oyster
#

comment on set l'activité d'un bot?

pseudo flicker
#

voila après tu le change tu met ce que tu veut

floral bolt
#

Vers 15 heure

grim current
pseudo flicker
#

dr

grim current
#

Je précise : mon code est en djs v13

floral bolt
#

tui peux faire un truc comme ca : ```js
setTimeout(() => {
msg.delete()
collected.first().delete()
yx.delete()
}, 5000)

grim current
#

yx ne veut pas se delete dans le if

pseudo flicker
#

essaye d'utiliser un truc comme ça

visual sequoia
pseudo flicker
#

il y a un problème?

visual sequoia
pseudo flicker
#

mais d'accord

visual sequoia
grim current
#

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

pseudo flicker
visual sequoia
grim current
visual sequoia
keen narwhal
#

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 🙂

floral bolt
#

Envois ici sinon

keen narwhal
#

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

civic fractal
#

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 😐

plucky nymph
#

le lien il passe en wifi 😉

civic fractal
#

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 200iq

#

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 😄

civic fractal
#

Je te remercie ! Je check ça demain 👌

#

Rien ne renvoie à permissionOverwrites pour modifier après 😅
Une galère cette doc

plucky nymph
#

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 :(

plucky nymph
civic fractal
plucky nymph
#

Car il peut renvoyer une collection de Channels, tout comme un json tout juste renvoyé par l'api 👀

civic fractal
plucky nymph
plucky nymph
civic fractal
civic fractal
plucky nymph
# civic fractal Tu veux que j'utilise quoi ? <a:KaPOP:936406432184668171>

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

plucky nymph
#

Il faut tester, debug, etc... lorsqu'on est pas certain de la documentation

civic fractal
plucky nymph
#

d'où l'intérêt des libs 🫠

#

Bref, bonne soirée 👋

civic fractal
#

Bonne soirée ! 😉

dire latch
#

Si c'est possible @civic fractal

civic fractal
sterile parrot
#
      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 :/

autumn glacier
#

ou remplace readdirSync par fs.readdirSync et tu met const fs = require('fs'); tout en haut également

sterile parrot
#
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
autumn glacier
#

si oui remplace juste readdirSync par fs.readdirSync

sterile parrot
#

nickel

#

merci

sterile parrot
#

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)

loud quiver
sterile parrot
#

oui

#

administrateur

loud quiver
#

je parle des permissions intents

sterile parrot
loud quiver
#

en vrai jsp

frank dock
#

@sterile parrot t'a une erreur ?

#

Qui s'accompagne lorsque tu execute le code

sterile parrot
#

ça ne met fait rien

#

je n'ai même pas la proposition

sterile parrot
leaden prism
#

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?

copper pagoda
#

Tu peux faire

<Array>.shift();
leaden prism
#

et sa va supprimer les ''?

#

juste ceux sans espace

copper pagoda
#

ça supprime la première case c'est que tu voulais nan ?

leaden prism
#

ba le truc apres c que c'est un role reaction dcp si j'ajoute d'autres roles sa ne fonctionnera plus

#

att

copper pagoda
#

Parce que ça te le mets comment ton array avec plusieurs rôles ?

leaden prism
#

c bon sa fonctionne

#

merci bcp

copper pagoda
#

De rien.

leaden prism
#

j'aurai ptet encore besoin d'aide

#

en gros quand je retire un role sa me met un autre string sans rien dedans

copper pagoda
#

Ouais.

leaden prism
copper pagoda
#

Tu peux faire

<Array>.pop();
leaden prism
#

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('')

copper pagoda
#

Bah tu peux en mode tu vérifies par case si c'est un rôle ou pas.

leaden prism
#

comment?

red torrent
leaden prism
#

mercii

leaden prism
red torrent
leaden prism
#

dcp je doit crer une nouvelle variable?

red torrent
#

Soit en créer un nouveau soit réasigner le premier tableau

leaden prism
#

je crois que je vais en crer un nouveau mdr

red torrent
#

Par exemple js let roles = ['', '1234...', ''] roles = roles.filter(role => role !== '')

leaden prism
#

a oki

#

mrc

last bronze
#

Salut

#

Qui peux m’aider svp

sterile parrot
fleet scaffold
#

mhhh

keen narwhal
#

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

sharp grail
stiff jackal
#

Salut les gars, j'aimerais bien savoir est-ce important de travailler avec "async" & "await" ? C'est une sécurité en plus?

red torrent
bronze needle
red torrent
#

C'est plus facile à lire et maintenir du code avec les promesses que du code avec des callbacks hell

red torrent
bronze needle
stiff jackal
keen narwhal
#

Bonjour, comment je fais pour que mes commandes (+help par exmple) ce transforme en commande slash ?

ocean bluff
#

les commandes +help c'est juste de la verification du contenue de messages, les applications commands (/) c'est pas pareil.

stiff jackal
#

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

past nimbus
#

Avec plus d'info c'est encore mieux, je crois que personne ici n'est extralucide

ocean bluff
#

si tes en ESM

#

ou c'est un probleme de warning ?

#

ou ta utilisé la methode import venant de l'ESM en type commonjs ?

stiff jackal
ocean bluff
#

attend montre l'erreur

tall prism
#

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)

ocean bluff
#

Stylé

#

J'aurais fais une class pour faire les buttons, je suis trop un flemmard mdrr

worn garnet
#

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")
}

ocean bluff
#

simplement

worn garnet
#

si je ne me trompe pas, je suis obliger de le call comme sa ```ts
a(middleware, otherEntry)

ocean bluff
#

montre moi un exemple

worn garnet
# ocean bluff 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

worn garnet
floral bolt
#

Oh grand @hazy mirage je crois que ce probleme est pour toi ! 😄

worn garnet
#

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')
})

ocean bluff
#

re

ocean bluff
#

simplement

worn garnet
#

ho bien vu 😭 . apres c'est pas aussi propre que ce que j'aurais voulu mais c'est toujours mieux que mon vieux pater

ocean bluff
#

attend

#

plus propre comment ?

worn garnet
#

mais sa demanderais de faire une class 🤔

ocean bluff
#

hmm

#

attend je reflechi

ocean bluff
worn garnet
#

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

ocean bluff
#

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

ocean bluff
worn garnet
ocean bluff
#

g capté

#

bon attend j'ai une idée

#

attend du genre tu veux faire

a(mw) ?

worn garnet
#

non je veux faire a() et automatiquement sa call mw()

autumn glacier
ocean bluff
worn garnet
autumn glacier
#

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

worn garnet
#

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 PepeClown

#

il faut juste que je comprenne juste comme le faire et proprement

ocean bluff
#

mais attend

#

tu appliques ou ta fonction a dans ce code par exemple ?

worn garnet
#

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

ocean bluff
#
function verif(func) {
    if(ok) {
      return func();
    } else {
      console.log('erreur');
    }
};

function a(checkAuth, func) {
    return checkAuth(func);
};

a(verif(), function() {
       console.log('test');
    }
};
worn garnet
#

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 harold

ocean bluff
#
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 ?

worn garnet
#

normalement oui

ocean bluff
mellow parrot
#

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

oak turret
#

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

keen narwhal
#

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`)
            }

        }
};
stiff jackal
#

Salut les gars, du coup si je comprend bien les promesses sont utiles pour éviter la répétitions de callback?

stiff jackal
#

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 »

sullen kelp
sharp grail
#

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

ocean bluff
#

je m'ennui je dois bien m'occuper

floral bolt
#

Fait npm update

#

Si ça ne marche pas fait node -v

floral bolt
#

Envois moi ton package.json

acoustic smelt
#

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]})
}}}

copper pagoda
#

De mémoire tu ne peux pas récupérer l'id du message car c'est une réponse a une interaction.

burnt fractal
#

Y-a-t'il quelqu'un qui s'y connaît en react native ?

floral bolt
#

oui

merry inlet
#

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);
merry inlet
#

mon config.json est good (token, clientid, guilid)

floral bolt
#

et tu veux faire quoi ?

merry inlet
floral bolt
#
client.on("messageCreate", message => {
    if (message.content === 'ping') {
        message.reply('Pong.');
    }
});
#

et pour les slash il te faut un event listener

#

interactionCreate

merry inlet
floral bolt
#

tu as essaye de juste ecrire ping ?

merry inlet
#

ui

floral bolt
#

liste d'intents : GatewayIntentBits.Guilds, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildPresences, GatewayIntentBits.GuildMessageReactions, GatewayIntentBits.DirectMessages, GatewayIntentBits.MessageContent, GatewayIntentBits.GuildVoiceStates

merry inlet
#

floral bolt
#
const client = new Client({ intents: [GatewayIntentBits.Guilds,
        GatewayIntentBits.GuildMessages,
        GatewayIntentBits.GuildPresences,
        GatewayIntentBits.GuildMessageReactions,
        GatewayIntentBits.DirectMessages,
        GatewayIntentBits.MessageContent,
        GatewayIntentBits.GuildVoiceStates] });```
merry inlet
#

oui, mais je fait quoi avec ?

floral bolt
#

tu remplaces a la place du tiens

#

ligne 4

#

et dans ton portail developer c'est bien comme ca ?

merry inlet
#

@floral bolt parcontre /ping ne fonctionne toujour pas

floral bolt
#

normal interaction c'est un event

#

interactionCreate

#
client.on("interactionCreate", interaction => {
    console.log(interaction)
});```
acoustic smelt
#

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]})} 
}}
floral bolt
#

c'est channel.send({embeds:[recrut], components: [row]});

acoustic smelt
#

Ah ok

floral bolt
#

ensuite tu peux faire un .then((msg) => { console.log(msg)})

acoustic smelt
floral bolt
#

ca te sers a quoi la fonction makeid ?

acoustic smelt
#

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

floral bolt
#

oui mais cette fonction ?

acoustic smelt
#

ah c'est d'un ancien système de réception web de ticket sa na rien a voir

floral bolt
#

ok, mais si jamais tu crées des fonctions sors les de ton module.export

acoustic smelt
#

Oki

#

et dcp je doit faire comment pour stocker l'id du message ?

floral bolt
#

tu peux soit utiliser fs ou une database genre mongo (c'est le plus utilisé pour les bots discord)

acoustic smelt
#

j'utilise quick db

#

je voulait lui dire pour qu'il récupère juste l'id du message je doit faire msg.id

floral bolt
shell mauve
#

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 🙂

cyan iron
#

Si c'est le cas cherche pas plus loin il faut vider le cache de cloudflare ou passer en mode dev

leaden prism
#

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

floral bolt
leaden prism
#

sa ne change rien

keen narwhal
#

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 !

hushed garnet
queen ocean
#

A voir si tu peux pas check avec précision le nombre d'utilisation du vanity aussi pour vérifier l'info

keen narwhal
#

et quand la personne leave cela affiche qu'il sais pas comment l'utilisateur a rejoins

#

Pourtant des gens on joins avec le vanity

floral bolt
#

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 ?

keen narwhal
floral bolt
#

c'est quoi un lien vanity ?

keen narwhal
keen narwhal
floral bolt
keen narwhal
#

en dirait qu'il détecte pas quand le membres viens avec l'url perso

floral bolt
keen narwhal
floral bolt
keen narwhal
floral bolt
#

Alors tu fais une condition

#

genre if (usedInvite == null) { -- ton code } else { user a rejoins avec invites personnalisés}

floral bolt
#

montre le code que tu as fais

keen narwhal
#
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);
  }
})
floral bolt
#

mais tu n'as pas essayer ce que je t'es dis

keen narwhal
#

comment ça ?

keen narwhal
floral bolt
#

ah oui j'avais pas vus

#

ca te renvois quoi usedInvite quand tu utilises vanity ?

keen narwhal
#

c'est comme si cela ne la détecter pas

floral bolt
#

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);

floral bolt
#

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);
    }
});
floral bolt
#

j'ai corriger

keen narwhal
floral bolt
#
    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);
    }
});
floral bolt
#

rajoute const catchedInvites = guildInvites.get(member.guild.id); au dessus de newInvites

keen narwhal
#

c fait mais toujours rien

floral bolt
#

comment ca ?

#

pas d'erreur rien ?

keen narwhal
#

y'a écris vanity

#

j'ai fait un test avec un non vanity url et ça a afficher que cela ne l'était pas

floral bolt
#

voila ton code marche 🙂

keen narwhal
obtuse hearth
#

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

ocean bluff
#

Montre ton interactionCreate

#

plutot de ou t'appel ta fonction

glass cargo
#

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 ?

ocean bluff
#

tu dois indiquer le type module dans l'appel de ton script dans ton fichier html