#javascript-typescript

1 messages · Page 78 of 1

wild bramble
#

toujours la même erreur

lone flax
#

Envoie l'erreur ?

oak turret
#

montre ton code

wild bramble
#

j'ai réussi à enlever l'erreur c'était une autre ligne qui faisait l'erreur mais marche pas

#
const client = new Discord.Client();


module.exports = {
    name: 'ticket',
    execute(message) {
        message.delete()
        let ticket = new Discord.MessageEmbed()
            .setColor('#0099ff')
            .setTitle(`Créer un nouveau ticket`)
            .setDescription(`**Pour ouvrir un ticket, réagissez avec 🎟️ sous ce message et ensuite exposez-nous votre problème le plus clairement possible et avec un maximum d'information pour faciliter la résolution de celui-ci par notre équipe.**`)

        message.channel.send(ticket)
            .then(message => message.react('🎟️'))
    },
};

client.on(`messageReactionAdd`, (reaction, user) => {
    if (reaction.emoji.name == "🎟️") {
        guild.channels.cache.create('new-voice', {
            type: 'text',
            permissionOverwrites: [
                {
                    id: message.author.id,
                    deny: ['VIEW_CHANNEL'],
                },
            ],
        })
    }
})```
lone flax
#

Oula

#

Rajoute une `

oak turret
#

oui je t'ai dis mais déjà ça devrait pas être comme ça mais bref

#

c'est reaction.message.guild...

#

et ça sera user.id dans permissionOverwrites

#

et tu mettras allow:["VIEW_CHANNEL"] c'est toujours mieux :p

lone flax
#

Maniaque

#

Ah non

#

Il a mis deny

#

Mdrrr

#

J'pensais tu parlais des ""

#

Aussi oublie pas d'identer le code en bas

wild bramble
oak turret
#

à la plage de guild.channels etc

wild bramble
#

donc : reaction.message.guild.create('new-voice', {

oak turret
#

.channels.create

wild bramble
dire latch
#

Test @wild bramble 🙂

wild bramble
#

ouais bah marche pas mdr

oak turret
#

lis la doc...

#

je t'ai donné l'exemple

#

suffit de le suivre

cyan iron
#

Dit moi mon petit @spring dock, comment as-tu fait sur le site de GCA pour pas avoir à redemander l'autorisation :)

spring dock
#

regarde la doc

queen ocean
cyan iron
#

zebi t'es méchant

cyan iron
#

OH OUAIS

#

J'ai réussi

#

:)

young holly
#

c'est cool

hybrid berry
blazing wadi
#

On est d'accord

#

c'est l'api discord qui limite

timid loom
#

oui

copper pagoda
#

J'ai ce code là et cette erreur

if (!req.length){
                let randomnumber = Math.floor(Math.random() * (3 - 1) + 1);

                let sql = `INSERT INTO rank (utilisateur, coins, level, xpmax, total) VALUES ("${message.author.id}", ${randomnumber}, 0, 50, ${randomnumber})`
                db.query(sql, err => {
                    if(err) throw err;
                });
            }

Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'rank (utilisateur, coins, level, xpmax, total) VALUES ("706097355979489282", ...' at line 1

copper pagoda
timid loom
#

Sinon c'est possible que ce soit les décimales qui se transforment mal, tu devrais mettre des apostrophes ou quelque chose du genre pour éviter que ce soit mal interprété

copper pagoda
timid loom
#

ah yes j'avais pas vu le Math.floor

#

je vois pas l'erreur là comme ça

cyan iron
copper pagoda
#

bah moi je sais pas j'ai relu 20 fois pour voir si j'avais pas mal écrit et j'ai tout bien écrit

copper pagoda
cyan iron
#

Hum ok

copper pagoda
#

ça peut pas venir de là

cyan iron
#

Je sais

#

Mais c'est bizarre ton erreur

copper pagoda
#

Mais pourquoi le fait que ça soit la même valeur voudrais que ça marche pas

copper pagoda
#

Je crois que cette erreur sera jamais réglé 😭

cyan iron
#

Nan

#

Jamais dire ça

#

Bah tu vois y'a Enzo il va régler ton erreur :)

slim anvil
#

on sait jamais mais:

(utilisateur, coins, level, xpmax, total)

tu respectes bien les types de ces champs à l'envoie ?

cyan iron
#

il règle toutes les erreurs Enzo

slim anvil
#

utilisateur c'est bien un type string dans ta table ?

copper pagoda
slim anvil
#

Okay les autres que tu envoies sont bien des int ?

#

en tout cas le randomnumber

copper pagoda
#

Bah oui 1, 0, 50 , 1

slim anvil
#

ah oui il est généré plus haut

copper pagoda
#

c'est des entiers

slim anvil
#

Oui mais 1 peut etre en string aussi

copper pagoda
#

pourquoi ?

slim anvil
#

mais tu le génères en haut donc c'est normalement un int

#

bah sur discord la si tu récupères ce message:

#

1

copper pagoda
#

bah oui

slim anvil
#

tu récupères 1 mais ce sera une string

#

c'était juste pour etre sur

copper pagoda
#

Ouais

#

logique

#

Euh mais du coup je fais quoi ?

dark leaf
#

🤷‍♂️

cyan iron
#
  let sql = `INSERT INTO rank (utilisateur, coins, level, xpmax, total) VALUES ("${message.author.id}", "${randomnumber}", "0", "50", "${randomnumber}")`
#

Tente ça

cyan iron
#

heeeein

slim anvil
#

on peut essayer un truc à l'ancienne voir si c'est pas un probleme de concaténation mais

#

tente ça

cyan iron
#

T'as pas fait une faute sur tes noms de colonnes ?

#

Ou de table carrément ?

copper pagoda
#

et ce que je comprends pas aussi c'est que j'ai utilisé pareil pour d'autre codes mais ça marche

copper pagoda
slim anvil
#
sql = "INSERT INTO rank (utilisateur, coins, level, xpmax, total) VALUES ('" + message.author.id + "', " + randomNumber + ", 0, 50, " + randomNumber + ")
#

ça devrait rien changer mais bon essaye comme ça pour etre sur

cyan iron
#

wtf

slim anvil
#

car la requete à l'air bonne, sauf si oui les champs ne sont pas les bons

#

mais ça on peut pas le savoir

cyan iron
#

montre ta table

timid loom
#

à ton tour.

cyan iron
#

(╯°□°)╯︵ ┻━┻

slim anvil
copper pagoda
#

pas ok

slim anvil
#

tu peux montrer ta table ouais

timid loom
#

(pas le meuble du coup)

copper pagoda
copper pagoda
cyan iron
#

Bah je vois pas le problème perso ;-;
Tout va bien en fait

copper pagoda
#

Bah oui

slim anvil
#

pour être sur typeof ton randomnumber qu'il soit bien en type number, et j'ai une question peut-être absurde mais @timid loom en sql si tu envoies 0

#

il l'interprète en INT ou en Bool ?

timid loom
#

normalement en fonction du data type il adapte

slim anvil
#

oké ça va alors

copper pagoda
#

J'ai essayé avec un 1 à la place de 0 et ça marchais pas non plus

slim anvil
#

oui mais 1 reste boolean aussi mdr

cyan iron
#

Bah du coup ça revient au même

copper pagoda
#

et du coup ?

cyan iron
#

Essaye avec 666

timid loom
# copper pagoda

je vois pas pourquoi tu mets 255 parce que selon toute logique tu devrais pas avoir besoin de 255 chiffres sur ces nombres mais sinon ça me paraît correct

slim anvil
#

ouais et typeof randomnumber du coup pour etre sur

copper pagoda
slim anvil
#

mais la requete parait bonne 🤔

cyan iron
#

En tout cas moi de base ça me met 255 aussi

copper pagoda
#

Pas moi

cyan iron
#

J'utilise pas PHPmyadmin ^^

#

Je trouve ça éclaté mais chacun ses goûts ;)

timid loom
timid loom
cyan iron
#

Non mais c'est pas ça

cyan iron
copper pagoda
cyan iron
#

Attends je vérifie

timid loom
cyan iron
slim anvil
#

et du coup killer ?

timid loom
#

je sais même pas si SQL supporte des nombres de 255 chiffres

slim anvil
#

oui car j'attend harold

copper pagoda
slim anvil
#

typeof xxx

copper pagoda
#

OK

slim anvil
#

et montre la réponse, fais le sur chaque valeur

cyan iron
#

J'ai dit de la merde, ça me met 50 en varchar et 11 en INT

copper pagoda
cyan iron
#

oui non mais ça ok

#

Les autres oui

copper pagoda
slim anvil
#

oki

copper pagoda
slim anvil
#

essaye on sera fixé

cyan iron
#

euh

#

Bah moi je les met à chaque fois

copper pagoda
#

Bah non ça marche pas

cyan iron
#

Bah ouais

timid loom
#

essaye de mettre ```js
let sql = INSERT INTO rank (utilisateur, coins, level, xpmax, total) VALUES ("${message.author.id}", \${randomnumber}`, `0`, `50`, `${randomnumber}`)`

copper pagoda
#

OK

#

toujours pas

timid loom
#

rip

#

je vois vraiment pas dsl

cyan iron
#

Je serais devenu fou à ta place

copper pagoda
#

Merci pour votre aide là je sais plus dutout quoi faire 😭

timid loom
#

mais t'es sûr de toi sur ton datatype? je veux dire j'ai jamais vu de INT(255)

copper pagoda
timid loom
#

un INT(11) c'est largement suffisant (et du coup d'après ce que dis wailrone y a pas besoin de le préciser)

copper pagoda
#

et c'est ce que j'ai mis pour les warns

dark leaf
#

@timid loom en entreprise le INT 11 il part vite en couilles

#

J'te jure que je l'ai déjà dépassé j'étai pas serein

timid loom
copper pagoda
timid loom
dark leaf
#

Ouai 255 c'est trop lol

timid loom
#

autant d'abord passer par un BIGINT

copper pagoda
timid loom
#

là déjà t'as de la marge

timid loom
dark leaf
#

GO en BIGINT

copper pagoda
dark leaf
#

hihi

cyan iron
#

DOUBLE

timid loom
copper pagoda
#

bon je vais mettre 11 si vous voulez

cyan iron
#

Ouais

timid loom
#

mets en UNSIGNED si tu veux aller plus loin aussi à la limite

dark leaf
#

En soit @copper pagoda si tu veux que ta base elle soit técla au sol part sur du TEXT au pire

timid loom
#

LONGTEXT

dark leaf
#

Je plaisante

#

Juste pour dire que c'est pas anodin de choisir ces genres de choses

copper pagoda
#

en tout cas d'y mettre en 11 ou en 255 ça change pas mon problème

timid loom
#

yes ok bref dsl de pas trouver mais là c'est un problème que j'ai jamais rencontré
tu utilise quoi comme librairie? ptet que c'est un problème connu

timid loom
#

sur du mariadb? t'es sûr que c'est supporté?

#

en plus je crois que le driver mariadb est super bien

#

(et supporte mysql)

#

ça peut paraître bizarre mais certains trucs peuvent marcher et pas d'autres je pense vu que mariadb est un superset de mysql

copper pagoda
timid loom
#

comme tu veux

copper pagoda
#

Et ben non

timid loom
#

c'est toujours la même erreur?

copper pagoda
#

Oui

copper pagoda
#

Toujours aucune idée ?

dire latch
#

@copper pagodaTu as toujours ton erreur ?

copper pagoda
#

Bah ouais

dire latch
#

Tu peut juste remettre le code et l'erreur ?

#

Stp

dire latch
#

C'est quoi AL ?

copper pagoda
#

AL où ça ?

dire latch
#

Ou AI

#

Jsp

#

@copper pagoda

copper pagoda
#

C'est auto_incrémentation

dire latch
#

Il sert à quoi ?

#

Car normalement, c'est le ID de base, non ?

#
let sql = `INSERT INTO rank (utilisateur, coins, level, xpmax, total) VALUES ("${message.author.id}", ${randomnumber}, "0", "50", ${randomnumber})`
#

Essaye ça

copper pagoda
#

stv

#

Non plus !

dire latch
#

Et si tu met des " "

#

Sur ceux qui en ont pas ?

#
bot.on("message", (message) => {
        if (message.channel.type === "dm") return;
        if (message.author.bot) return;
        let randomnumber = Math.floor(Math.random() * (3 - 1) + 1);
        bdd.query(`SELECT * FROM rank WHERE utilisateur = '${message.author.id}'`, (err, req) => {
                if (req.length < 1) {
                        bdd.query(`INSERT INTO rank (utilisateur, coins, level, xpmax, total) VALUES ("${message.author.id}", ${randomnumber}, "0", "50", ${randomnumber})`);
                        message.channel.send("JE TE SAUVEGARDE !");
                } else {
                        console.log("LE RANK A ETE UPDATE !");
                        message.channel.send("JE T'AI UPDATE !");
                }
        });
});
#

@copper pagoda

copper pagoda
#

Quoi ?

dire latch
#

Ba avec ceci, sa fonctionne

copper pagoda
dire latch
#

Et sa fonctionne pas ?

copper pagoda
#

Bah non sinon je ne serai pas là

cyan iron
#

Apparement non ptdr

dire latch
#

Mdrr

#

Sa ce voit que tu n'as pas pareil que moi

#

Moi, je viens de test à l'instant, et sa fonctionne

#

Remplace par ce .sql sinon

#

Au pir des cas

copper pagoda
dire latch
#

Je te dis que tu n'as pas pareil que moi sinon sa fonctionnerais

copper pagoda
#
function level_(message, bot){
        addRandomInt(message.member);
        let loglvl = bot.channels.cache.get('817777352728903710');
        let cmd_bot = bot.channels.cache.get('742340156010397758');
        db.query(`SELECT * FROM rank WHERE utilisateur = ${message.author.id}`, (err, req) => {
            if(err) throw err;
            function updatelevel(a,b){
                let sql = `UPDATE rank SET coins=1, level=${a}, xpmax=${b}, total=${req[0].total + 1} WHERE utilisateur=${message.author.id}`;
                db.query(sql, err => {
                    if(err) throw err;
                });
            }

            if (!req.length){
                let randomnumber = Math.floor(Math.random() * (3 - 1) + 1);
                let sql2;

                console.log(typeof randomnumber);
                console.log(typeof message.author.id);

                sql2 = `INSERT INTO rank (utilisateur, coins, level, xpmax, total) VALUES (${message.author.id}, ${randomnumber}, 0, 50, ${randomnumber})`;
                db.query(sql2, err => {
                    if(err) throw err;
                });
            }
            // Level 1
            else if (req[0].coins > 50 && req[0].coins < 100) {
                if (req[0].level == 0 && req[0].xpmax == 50){

                    updatelevel(1,100);
                    // lvl["coins-utilisateurs"][message.member.id] = 1;
                    // lvl["level-utilisateurs"][message.member.id] = 1;
                    // lvl["XPmax"][message.member.id] = 100;
                    // Savebdd();
                    let embedlvl = new Discord.MessageEmbed()
                    .setColor('RED')
                    .setTitle('**LEVEL**')
                    .setDescription(`${message.author} est passé au niveau 1`)
                    .setFooter('By Killer Jumper Bot !');
                    loglvl.send(embedlvl) && cmd_bot.send(`${message.author} est passé au niveau 1`);
                }
            }
#

c'est pas pareil ça !

dire latch
#

Pas du tout

copper pagoda
#

Lit avant XD

dire latch
#

Toi regarde mieux mon code

#

Et le tiens

#

Je crois que l'aveugle, c'est toi 🤷‍♀️

copper pagoda
#

Non moi j'ai mis une fonction et tout et tout marche sauf ça !

dire latch
#

Bref, je t'ai donné un code qui fonctionne, si tu ne veut pas modifié le tient, c'est ton soucis maintenant

copper pagoda
dire latch
#

Oui oui aller, reste borner dans ton monde

copper pagoda
#

Bah si

dire latch
#

Aller, bye, bonne galère

copper pagoda
#

c'est drôle je viens de recopier et ça marche pas !

dire latch
#

A d'autres

#

Si sa fonctionne, merci bien 🙂

copper pagoda
dire latch
#

Si tu ne sais pas utiliser le code que je t'ai passé, va falloir refaire les bases mdr

slim anvil
#

C'est juste possible que ça ne fonctionne pas meme en copiant ton code Duck, il a peut-être un problème de lib ou autre

#

Donc vous trashtalkez pas sur ce genre de sujet car vous avez tous les 2 raisons et tous les 2 tort

dire latch
#

Lib utilier: discord.js et mysql

#

Dernière version

slim anvil
#

toutes tes autres requêtes @copper pagoda elle passe sans soucis ?

dire latch
#
const mysql = require('mysql');
var bdd = mysql.createConnection({
        host: 'localhost',
        user: 'tonuser',
        password: 'tonpassword',
        database: 'tadatabase'
});

bdd.connect(err => {
        if (err) throw err;
        bdd.query('SET NAMES utf8mb4');
});
#

Voilà ce que j'utilise si jamais

copper pagoda
dire latch
#

Ok le borner

copper pagoda
#

Et d'ailleur pourquoi tu mets des "" sur les nombres alors que c'est des int ?

#

c'est facile de pas se faire chier et de tout mettre en string

#

@slim anvil ça viendrait pas du fait que j'ai ajouter des valeurs avec l'importation sur la base de donnée ?

#

avec l'onglet insérer

slim anvil
#

Honnêtement là je ne sais pas du tout malheureusement je ne pourrai pas t'aider

#

à tous les coups c'est quelque chose à la con, mais quoi idk

copper pagoda
#

Ouais ok

#

Ouais en tout cas y mettre tout en string et bien une solution mais j'aimerai que ça reste en int

slim anvil
#

pourquoi ça marche si tu fous tout en string ?

copper pagoda
#

bah c'est ce que McDuck à fait

#

c'est la seule chose qui chose en faites

dire latch
#

String ou non, sa fonctionne 👍

#

Mais ouais, avant de dire n'importe quoi, on fais des tests hein

copper pagoda
#

Ouais ça fait 3 jours que j'en fait quoi !

dire latch
#
bot.on("message", (message) => {
        if (message.channel.type === "dm") return;
        if (message.author.bot) return;
        let randomnumber = Math.floor(Math.random() * (3 - 1) + 1);
        bdd.query(`SELECT * FROM rank WHERE utilisateur = '${message.author.id}'`, (err, req) => {
                let sql;
                if (req.length < 1) {
                        sql = `INSERT INTO rank (utilisateur, coins, level, xpmax, total) VALUES ("${message.author.id}", '${randomnumber}', '0', '50', '${randomnumber}')`
                        console.log("LE RANK A ETE UPDATEE !");
                        message.channel.send("JE T'AI SAUVEGARDER !");
                } else {
                        sql = `UPDATE rank SET coins = ${randomnumber}, level = '0', xpmax = '50', total = ${randomnumber} WHERE utilisateur = ${message.author.id}`
                        console.log("LE RANK A ETE UPDATE !");
                        message.channel.send("JE T'AI UPDATE !");
                }
                bdd.query(sql);
        });
});
#

Tiens, encore une solution

keen narwhal
#

Salut les mecs, quelqu'un aurait déjà-t-il utilisé moment.js pour un bot discord ? Si oui, j'ai un petit soucis, sur la machine du bot, le temps est décalé de 2h, auriez-vous une solution ?

dire latch
#

Rajoute: moment.locale("FR");

#

Sinon, tu rajoutes le temps manuellement

#

@keen narwhal

keen narwhal
#

Justement c'est déjà fait pour le moment.locale, en minuscule par contre, ça peut affecter l'heure ?

dire latch
#

Sa prends l'heure locale quoi

#

Moi j'ai dut rajouté 1H de plus dans le code

keen narwhal
#
console.log(`[BOT] `.cyan +`En ligne depuis le ${moment().format('Do MMMM YYYY, HH:mm:ss')} !`.yellow);```
#

Comment tu rajoutes ? J'ai essayé mais ça ne fonctionne pas

dire latch
#

${moment.utc(bot.uptime + 3550000).format('Do MMMM YYYY, HH:mm:ss')}

#

Sa fonctionnerais pas ça ?

keen narwhal
#

Je vais checker

#

Le + 3550000 sert à quoi 🤔

dire latch
#

Pour augmenté d'1H

#

En gros, bot.uptime par exemple = 18H

#

Mais, il est 19H, donc tu rajoutes 3550000 qui est égal à 1H donc, sa fais 19H

keen narwhal
#

D'acc, cette solution fonctionne aussi sur une commande autre ? (pas juste sur un console.log par exemple)

slim anvil
#

non faut pas faire comme ça

#

Tu dois définir ton timezone

#

Le locale sert juste au display, le timezone c’est pour tout ce qui UTC et

dire latch
#

C'est ce qu'il a fais

#

Oui @keen narwhal

keen narwhal
#

Yep

dire latch
#

AH

slim anvil
#

oui donc me contredis pas sinon t’es un homme mort

dire latch
#

😦

#

Oui Boss

slim anvil
#

Parce que rajouter une heure c’est pas bon non plus car si il y a un changement d’heure sur le timezone ou tu es bah ça va décaler :/

spring dock
slim anvil
#

Du coup je vous conseille vraiment de set votre timezone, ou je travaillais avant sur le projet de 2 de mes collègues ils ne l’avaient pas fait et ils se sont étonnés que par moment les dates étaient plus bonnes, bawi

keen narwhal
#

Ok boss 👍

dire latch
#

Mais on fais comment ducoups Mr le Boss ? @slim anvil

#

Il parle sans donner la solution 👀

dire latch
#

Ah oui ok, tu précises comme ça 🙂

slim anvil
#

yes bah c’est plus simple tu auras tout les exemples nécessaires

#

Pour le coup la doc de moment est quand même très très complète

dire latch
#

Je vois ça

cyan iron
#

Salut les gars ! Actuellement je suis en train de faire un site web avec une connexion par Discord, bon jusque là pas trop de problème.
En fait j'utilise ejs pour afficher mes pages etc ( aucun problème non plus )
Mais j'ai un formulaire, et lorsque je clique sur le bouton pour envoyer mon formulaire, j'aimerais que ça envoie un webhook et que ça fasse une requête SQL.

Mais malheureusement, ça ne fonctionne que sur node js, et pas en js web, est-ce que quelqu'un sait comment faire ?

#
<input class="send" type="submit" value="Envoyer" onclick="sendData()">
#

Mon bouton pour envoyer

#
function sendData() {

    let email = document.getElementById('emailR').value

    fetch(`https://discord.com/api/webhooks/id/token`, {
        method:"POST",
        headers:{'content-type': 'application/json'},
        body : JSON.stringify({
            embeds : [
                {
                    color : '#ffffff',
                    fields : [
                        {
                            name : 'Email :',
                            value : email
                        }
                    ]
                }
            ]
        })
    })
}
#

Ma fonction ( bien sûr ça work pas )

slim anvil
#

c'est quoi le soucis ?

#

t'as une erreur ou autre ?

cyan iron
#

Bah en fait ce que j'aimerais faire, c'est pouvoir utiliser des modules

#

Comme mysql

slim anvil
#

ta fonction est bien appelé ou justement c'est ça le soucis ?

cyan iron
#

En gros je clique sur mon bouton, et ça envoie une requête

slim anvil
#

car la je comprend pas ou tu as le probleme

cyan iron
slim anvil
#

c'est l'envoie du webhook qui bug ?

cyan iron
#

Oui

slim anvil
#

T'as une erreur ?

cyan iron
#

Et je sais pas comment importer un module

slim anvil
#

mais t'as pas besoin de module le fetch suffit

#

ca marche aussi en js web

cyan iron
#

Oui mais pour du sql

slim anvil
#

comment ça du sql

cyan iron
cyan iron
#

là je suis sur express

slim anvil
#

att je suis sur rocket league

cyan iron
#

ok

slim anvil
#

en tournoi je regarde apres oki

cyan iron
#

je déco dans 15min

#

okay bah demain sûrement alors

#

no problem

slim anvil
#

tu veux que ta fonction sendData fasse un save en db quoi ?

cyan iron
#

Ouais

#

Bah en gros je veux faire du nodejs sur du web si c'est possible kappo
vu que je suis sur express je pense que c'est possible nan ?

slim anvil
#

hein wtf

#

ton front fais just eun appel sur ton api

cyan iron
#

c'est ce que je veux faire ouais ( si j'ai bien compris )

slim anvil
#

tu declares des routes avec express

cyan iron
#

oui

#

AAAAAH

#

Je crois que j'ai compris un truc

#

Je peux pas POST sur mon api et récup après genre ?

slim anvil
#

Bah si tu peux faire ce que tu veux, mais ton front appelle ta route du back et il attend le retour

cyan iron
#

ok je vais essayer merci :)

lone flax
#

Vous savez +/- quand la nouvelle API de discord avec les slash-commands pourrait sortir ?

hazy mirage
#

de discord js ?

#

elle est censée sortir cette semaine

lone flax
#

Ah nice

bold sparrow
#

Qui utilise l'API v9

plain crystal
#

hello, vous savez s'il y a par hasard moyen d'invoquer le contexte nuxt dans une server middleware? thanks ^^

slim anvil
plain crystal
#

merci :)

blazing wadi
#

Hello,

je veux actuellement faire une commande pour créer un folder mais je veux que si le folder existe déjà le bot ne peut pas en recréer un. Mais je n'y arrive pas

#

Voici le code : ```js
let user = message.author;
const chemin = File/Dossier-${user.id}
if(chemin) {
const embed = new MessageEmbed()
.setColor(client.config.color).setImage(client.config.img).setTitle("Le dossier existe déjà")
message.channel.send(embed)
}
if(!chemin){
fs.mkdir(path.join('File', Dossier-${user.id}), function (err) {
if (err) throw err;

    })} ```
cyan iron
#
fetch('/test', {
        method : 'POST',
        body : JSON.stringify({
            email : email
        }),
        headers: {
            'Content-Type': 'application/json',
        },
    }).then(async res => {
        console.log(await res.json())
    })
#

Quand j'appuie sur le bouton

#
app.get('/test', (req, res) => {
    let response = {
        email:req.body?.email,
    };
    console.log(response);
    res.end(JSON.stringify(response));
})

et là c'est le serveur express

slim anvil
#

fetch('/test'

#

il va pas trouver l'url de ton api local tout seul tu sais

#

ton api express run sur quel port ?

cyan iron
#

3000

slim anvil
#

fetch('localhost:3000/test')

cyan iron
#

ok je try

#

Donc je vais être obligé de le modifier quand ce sera en ligne ?

slim anvil
#

bah tu te le modifie en global

cyan iron
#

same :c

slim anvil
#

ou avec un .env

cyan iron
slim anvil
#

elle run bien ton api la ? montre ton api aussi

cyan iron
#

oui quand je vais dessus "manuellement" ça work

slim anvil
#

ok je vais te déboiter

#

l'erreur est sous ton nez je te laisse la chercher 5 minutes

cyan iron
slim anvil
#

et si t'as pas trouvé tu me ping

cyan iron
#

Mais c'est undefined c'est normal car body existe pas si je vais dessus

slim anvil
#

relis toi

cyan iron
#

Mais je comprends pas pourquoi il le trouve pas alors qu'il existe

slim anvil
#

si tu trouves pas avant 22 je te refous débutant kappo

cyan iron
#

MAIS NON

#

C'est injuste j'ai jamais utilisé express

#

1 fois

#

pour faire une vieille connexion Discord ptdr

queen ocean
#

Nan mais rien a voir avec express pour le coup

#

Faut juste lire ce que tu as écrit

slim anvil
#

relis juste ton code

#

Bon allez @cyan iron je te donne la réponse, t'es prêt ?

cyan iron
#

ouais

slim anvil
#

bonne soirée

cyan iron
#

AAAAAAAH IL FAUT FAIRE .POST

#

Mais je savais pas moi

#

on me l'a pas dit ça kappo

slim anvil
#

la doc

cyan iron
#

Mais c'est logique en plus !

slim anvil
#

tu peux avoir une route /test en get et en post et en delete etc etc

#

Bah oui c'est logique

#

Chose promis, chose du !

queen ocean
cyan iron
#

mais nan

#

:c

slim anvil
#

je joke kappo

cyan iron
queen ocean
#

@cyan iron go faire gagner un Nitro en giveaway et tu gardes ton role KaPOP

cyan iron
#

MDR ATTENDS

#

J'ai un nitro en trop en vrai

#

je suis sérieux

#

Bon du coup ça marche mais l'email est undefined quand même kappo

#

je vais trouver tout seul

blazing wadi
#

c'est de la menace là 😂

cyan iron
#

Nan mais vrai de vrai j'ai un nitro en trop

#

xd

blazing wadi
cyan iron
blazing wadi
#

oh merci

#

c'est ça !

#

:heart:

#

pourquoi ça fait pas le symbole

#

xD

cyan iron
#

ça va peut être paraître bizarre, mais j'ai lu la doc et là j'ai réussi kappo

spring dock
#

bravo

cyan iron
plain crystal
#

faut mettre un \ devant le :heart:

#

fin tu peux toujours utiliser "❤️"

blazing wadi
#

oki

blazing wadi
cyan iron
keen narwhal
#

Bonjour, comment je peux récupérer une même valeur de tout les dictionnaires d'une liste ?
Exemple pour la valeur de name je devrais faire comment ? :

  {
   "name" : "SQL",
    "use" : "none"
   },

   {
   "name" : "Python",
   "use" : "none"
    },

    {
   "name" : "Php",
   "use" : "none"
    }
]```
(c'est qu'un exemple qui n'a aucun sens)
spring dock
#

j’ai pas comtpis

keen narwhal
#

En gros j'aimerais récupérer : SQL, Python, Php

cyan iron
#

mais c'est quoi ça un array ?

#

ou du JSON ?

spring dock
keen narwhal
#

Json

cyan iron
#

lol

keen narwhal
#

Je sais pas

spring dock
#

[] = tableau

#

{} = objet

#

donc un tableau d’objets

cyan iron
#

c'est pour mieux expliquer

slim anvil
#

.map()

dire latch
#

Oula

slim anvil
#

[
{
"name" : "SQL",
"use" : "none"
},

{
"name" : "Python",
"use" : "none"
},

{

"name" : "Php",
"use" : "none"
}
].map(i => i.name)

#

voilà bizou

cyan iron
#

PTDR

keen narwhal
#

Ah ok

#

Merci

dire latch
#

@slim anvilOuah le Boss

cyan iron
blazing wadi
#

Hello, pour faire un site et se connecter avec son compte discord on doit obligatoirement utiliser express ?

cyan iron
#

Je sais pas mais c'est facile tkt

blazing wadi
#

Donc bon

cyan iron
#

trql

#

tu peux tout garder bg

#

avec ejs

#

t'as juste à rename ton fichier html

#

Et gérer 2-3 trucs tkt

slim anvil
#

Tu peux le faire avec la techno que tu veux

keen narwhal
blazing wadi
#

Bonjour à tous,

Pour pouvoir delete un message via les buttons. On utilise l'évent de discord-buttons mais je ne vois pas de function pour delete un message enfin juste pour delete une reply, est ce que c'est cela ?

cyan iron
#

Hein ?

blazing wadi
#

j'utilise ça

cyan iron
#

Et ?

blazing wadi
#

pour delete j'utilise ça ?

cyan iron
#

Tu veux delete quel message

blazing wadi
cyan iron
#

Celui sur lequel il y a le bouton

#

Nan ça c'est la reply

blazing wadi
#

un message envoyé par le bot

#

au préalable

cyan iron
#

Celui sur lequel il y a le bouton ?

blazing wadi
#

att je m'exprime mal

cyan iron
#

Oui 😂

blazing wadi
#

je vais recommencer

cyan iron
#

Ouaip 0_KappaSip

blazing wadi
#

fait pas gaffe à la descirption

#

j'ai tapé avec tabnine

#

et en gros avec ce bouton je voudrais supprimer le message

cyan iron
#

button.message.delete()

blazing wadi
#

ah

#

même pas besoin d'event

#

ok j'ai compris cimer 🙂

cyan iron
opal harness
#

Yo,
Je voudrais savoir pourquoi quand qq1 rejoind ça envoie rien

const Discord = require('discord.js');
const bot = new Discord.Client();
const config = require('./config.json')

bot.on("guildMemberAdd", member => {  
    bot.channels.cache.get('860497208784584747').send(`Bienvenue sur le serveur`);
})
blazing wadi
blazing wadi
#

ah

#

att fait ça

#
const channel = member.guild.channels.cache.get("860497208784584747");

channel.send("Ton message")```
#

@opal harness

opal harness
# blazing wadi ```js const channel = member.guild.channels.cache.get("860497208784584747"); ch...

ReferenceError: member is not defined
at Object.<anonymous> (c:\Users\sandr\Documents\AtlanticaBotDiscord\index.js:4:17)
at Module._compile (internal/modules/cjs/loader.js:1068:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
at Module.load (internal/modules/cjs/loader.js:933:32)
at Function.Module._load (internal/modules/cjs/loader.js:774:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at internal/main/run_main_module.js:17:47

blazing wadi
#
const Discord = require('discord.js');
const bot = new Discord.Client();
const config = require('./config.json')

bot.on("guildMemberAdd", async (member) => {  
   const channel = member.guild.channels.cache.get("860497208784584747");

channel.send("Ton message")
}) ```
#

@opal harness

blazing wadi
opal harness
#

ReferenceError: member is not defined
at Object.<anonymous> (c:\Users\sandr\Documents\AtlanticaBotDiscord\index.js:4:17)
at Module._compile (internal/modules/cjs/loader.js:1068:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
at Module.load (internal/modules/cjs/loader.js:933:32)
at Function.Module._load (internal/modules/cjs/loader.js:774:14)
at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
at internal/main/run_main_module.js:17:47

oak turret
#

t'as activé tes intents ou pas ?

opal harness
oak turret
#

ton panel dév

opal harness
#

Nop je ne crois pas et comment je fais ça ?

oak turret
blazing wadi
#

ah ptn oui c'esr vrai

opal harness
#

Merci

oak turret
#

c'good ?

opal harness
#

Yes

oak turret
#

👌

peak cedar
#

Yop les rhey ptit question je fait un bot pour un serveur et pour le systeme police il faut un !pds = !prise de service

et !fds

#

sa c fait

#
    if (message.content.startsWith("!pds")) {
        var d = new Date();
        var date = d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate();
        var hours = d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds();
        var fullDate = date + ' ' + hours;

        const pds = new Discord.MessageEmbed()
            .setTitle("Prise de service de " + message.author.username)
            .setColor(rdmColor())
            .setDescription("Prise de service a : " + fullDate)
            .setFooter("𝙎𝙘𝙥𝙙 - 𝙥𝙙𝙨")

        message.channel.send(pds)


    }


    if (message.content.startsWith("!fds")) {
        var d = new Date();
        var date = d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate();
        var hours = d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds();
        var fullDate = date + ' ' + hours;

        const fds = new Discord.MessageEmbed()
            .setTitle("Fin de Service de " + message.author.username)
            .setColor(rdmColor())
            .setDescription("Fin de service a : " + fullDate)
            .setFooter("𝐒𝐜𝐩𝐝 - 𝐟𝐝𝐬")

        message.channel.send(fds)

    }


#

voila

#

et la ptit question c que la le fullDate recupere l'heure a la quelle et mit le msg

#

sa c bon

#

pour le pds c ce qui faut

#

Mais pour le fds je voudrais qu'il get le temp qui et passser entre la commande pds et fds

cyan iron
#

Yo, faut que tu stockes le timestamp quand tu fais la commande pds

#

Et ensuite tu fais une soustraction

#

:)

peak cedar
#

oulaaaa '')

#

'^^

cyan iron
#

Un fichier json suffit normalement, tu stockes Date.now()
Ensuite au moment de faire la commande fds, tu fais Date.now() - pds

#

Et t'as le temps qu'il s'est écoulé en ms

peak cedar
#

tu sais je suis genre tres nul

#

😭

#

😂

cyan iron
#

89732ms

peak cedar
#

ta pas un exemple de code

#

?

cyan iron
#

1m30 quoi

peak cedar
#

stp

#

genre la base

cyan iron
#

Je ne vais pas non plus te faire ton bot kappo

peak cedar
#

Nan

#

mais la base

cyan iron
#

Tu sais stocker en json ?

peak cedar
#

hmmm hmm

#

😦

#

en vite fait

#

ouais

cyan iron
#

Bah voilà

peak cedar
#

on va dire oui

#

fait pas gaffe a l'erreur

cyan iron
#

bah voilà

peak cedar
#

Mais je sais pas faire la suite;(

cyan iron
#

...

#

Je t'ai littéralement tout dit

peak cedar
#

et j'ai littéralement rien compris je suis con (:

peak cedar
#

😂

opal harness
#

Encore une question,
C quoi le problème dans les ligne ci dessous qui me génère un error

const Discord = require('discord.js');
const config = require('./config.json');
const fs = require("fs");
const bdd = require(".bdd.json");

const bot = new Discord.Client();

function Savebdd() {
    fs.writeFile('./bdd.json', JSON.stringify(bdd, null, 4), (err) => {
        if (err) message.channel.send(`Une erreur est survenie !`);
    });
}

Waiting for the debugger to disconnect...
internal/modules/cjs/loader.js:888
throw err;
^

Error: Cannot find module '.bdd.json'
Require stack:

  • c:\Users\sandr\Documents\AtlanticaBotDiscord\index.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:885:15)
    at Function.Module._load (internal/modules/cjs/loader.js:730:27)
    at Module.require (internal/modules/cjs/loader.js:957:19)
    at require (internal/modules/cjs/helpers.js:88:18)
    at Object.<anonymous> (c:\Users\sandr\Documents\AtlanticaBotDiscord\index.js:4:13)
    at Module._compile (internal/modules/cjs/loader.js:1068:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
    at Module.load (internal/modules/cjs/loader.js:933:32)
    at Function.Module._load (internal/modules/cjs/loader.js:774:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12) {
    code: 'MODULE_NOT_FOUND',
    requireStack: [ 'c:\Users\sandr\Documents\AtlanticaBotDiscord\index.js' ]
    }
peak cedar
#

@opal harnesssa detect

#

pas

cyan iron
#

Tu ne peux pas faire .bdd.json

peak cedar
#

const bdd = require("./bdd.json");

#

@opal harness

cyan iron
#

Voilà

#

Tout dépend où est placé ton fichier

peak cedar
#

@cyan ironj'ai une question en deuspi

cyan iron
#

Dit ? T'as réussi ton truc ?

opal harness
#

Att je test

peak cedar
#

sa existe des variable utilisable dans des conditions differente ?

cyan iron
#

C'est à dire ?

peak cedar
#

    if (message.content.startsWith("!pds")) {
        message.delete()
        var d = new Date();
        var date = d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate();
        var hours = d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds();
        var fullDate = date + ' ' + hours;

        let pds = new Discord.MessageEmbed()
            .setTitle("Info sur le  Service de " + message.author.username)
            .setColor(rdmColor())
            .setDescription("Prise de service a : " + fullDate)
            .setFooter("𝙎𝙘𝙥𝙙 - 𝙥𝙙𝙨")

        let msg = await message.channel.send(pds)


    }



    if (message.content.startsWith("!fds")) {
        message.delete()
        var d = new Date();
        var date = d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate();
        var hours = d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds();
        var fullDate = date + ' ' + hours;

        let fds = new Discord.MessageEmbed()
            .setTitle("Info sur le Service de " + message.author.username)
            .setColor(rdmColor())
            .setDescription("Fin de service a : " + fullDate)
            .setFooter("𝐒𝐜𝐩𝐝 - 𝐟𝐝𝐬")

        message.channel.send(fds)



    }


#

que le msg

#

mon let msg

#

soit actif pour le fds et pds

#

faut pas que je le fasse au dessus en dehors du code des cmd ?

opal harness
#

Toujours une error

const Discord = require('discord.js');
const config = require('./config.json');
const fs = require("fs");
const bdd = require("./bdd.json");

const bot = new Discord.Client();

function Savebdd() {
    fs.writeFile("./bdd.json", JSON.stringify(bdd, null, 4), (err) => {
        if (err) message.channel.send("Une erreur est survenie !");
    });
}
#

Waiting for the debugger to disconnect...
internal/modules/cjs/loader.js:1114
throw err;
^

SyntaxError: c:\Users\sandr\Documents\AtlanticaBotDiscord\bdd.json: Unexpected end of JSON input
at parse (<anonymous>)
at Object.Module._extensions..json (internal/modules/cjs/loader.js:1111:22)
at Module.load (internal/modules/cjs/loader.js:933:32)
at Function.Module._load (internal/modules/cjs/loader.js:774:14)
at Module.require (internal/modules/cjs/loader.js:957:19)
at require (internal/modules/cjs/helpers.js:88:18)
at Object.<anonymous> (c:\Users\sandr\Documents\AtlanticaBotDiscord\index.js:4:13)
at Module._compile (internal/modules/cjs/loader.js:1068:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)
at Module.load (internal/modules/cjs/loader.js:933:32)

peak cedar
#

@opal harnessenvoiee un screen de ton fichier

cyan iron
#

json

#

ton fichier json

opal harness
#

Il est vide

cyan iron
#

Il est juste mal fait, syntax error

#

Bah voilà

peak cedar
#

😂

cyan iron
#

met {}

peak cedar
#

😭

#

je pensais que je mt louper 😂

opal harness
#

Merci les gars

cyan iron
#

de rien :)

peak cedar
#

@cyan irondcp

#

^^'

cyan iron
#

AH OK

#

MDR

#

😂

peak cedar
#

😂

cyan iron
#

Attends laisse moi relire

#

alors

#

Je vais juste up mon bot, et je suis à toi

#

Je reviens

peak cedar
#

vsy vsy

cyan iron
#

j'ai 5 erreurs à la seconde à cause du module discord-buttons

#

j'ai été obligé de le fix zebi

keen narwhal
opal harness
#

Encore désolé maintenant juste une question mais sans erreur, comment je fait en discord.js pour send un message en privé à un membre du discord ?

opal harness
blazing wadi
#

Ah nan

#

en gros tu définis ton membre

#

const member = message.mentions.users.first()

#

et après tu mets ton member.send("test")

opal harness
#

Comment je fais pour check dans ma table "ban" dans mon .json si l'id du mec qui a été envoyé sous la forme de la commande !unban <id> existe ou pas ?

#

En gros comment je check si l'id d'un mec est dans une table en JSON

oak turret
#

si tu veux check des datas dans du json

#

tu peux le faire avec fs

keen narwhal
#

Pouvez vous m'aider please

#

Bonjour

blazing wadi
#

Fait gaffe bro des mecs peuvent te report pour modification de ton Discord Client

#

Conseil d'ami supprime ton screen ou fait le sans le thème

cyan iron
#

Hop c'est report

blazing wadi
keen narwhal
cyan iron
#

C'est du second degré hein

keen narwhal
#

ha

cyan iron
#

🙄

keen narwhal
#

sorry

cyan iron
#

D'où le " kappo "

keen narwhal
#

et sinon pour mon probléme ? x)

cyan iron
lapis onyx
#

Yo, quelqu'un pourrait m'aider svp ? 🙂

hazy mirage
#

Yo

#

Tu n’es pas dans un callback async

#

Voilà pourquoi cela te pete une erreur

lapis onyx
#

et comment je pourrais faire du coup ?

hazy mirage
#

Il suffit juste de mettre async devant validator 🤨

lapis onyx
#

oups, va falloir vraiment que je me penche sur await et async

#

mais merci du coup !

keen narwhal
slim anvil
#

Non les forEach ne sont pas asynchrone

#

Tu auras beau le mettre il passera au tour suivant requete terminé ou non en tout cas

hazy mirage
#

@lapis onyx oui c'est vrai que tu vas avoir des problèmes si tu as besoin que chaque requete se fasse bien l'une après l'autre

#

dans ce cas passe par une "reelle" boucle for

keen narwhal
#

undefined

#

et je sais pas comment faire pour le regler

#

:/

spring dock
#

et comment on est censé t'aider on ne vois même pas le bout de code qui cause cette erreur

#

🤔

cyan iron
#

Bah oui @keen narwhal donne ton code ptdr

keen narwhal
#

ha merde

#

2s

keen narwhal
cyan iron
#

Fait comme ça stp

ancient sonnetBOT
#

Pour envoyer un message avec un code il vous suffit d'entourer votre message de ceci : ```. Ainsi, pour poster votre code dans un message, vous devez faire comme ceci :

```langage
Votre code
```
Et par exemple pour un code en lua :
```lua
print("hello")
```

Le résultat sera le suivant :
Votre code
Et par exemple pour un code en lua :

print("hello")```
keen narwhal
#

okay

cyan iron
#

Et montre ton erreur aussi hein

#

Mais pas tout !

#

Que là où y'a ton erreur

keen narwhal
#
else {
            
            let channel = client.channels.cache.get(modmails["channelPerUser"][message.author.id]);

            let webhooks = await channel.fetchWebhooks()
            let webhook = webhooks.first();
            webhooks.each(async (webh) => {
                if (webh.name === "Communauté LulThy") {
                    webhook = webh;   
                }
            })```
keen narwhal
cyan iron
#

Déjà je vois le problème

#

Tu get un channel, mais c'est un user id

keen narwhal
#

c'est sa qui fous la merde ?

cyan iron
#

Bah oui

keen narwhal
#

donc la je doit changer quoi en gros

cyan iron
#

Si tu lui demandes de get un channel avec l'id d'un user c'est logique

#

Bah jsp comment fonctionne ton modmails là

keen narwhal
#

de basse ou envoi un mp

#

au bot

#

il envoi un embed

#

avec des react

cyan iron
#

Honnêtement je suis crevé je t'aiderais demain désolé ( ou alors quelqu'un va t'aider soon )

keen narwhal
#

on clique une 1 sa dépent mais il demande le sujet du ticket, et ensuite il crée un salon

#

avec un weebook

cyan iron
#

Parce-que je me rends compte que je dis de la merde en plus NotLikeThis

keen narwhal
cyan iron
#

Compliqué à expliquer mais j'ai inversé dans ma tête mdr mon cerveau il est offline là

keen narwhal
#

MDR

cyan iron
#

Donc du coup tu fais un modmail, j'en ai fait un aussi donc Je pourrais t'aider ;)

keen narwhal
#

ho, a demain alors 😉

cyan iron
#

Je fais exactement pareil en plus :)

keen narwhal
#

on s'ajoute amis ou on s'aidera ici ?

cyan iron
#

Ici

keen narwhal
#

okay 😉

spring dock
#

au dessus du "let channel......"

keen narwhal
#

Je fais sa demain j'ai tout coupe la suspisiouscat

spring dock
#

k

cyan iron
keen narwhal
#

@spring docky'a une couille dans le potage :/

slim anvil
#

.....

#

ton erreur est évidente quand il te dit tu peux "log" c'est mettre un log

#

donc comment on met un log en javascript ?

keen narwhal
#

console.log

slim anvil
keen narwhal
#

Nouvelle erreur

(node:36) UnhandledPromiseRejectionWarning: TypeError: Cannot read property '847240564604665888' of undefined
at module.exports (/home/container/events/message/message.js:214:52)
at Client.emit (events.js:376:20)
at MessageCreateAction.handle (/home/container/node_modules/discord.js/src/client/actions/MessageCreate.js:31:14)
at Object.module.exports [as MESSAGE_CREATE] (/home/container/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js:4:32)
at WebSocketManager.handlePacket (/home/container/node_modules/discord.js/src/client/websocket/WebSocketManager.js:384:31)
at WebSocketShard.onPacket (/home/container/node_modules/discord.js/src/client/websocket/WebSocketShard.js:444:22)
at WebSocketShard.onMessage (/home/container/node_modules/discord.js/src/client/websocket/WebSocketShard.js:301:10)
at WebSocket.onMessage (/home/container/node_modules/ws/lib/event-target.js:132:16)
at WebSocket.emit (events.js:376:20)
at Receiver.receiverOnMessage (/home/container/node_modules/ws/lib/websocket.js:834:20)
(Use `node --trace-warnings ...` to show where the warning was created)
(node:36) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:36) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.```
spring dock
#

modmails[« channelsPerUser »] n’est pas défini

oak turret
#

c’est toi qui a fais ton code ou ?

keen narwhal
keen narwhal
copper pagoda
#

Salut j'utilise actuellement electron et j'ai un problème dans mon app.js ça me mets que require is not defined alors que je l'utilise pour importer le module electron pour récupérer remote.

**Voici mon code : **

window.addEventListener('load', function load(event) {

    document.getElementById('app-close').onclick = function(event) {
        const remote = require('electron').remote // chargement de l'api remote 
        var window = remote.getCurrentWindow() // on récupère la fenetre courante 
        window.close() // on ferme la fenetre 
    }
})
#

.

slim anvil
#

quelle version

#

@copper pagoda

copper pagoda
#

de electron ?

slim anvil
#

Oui

copper pagoda
#

13.1.4 je crois

slim anvil
#

tu peux me montrer ou t'as init ton browserWindow stp

copper pagoda
#

dans mon main

slim anvil
#

surement oui

copper pagoda
#
function createWindow () {
  const mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    icon: 'asterisque.svg',
    movable: false,
    maximized: true,
    center: true,
    fullscreen: false
  })

  mainWindow.loadFile('index.html');

  mainWindow.on('closed', () => {
    mainWindow = null;
  });
}
#
const {app, BrowserWindow} = require('electron');
slim anvil
#

webPreferences: {
nodeIntegration: true
}

#

dans tes options de BrowserWindow

copper pagoda
#

Ah c'est pour ça je viens de comprendre

#

je l'ai supprimé car je savais pas à quoi ça servait

#

je comprends mieux maintenant

slim anvil
copper pagoda
#

Ah ça me mets toujours require is not defined

#

Avant j'avais ça sauf que j'ai voulu mettre app.js à la place j'ai essayé avec mais toujours pareil

webPreferences: {
      preload: path.join(__dirname, 'preload.js')
    }
slim anvil
#

Enfaite t'aurai du laisser la config de base car c'est intentionnel de electron de disabled le required

copper pagoda
#

Et aussi j'ai ça quand je ferme ma fenêtre

slim anvil
#

il passe donc par le preload aussi dans la config pour y avoir accès autrement

#

Oui ça c'est juste que tu essayes de re-assigner une const

copper pagoda
#

Donc je devrais remettre le fichier preload ?

copper pagoda
slim anvil
#

const toto = true
toto = "hello"

#

par exemple

copper pagoda
#

Ok parce que moi j'ai fait ça mais comment le réglé ?

function createWindow () {
  const mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    icon: 'asterisque.svg',
    movable: false,
    maximized: true,
    center: true,
    fullscreen: false,
    webPreferences: {
      nodeIntegration: true
    }
  })

  mainWindow.loadFile('index.html');

  mainWindow.on('closed', () => {
    mainWindow = null;
  });
}
slim anvil
copper pagoda
#

faut que je remettes le const en faites

slim anvil
#

je vois pas comment je peux être plus clair sans te donner exactement la réponse à ton problème

#

et les 2 screens juste avant qui sont ou tu le fais

copper pagoda
#

j'ai toujours pas compris

#

Maintenant dans mon code ça me mets que remote est undefined

spring dock
#

peut-être éviter de l'utiliser du coup de toute façon

copper pagoda
#

et c'est quoi ipc

#

enfin je sais mais je sais pas l'utiliser

spring dock
#

tiens regarde la réponse

#

ça devrait t'aider je pense

#

ipcRender et ipcMain c'est juste des emetteurs d'événements

#

donc concrètement, dans ton main.js tu va définir un event close par exemple et après tu va l'appeler dans ton onclick

copper pagoda
#

J'ai tout compris maintenant je test !

#

Par contre j'aimerai qu'il ferme la fenêtre mais pas l'application comment faire ?

spring dock
#

comment ça

#

pas compris

copper pagoda
#

Je voudrais que quand on appuie sur le bouton ça ferme la page mais pas l'application qu'on puisse la rouvrir après

#

quel soit lancer tout le temps en gros

spring dock
#

ah comme discord genre ça reste ouvert en arrière plan quoi

copper pagoda
#

Ouais mais on voit pas la page en gros je veux faire avec Discord quand je réagis avec un émoji ça ouvre l'application mais pour ça il faut que ça soit tout le temps allomer parce que sinon ça marcheras pas

spring dock
#

app.dock.hide()

#

ah mais att y a d'autres trucs à faire aussi

#

tiens au pire l'article

copper pagoda
#

merci

#

ça me mets que hide est undefined

opal harness
#

Yo,
Je voudrais savoir avec le module discord.js comment je pourrais faire pour send un message en privé à la personne qui la écrit sur mon serveur ?

oak turret
#

message.author.send("message");

dire latch
#

C'est quoi niveau 0 ? 🤔

#

Ouah la maturité

lone flax
slim anvil
dire latch
#

Ah le mec a supprimé @slim anvil mais c'est quoi niveau 0 ?

#

On s'amuse avec mes rôles jreconnais

#

👀

slim anvil
#

On a ajouté un système de level, et du coup niveau 0 = quand t'as pas encore de level
non c'est le bot qui a des petites lenteur, du coup il ta delete le 0 et t'a donné le role niveau 1 :-)

dire latch
#

Ah 😅

#

Thx ducoups

#

Et ya plus de rôle développeur ducoups ? 🤔

slim anvil
#

Si mais plus les roles débutant

dire latch
#

Oh remboursé !

slim anvil
#

suffit de passer intermédiaire ou + 👀

dire latch
#

Flemme de faire les tests 😅

slim anvil
#

dommage :-(

dire latch
#

Gne Gne

#

Faut faire quoi pour les tests au juste ?

spring dock
#

envoyer tes projets

#

et pitetre passer le test technique mais ça c'est enzo qui vois si tu le passes ou pas

dire latch
#

Jcroyais que sa serais un exercice 😔

slim anvil
#

ça peut aussi être un exercice si tu veux

#

On peut faire le mini test technique déjà pour voir, il est assez décisif ce sont des questions facile puis qui augmente un peu en niveau

#

et aussi un projet si t'as envie assez rapide

dire latch
#

Mais c'est du Javascript en général ?

slim anvil
#

Oui

dire latch
#

Ah ba c'est dead mdr

spring dock
#

Pourquoi

slim anvil
#

bah c'est les bases hein

dire latch
#

Jfais que du bot en js et vite fais du js en web

slim anvil
#

Bah c'est la même chose

spring dock
#

bah c'est bon

slim anvil
#

ca change pas grand chose

spring dock
#

🤔

dire latch
#

J'ai du temps pour le faire ?

#

Car jsuis sur tél en ce moment

slim anvil
#

Les questions déjà c'est du live, donc en audio discord et en partage pour vérifier

#

et c'est une question parfois sans besoin de code, et d'autre ou c'est vraiment 1 ligne de code

dire latch
#

Ok

keen narwhal
#

🙂

#

re

#

@keen igloo y'a rien qui marche niveau dl

keen igloo
#

Regardes ici

keen narwhal
#

donc je pensais que ça venez de mon pc mais jsp

keen igloo
#

Bon c'est en portugais donc traduis en français mdr

keen narwhal
#

oe mdr

keen igloo
keen narwhal
#

ok merci

keen igloo
#

T'as pas vraiment cherché mdr j'ai copié collé ton erreur sur Google y'avais 10 résultats au moins

keen narwhal
#

j'ai chercher en français/anglais j'avoue

#

pas en portugais

keen igloo
#

j'ai cherché en français

#

et j'ai trouvé du portugais bon sans doute ils ont construit les packages

lapis onyx
#

Salut, avec jsonwebtoken il n'est pas possible de directement update la date d'expiration d'un token ?

#

si je comprends bien je dois obligatoirement faire une route "refresh_token" qui prend un token valide et en renvoie un nouveau ?

dark leaf
copper pagoda
#

Salut j'aimerai apporté des informations de mon site à mon bot j'utilise actuellement express mais je sais pas trop comment m'y prendre car dès que je met un require ça me met qu'il est undefined.

full flare
#

Plusieurs solutions existent, je vais t’en citer 2.
Soit tu peux démarrer donc application JS à partir de ton bot et donc tu pourras récupérer la variable client sur ton site. Ou alors tu peux aussi démarrer une API avec ton bot et toi tu récupères les infos en faisant des requêtes de ton site à ton bot.

Et qu’est ce qui est underined dis moi tout

#

@copper pagoda

copper pagoda
slim anvil
#

🤔 juste par curiosité tu es bien sur du code côté serveur ? car dans le browser oui require ne fonctionne pas

copper pagoda
slim anvil
#

?? donc du coup tu essayes d'executer ton api express via le browser ?

copper pagoda
#

Non dans mon bot

slim anvil
#

Oui ok, et montre du coup ton api pour voir

copper pagoda
#

Tiens mon arborescence

#

mais mon api je la vois dans le package.json ?

slim anvil
#

Bah non

#

mais pourquoi t'as un index.html dans ton api ?

#

c'est bien ce que je dis tu l'execute coté browser donc oui evidemment

copper pagoda
copper pagoda
slim anvil
#

Montre ton code, car je comprend pas

copper pagoda
#

Dans l'index.js

// App du bot
app.get('/', async (req, res) => {
  const indexHtml = await index();

  res.send(indexHtml);
});

const img = 'C:/Users/jimmy MARTEAU/Desktop/Programmation/electron vérification ytb-str/killer-jumper-bot-2.0/img/',
src = 'C:/Users/jimmy MARTEAU/Desktop/Programmation/electron vérification ytb-str/killer-jumper-bot-2.0/src/';

app.use('/img', express.static(img));
app.use('/src', express.static(src));

const listener = server.listen(8000, () => {
  console.log("L'app écoute le port " + listener.address().port);
});
#

Dans l'index_html.js

const { readFile} = require('fs');
const {promisify} = require('util'),
readFileAsync = promisify(readFile);

const READ_OPTIONS = { encoding: 'UTF-8'}
const INDEX_URL = 'C:/Users/jimmy MARTEAU/Desktop/Programmation/electron vérification ytb-str/killer-jumper-bot-2.0/src/index.html';

module.exports = async () => {
    const contenue = await readFileAsync(INDEX_URL, READ_OPTIONS);

    return contenue;
}
slim anvil
#

et ce index_html.js est appelé ou

copper pagoda
#

dans l'index.js

#

il correspond à la fonction index();

half osprey
#

Bonjour, est ce que quelqu'un a une page de doc/un tuto complet pour les commandes slashs ?

timid loom
half osprey
#

Merci

full flare
#

(Dans les requetes en fait)

copper pagoda
#

Bah en faites j'aimerai que quand je clique sur le bouton suivant ça fasse ce code là en important la variable data

button_suivant.addEventListener('click', () => {
    if(page_twitch.style.display == "none" && page_youtube.style.display == "block"){
        // Demander si il a une chaine Twitch
        var data = {};
        if(document.getElementById('youtube-pseudo-discord').value){
            data.pseudo_discord = document.getElementById('youtube-pseudo-discord').value;
        }
        if(document.getElementById('youtube-name-channel').value){
            data.name_youtube = document.getElementById('youtube-name-channel').value;
        }
        if(document.getElementById('youtube-sub-number').value){
            data.sub_youtube = document.getElementById('youtube-sub-number').value;
        }
        if(document.getElementById('youtube-url-channel').value){
            data.url_youtube = document.getElementById('youtube-url-channel').value;
        }
        var region = document.getElementById('region').value;
        if(region == "aucune"){
            data.region = "Indéfini";
        }
        if(region != "aucune"){
            data.region = region;
        }
        page_youtube.style.display = "none";
    }
    if(page_twitch.style.display == "block" && page_youtube.style.display == "none"){
        // Demande si il a une chaine Youtube
    }
})
#

Mais du coup je sais pas trop comment m'y prendre

full flare
copper pagoda
#

Oui

full flare
copper pagoda
#

Bah oui je sais je demande une alternative

#

Là j'essaye de récupérer les valeurs mais ça me met rien du tout alors que sur les tutos ils font pareils je ne comprends pas trop parce que c'est pas logique

const pseudo = document.getElementById('youtube-pseudo-discord').value;
const Nom = document.getElementById('youtube-name-channel').value;
const sub = document.getElementById('youtube-sub-number').value;
const url = document.getElementById('youtube-url-channel').value;
const region = document.getElementById('region').value;
full flare
#

Tu confonds NodeJS et Javascript
Ce n'est pas possible d'importer des modules npm dans javascript web.
Donc tu dois utiliser uniquement ce qui est natif. A la limite ce que tu peux faire, c'est créer une API avec express ou autre où tu mets ce que tu souhaites utiliser (module et tout), et du coté JS tu fais des requetes à cette API

#

Renseigne toi sur les API avec express et l'utilisation de fetch() avec JS 😉

copper pagoda
#

Bah ouais mais je sais pas faire ça moi

ancient sonnetBOT
#
Citation de Quentinium7976 posté dans javascript

Cliquez sur [📝](#javascript-typescript message) pour accéder au message
Renseigne toi sur les API avec express et l'utilisation de fetch() avec JS 😉

copper pagoda
full flare
copper pagoda
#

C'est déjà fait

#

<input type="number" id="youtube-sub-number" aria-describedby="token-addon" class="form-control form-control-dark"
placeholder="365" required="required">

#

exemple

full flare
#

Regarde fait ça et va en console :

<input type="text" value="Salut" id="test">
<script>
console.log(document.getElementById('test').value)
</script>$
#

Si il y a rien de base comme valeur dans ton input c'est normal que tu n'es rien qui s'affiche 😉

copper pagoda
#

Oui ça mettra le salut

copper pagoda
#

Bah oui mais moi je voudrai afficher ce que je rentre dans la case et ça fait pas ça

full flare
# copper pagoda Ah ok ça par contre je savais pas

Fais une boucle mec et écris dans l'input. Crée un nouveau fichier html et colle ça

<input type="text" value="Salut" id="test">
<script>
setInterval(function() {
  console.log(document.getElementById('test').value)
}, 2000)
</script>
full flare
copper pagoda
#

Oui mais comment faire pour mettre la valeur de ce qu'on met dans la case ?

full flare
full flare
copper pagoda
ancient sonnetBOT
#
Citation de Quentinium7976 posté dans javascript

Cliquez sur [📝](#javascript-typescript message) pour accéder au message
Fais une boucle mec et écris dans l'input. Crée un nouveau fichier html et colle ça

<input type="text" value="Salut" id="test">
<script>
setInterval(function() {
  console.log(document.getElementById('test').value)
}, 2000)
</script>
full flare
#

Heu nn

#

att

ancient sonnetBOT
#
Citation de Quentinium7976 posté dans javascript

Cliquez sur [📝](#javascript-typescript message) pour accéder au message
Je crois que ça fonctionne aussi ça :

<input type="text" value="Salut" id="test" onchange="console.log(document.getElementById('test').value)">
copper pagoda
# ancient sonnet

ça marche pas j'ai essayé et ça me retourne toujours la valeur dans le value

copper pagoda
#

j'ai mis 365 dans value j'appuie sur le submit et ça me retourne 365 alors que je mets 5465

full flare
full flare
ancient sonnetBOT
#
Citation de Quentinium7976 posté dans javascript

Cliquez sur [📝](#javascript-typescript message) pour accéder au message
Je crois que ça fonctionne aussi ça :

<input type="text" value="Salut" id="test" onchange="console.log(document.getElementById('test').value)">
copper pagoda
#

Mais pourquoi pour moi ça laisse la valeur ?

full flare
copper pagoda
#

Ah bah c'est bon là c'est bizarre tout à l'heure ça marchais pas

full flare
#

Ah 😋

#

Est ce que tu as d'autres questions ou j'ai su répondre à tout ? @copper pagoda

copper pagoda
copper pagoda
#

html ou js ?

full flare
#

ton form

copper pagoda
#

Voilà

full flare
copper pagoda
#

Bah j'ai pas mis de href ?

full flare
#

Pas ça

#

Il y a 2 problème #Incide

copper pagoda
#

Ah j'ai vu

#

Euh bah déjà y a le <\form>

#

et la seconde je sais pas

full flare
copper pagoda
#

Oki

#

parce que en faites moi j'utilise une façon où je change de section en gros j'ai une première section avec l'accueil, une autre avec le questionnaire youtube et un autre avec le questionnaire twitch

timid loom
#

coup dur

copper pagoda
#

???

#

Qu'est ce qu'il fait ?

timid loom
#

renvoie sans le lien d'invitation

#

on les suppr auto

copper pagoda
#

Ah oui le lien XD

full flare
#

Mais merde tu l'as cb de fois ptn

timid loom
#

haha

copper pagoda
full flare
#
<form style="display: block;">
        <div>
          <div>
            <h1 class="title">
              Youtuber/Streamer
            </h1>
            <h3 class="subtitle" id="youtubeSubtitle">
              Répond à ce questionnaire !
            </h3>
            <h4 id="error_text" style="display: none; color: #e62e09;">
              Tu dois remplir toutes les cases !
            </h4>
            <h5>
              Pseudo Discord :
            </h5>
            <input id="youtube-pseudo-discord" aria-describedby="token-addon" class="form-control form-control-dark"
            placeholder="Killer Jumper#8729" required="required" type="text">
            <h5>
              Nom de la chaine :
            </h5>
            <input id="youtube-name-channel" aria-describedby="token-addon" class="form-control form-control-dark"
            placeholder="Killer Jumper" required="required" type="text">
            <h5>
              Nombre d'abonné :
            </h5>
            <input type="number" id="youtube-sub-number" aria-describedby="token-addon" class="form-control form-control-dark"
            placeholder="365" required="required" value="365">
            <h5>
              Lien youtube :
            </h5>
            <input id="youtube-url-channel" aria-describedby="token-addon" class="form-control form-control-dark"
            placeholder="https://youtube.com/channel/killerjumper" required="required" type="url">
            <h5>
              Région :
            </h5>
            <select name="region" id="region">
              <option value="aucune">Aucun</option>
              <option value="europe">Europe</option>
              <option value="amerique-du-nord">Amerique du nord</option>
              <option value="amerique-du-sud">Amerique du sud</option>
              <option value="oceanie">Oceanie</option>
              <option value="asie">Asie</option>
              <option value="afrique">Afrique</option>
            </select>
          </div>
        </div>
        <div class="footer">
          <button type="submit" id="add-bot-token-btn"
            class="btn btn-primary button-right-reduce">Suivant</button>
          <a id="retour" class="center text-white">
            Retour
          </a>
            <a href="https://tondiscord.dis/wZVYA8vQXk" target="_BLANK" style="width: 40px; height: 40px; 
            margin-right: 230px; margin-top: -5px;">
              <img src="./img/animation_200_kqpg273f.gif" style="width: 40px; margin-right: 230px; border-radius: 10px;">
            </a>
        </div>
      </form>

<script>
const t = new URLSearchParams(document.location.search).get("region")
console.log(t)
</script>
timid loom
#

envoie le fichier direct en vrai

full flare
#

Voilà

#

En fait vous détectez .gg/

timid loom
#

les .com aussi

#

on détecte les liens d'invitation discord en fait

#

si ça peut apparaître sur discord, c'est supprimé

full flare
#

Mmmmh je vois

copper pagoda
#

Et du coup tu as fait quoi ?

full flare
#

En fait le script en bas permet de récupérer en console quand tu as fait Suivant

copper pagoda
#

Le problème c'est que ça me reset la page et vu que je modifie des sections bah ça me fait tout perdre les console.log

full flare
#

Et ?

copper pagoda
#

Bah je veux pas que ça me fasse ça je veux que ça change rien

full flare
#

Dac

#
<form style="display: block;">
        <div>
          <div>
            <h1 class="title">
              Youtuber/Streamer
            </h1>
            <h3 class="subtitle" id="youtubeSubtitle">
              Répond à ce questionnaire !
            </h3>
            <h4 id="error_text" style="display: none; color: #e62e09;">
              Tu dois remplir toutes les cases !
            </h4>
            <h5>
              Pseudo Discord :
            </h5>
            <input id="youtube-pseudo-discord" aria-describedby="token-addon" class="form-control form-control-dark"
            placeholder="Killer Jumper#8729" required="required" type="text">
            <h5>
              Nom de la chaine :
            </h5>
            <input id="youtube-name-channel" aria-describedby="token-addon" class="form-control form-control-dark"
            placeholder="Killer Jumper" required="required" type="text">
            <h5>
              Nombre d'abonné :
            </h5>
            <input type="number" id="youtube-sub-number" aria-describedby="token-addon" class="form-control form-control-dark"
            placeholder="365" required="required" value="365">
            <h5>
              Lien youtube :
            </h5>
            <input id="youtube-url-channel" aria-describedby="token-addon" class="form-control form-control-dark"
            placeholder="https://youtube.com/channel/killerjumper" required="required" type="url">
            <h5>
              Région :
            </h5>
            <select name="region" id="region" value="">
              <option value="aucune">Aucun</option>
              <option value="europe">Europe</option>
              <option value="amerique-du-nord">Amerique du nord</option>
              <option value="amerique-du-sud">Amerique du sud</option>
              <option value="oceanie">Oceanie</option>
              <option value="asie">Asie</option>
              <option value="afrique">Afrique</option>
            </select>
          </div>
        </div>
        <div class="footer">
          <button type="submit" id="add-bot-token-btn"
            class="btn btn-primary button-right-reduce">Suivant</button>
          <a id="retour" class="center text-white">
            Retour
          </a>
            <a href="https://tondiscord.dis/wZVYA8vQXk" target="_BLANK" style="width: 40px; height: 40px; 
            margin-right: 230px; margin-top: -5px;">
              <img src="./img/animation_200_kqpg273f.gif" style="width: 40px; margin-right: 230px; border-radius: 10px;">
            </a>
        </div>
      </form>

<script>
const r = new URLSearchParams(document.location.search).get("region")
if (r) {document.getElementById('region').value = r}
</script>
#

Voilà !! @copper pagoda

copper pagoda
#

Mais je comprends pas ta fin de code enfaites

full flare
#

Quand tu cliques sur suivant, ça va mettre dans l'URL des paramètres (dont ?region=oceanie par exemple). Ce que je fais c'est que quand tu cliques sur Suivant, ça va relancer le JS en bas qui va rechercher region dans l'URL et si ce paramètre existe, je le mets dans le select (comme ça, ça ne perd pas les données)
Att je te fais une petite vidéo