#javascript-typescript

1 messages · Page 6 of 1

visual sequoia
#

Du coup tu a bien rest d'installer?

hasty shoal
#

oui

visual sequoia
#

Étrange

#

Jsp quoi te dire de plus désolé

hasty shoal
#

c'est ouf que les options ne veuillent pas marcher

#

merci quand même en tout cas

hasty shoal
#

Je repose la question d'une autre manière si quelqu'un a une idée ça serait génial. En tappant une / commande dans un channel, les options n'apparaissent pas, pourtant j'ai bien ces lignes et je ne vois pas l'erreur qui les empêchent de s'afficher :

    bot.commands.forEach(async command => {
        let slashcommand = new Discord.SlashCommandBuilder()
        .setName(command.name)
        .setDescription(command.description)
        .setDMPermission(command.dm)
        .setDefaultMemberPermissions(command.permission === "" ? null : command.permission)

        if(command.options?.lenght >= 1){
            for(let i = 0; i < command.options.lenght; i++) {
                slashcommand[`add${command.options[i].type.slice(0,1).toLowerCase() + command.options[i].type.slice(1, command.options[i].type.lenght)}Option`](option => option.setName(command.options[i].name).setDescription(command.options[i].description).setRequired(command.options[i].required))
            }
        }
        await commands.push(slashcommand)
    }); 

Merci !

timid loom
#

Déjà y a un souci t'as écris lenght au lieu de length (normalement NodeJS aurait dû te faire une erreur)
Et puis t'en fais quoi de ton array commands là dans lequel tu push tes commandes

wraith wren
#

Salut, j'ai un petit soucis en gros je veux recharger du contenu sans actualiser avec jquery, mais quand je clic sur mon bouton et que ça se recharge le deuxieme clic ne fonctionne pas

#
$(document).ready(function(){


    $('#arrow-right').on('click', function(){
        console.log('tet');
        //mettre la valeur de updateEpisode sur lastarticle fournis par le controller
        let episodes = $('#lastepisode').html();

        episodes = JSON.parse(episodes);
        console.log(episodes)
        // Recuperer pour chaque episode tout les éléments

        let updateEpisode = [];
        for (let i = 0; i < episodes.length; i++) {
            let newEp = {};
            //changer le anime_name de newEp
            newEp.anime_id = episodes[i].anime_id;

            //changer le anime_poster de newEp
            newEp.posters = episodes[i].posters;

            // Recupere tmdb id
            newEp.tmdb_id = episodes[i].anime_tmdb_id;
            newEp.id = episodes[i].id;
            // revupere titre
            newEp.title = episodes[i].title;
            newEp.created_at = episodes[i].created_at;
            newEp.season_number = episodes[i].season_number;
            //changer le episode_number de newEp
            newEp.episode_number = episodes[i].episode_number;
            console.log(newEp.episode_number);

            updateEpisode.push(newEp);
        }
        console.log(updateEpisode);

        // fetch_customer_data(JSON.stringify(updateEpisode));
        //Requete ajax pour envoyer les donner
        $.ajax({
            url:"{{ route('indexanime') }}",
            method:'GET',
            data:{updateEpisode:updateEpisode},
            dataType:'json',
            success:function(data)
            {
                $('#animebox').html(data.table_data);
                console.log(data.last10episodes);
                $('#lastepisode').html(data.last10episodes);
            }
        })
    });


   });```
hasty shoal
timid loom
stiff bloom
#

Bonjour, j'ai une question a poser concernant l'API de Spotify, je souhaitais déjà savoir si il ya des devs qui ont eu l'occasion de taffer dessus

slim drift
hasty shoal
unborn knot
#

Hello j'ai cette erreur Error: ENOENT: no such file or directory, scandir '../../events'

avec ceci javascript const eventFolders = fs.readdirSync("../../events");

le fichier dans lequel j'ai executé le code ce trouve dans functions/handlers, et j'aimerais accéder à events/client mais pour une raison spécifique cela ne marche pas pourtant ../ permet de revenir d'un dossier en arrière nan?

dire latch
#

@unborn knotC'est const eventFolders = require("../../events");

unborn knot
dire latch
#

Car c'est pas bon chemin d'accès ?

unborn knot
#

mon code est executer ici

#

pour moi c'est bon? enfin je pense

dire latch
#

Sinon, aide toi de l'autocomplétions

unborn knot
#

c'est ce que j'ai fait :/

red torrent
hasty shoal
#

bonsoir, est ce que quelqu'un aurait 2 minutes pour passer m'aider dans mon vocal, j'avais demandé hier mais je me dis que plus j'ai d'avis plus j'ai de chances de le résoudre. Merci !

unborn knot
wraith wren
#

Salut, j'ai un petit soucis

#

J'utilise un .on('click' en jquery

#

mais la function que je passe après

#

je peux l'utiliser que une seule fois

#

si je re clic bah y'a rien qui se passe

true ravine
#

Hello, on peut voir le code ?

open python
wraith wren
ancient sonnetBOT
#
Citation du message de Xnern#4245 posté dans #javascript

quoteStart ```js
$(document).ready(function(){

$('#arrow-right').on('click', function(){
    console.log('tet');
    //mettre la valeur de updateEpisode sur lastarticle fournis par le controller
    let episodes = $('#lastepisode').html();

    episodes = JSON.parse(episodes);
    console.log(episodes)
    // Recuperer pour chaque episode tout les éléments

    let updateEpisode = [];
    for (let i = 0; i < episodes.length; i++) {
        let newEp = {};
        //changer le anime_name de newEp
        newEp.anime_id = episodes[i].anime_id;

        //changer le anime_poster de newEp
        newEp.posters = episodes[i].posters;

        // Recupere tmdb id
        newEp.tmdb_id = episodes[i].anime_tmdb_id;
        newEp.id = episodes[i].id;
        // revupere titre
        newEp.title = episodes[i].title;
        newEp.created_at = episodes[i].created_at;
        newEp.season_number = episodes[i].season_number;
        //changer le episode_number de newEp
        newEp.episode_number = episodes[i].episode_number;
        console.log(newEp.episode_number);

        updateEpisode.push(newEp);
    }
    console.log(updateEpisode);

    // fetch_customer_data(JSON.stringify(updateEpisode));
    //Requete ajax pour envoyer les donner
    $.ajax({
        url:"{{ route('indexanime') }}",
        method:'GET',
        data:{updateEpisode:updateEpisode},
        dataType:'json',
        success:function(data)
        {
            $('#animebox').html(data.table_data);
            console.log(data.last10episodes);
            $('#lastepisode').html(data.last10episodes);
        }
    })
});

});``` quoteEnd

➜ [Voir le message original](#javascript-typescript message)

true ravine
#

Ton arrow-right est il contenu dans le html que tu remplaces ?

wraith wren
#

faut pas ?

true ravine
#

Alors remplace "$('#arrow-right').on('click', function(){"

#

Par :

#
$('body').on('click', '#arrow-right", function(){```
true ravine
#

Mais le body ne disparaît jamais

wraith wren
#

ça parrait logique en plus mais j'y ai pas pensé

#

parcontre j'ai un autre petit soucis la je sais pas du tout d'ou ça vient

#

quand je clic ça me séléctionne le contenu tout seul

#

celui qui apparait

true ravine
#

Capture ?

wraith wren
#

quand je clic sur la fleche de droite

#

ça me change le contenu et j'ai le text séléctionné

true ravine
#

En fait tes arrows ne devraient pas être remplacées

#

J'pense que c'est à cause de ça que ça fait ça

wraith wren
#

dacc, je vais essayer de les sortir

wraith wren
true ravine
#

^^

weak grove
#

Salut, j'utilise discord js v14 et je rencontre un problème, j'essaye d'utiliser l'event interactionCreate sauf que rien ne ce passe, voici mes intents:
GatewayIntentBits.DirectMessages,
GatewayIntentBits.Guilds,
GatewayIntentBits.GuildBans,
GatewayIntentBits.GuildMessages,
GatewayIntentBits.MessageContent,

client.on('interactionCreate', (interaction) => {
    console.log(interaction)
})
weak grove
#

aucune erreur

copper pagoda
#

J'suis pas sur que d'avoir les intents vont aider.

dire latch
#

@weak groveIl faut créer des interactions pour ça ducoups

#

Si tu n'as rien créer, c'est normal qui ne se passe rien

dire latch
weak grove
#

j'ai suivis la doc de discord il m'indique un exemple

client.on('interactionCreate', async interaction => {
    if (!interaction.isChatInputCommand()) return;

    if (interaction.commandName === 'ping') {
        await interaction.reply({ content: 'Pong!', ephemeral: true });
    }
});
#

sauf que ça ne marche pas non plus

dire latch
#

Jsp alors

weak grove
#

Ok c'est good je viens de trouver j'avais oublier de créer mon intéraction avec rest

red torrent
#

C'est la commande que tu avais oublié de créer

#

Une interaction c'est le résultat d'une action qu'effectue l'utilisateur avec un composant

#

Que ce soit un menu, un bouton, un modal ou bien une commande

blissful hemlock
#

Bonjour ! je n'arrive pas à faire envoyer un message en éphémère, qqun pourrait m'aider ?

sharp grail
#

interaction comprenant les commands built-in discord (user, message, slashl), messages components : button, select menu et modal

true ravine
#

Hello. J'ai une calculette en overlay de ma page. Ya un eventListener keydown sur le bloc de cette calculette permettant la saisie au clavier. Comment faire pour que quand on clique sur le bloc de la calculette (pas un bouton), cela délcenche la réception de la saisie ?

true ravine
blissful hemlock
wraith wren
#

Salut, en gros j'ai fais une api pour voir si quelqu'un a vu un episode, donc quand on charge la page d'un épisode on fait la requête mais c'est plutôt long je sais pas comment regler le soucis si quelqu'un a une idée

true ravine
#

Salut. La requête pour un seul épisode est longue ?

wraith wren
true ravine
#

Tu lis direct des pages html ?

wraith wren
#

en gros le site a pas d'api

true ravine
#

Une seul pour un épisode ou plusieurs ?

wraith wren
true ravine
#

Tu lis cette url juste pour avoir l'info que la personne a vu ou non l'épisode ?

wraith wren
#

mais apre

#

genre je peux avoir

#

tout les episodes de la saison

true ravine
#

Comment ça après ?

#

Ah

wraith wren
#

non

true ravine
#

j'ai compris lol

wraith wren
#

genre c'est une autre solution

#

mais du coup

true ravine
#

Donc,

wraith wren
#

c'est beaucoup plus long

#

donc je sais pas vraiment

true ravine
#

Tu affiches dans ta page l'épisode, dont tu as toutes les infos sauf l'info de s'il a été vu ?

wraith wren
#

bah en gros

#

ya une appli c'est TV time

#

c'est pour suivre son avancé sur des séries

#

et on veut faire que sur la page de l'épisode

#

on puisse mettre vu depuis le site sur l'appli

#

mais du coup

#

pour le bouton je veux verifier qu'il soit deja vu ou pas pour changer la couleur ou agir différement

true ravine
#

Oui mais ce qui ralentit ton chargement en fait, c'est juste ton besoin d'avoir cette info de vu ou non ?

wraith wren
#

bah ouai

#

en gros c'ets ça

true ravine
#

Je vois deux pistes

#

Afficher la page sans l'info, et charger l'info après le chargement de la page,

true ravine
#

Voir si c'est long à cause du chargement de l'url ou si c'est ton traitement derrière pour récup l'info

wraith wren
#

il faut les identifants

#

et la serie et l'épisode

#

si on met pas les identifiant

#

la requete se fait en 0.2s

#

mais retourne forcement false pcq y'a pas de compte qui est lié

#

parcontre quand on a le compte on est a 1.5s de requête

#

donc la c'est problèmatique

true ravine
#

Ah donc c'est la requete elle-même qui est si longue arf

#

La requête vers TV time on est d'accord ?

#

Pas ton api

wraith wren
#

ouai c'est ça

#

pcq

#

pour chaque requête

#

ça se redirige vers /login

#

se connecte

#

va sur la page

#

recupere le text d'une div

#

et renvoie

true ravine
#

🤔

#

Quel outil "navigue" ainsi sur le site ?

wraith wren
#

attend je peux t'envoyer l'api que j'ai récupéré de base

#

et j'ai refais une api par dessus pcq fallait un backend et tout c'est compliqué

true ravine
#

ok, je peux voir ton code pour l'affichage de l'épisode et tout le tralala ?

#

Voir si j'pourrais optimiser

wraith wren
#

ou alors je t'envoie un screen

true ravine
#

Screen ça devrait aller

wraith wren
#

mais le code pour scrap il est dans le src et episode dans le git que j'ai envoyé plus haut

true ravine
#

Ah mais c'est c'est pour afficher une liste d'épisodes non ?

wraith wren
#

autant pour moi j'ai envoyé la mauvaise

true ravine
#

Un truc que je suis pas sûr de comprendre. Tu as une BDD avec les données des séries/épisodes, ou tout est chargé à chaque fois depuis le site ?

wraith wren
true ravine
#

oki

#

Faudrait séparer requêtes vers le site et traitement derrière

#

En fait faire afficher juste le temps des requêtes vers le site pour voir si c'est long

#

Dans ta console serveur

wraith wren
#

j'ai essayé avec postman

#

et c'est 1.5s

true ravine
#

Sinon tu te connectes à chaque fois, j'pense pas que ce soit nécessaire

wraith wren
#

bah le truc c'est que ça sera des utilisateurs différents sur l'api

#

donc je peux pas laisser connecté

true ravine
#

Ok

#

Et pkoi tu requêtes la liste des épiosdes et pas direct l'épisode ?

wraith wren
#

non la je requête direct l'épisode

#

je prend l'id de la série et de l'épisode

true ravine
#

Tu peux faire un truc

#

Tu laisses connecté

#

Et tu déco que si l'utilisateur de la nouvelle requête est différent

wraith wren
#

ouai pas bête

true ravine
#

Et en même temps tu es sûr que via ton serveur tu peux pas avoir plusieurs sessions à la fois ?

wraith wren
#

bah je sais pas trop je sais pas comment ça marche

true ravine
#

A part ça, comme je disais, charger l'info qui te manque uniquement après avoir affiché la page

wraith wren
true ravine
#

Ta variable tvtime vient d'où ?

#

Tu peux ptet en avoir une différente par session

wraith wren
#

const tvtime = require('tvtime')

#

let tvtime = require('tvtime-api');

#

mais apres

#

le problème c'est que ça stock les cookie du compte dans un fichier quoi...

true ravine
#

ça doit pas être très lourd si ?

#

Ah ais faudrait pouvoir avoir des fichiers différents par utilisateur

unborn knot
#

Salut, j'aimerais pouvoir savoir si une valeur récupérer dans ma bdd existe bien pour pouvoir ensuite effectué une action dessus, j'ai donc fait ceci

     connection.query('SELECT firstname, lastname FROM `users` WHERE `identifier` = ? LIMIT 1', [identifiant], function(error, results, fields) {
        console.log(!typeof results[0] === "undefined");
        if (!typeof results[0] === "undefined") {
            return interaction.reply({content: ":error_1: L'identifiant n'existe pas", ephemeral: true});
        } else {
            const firstname = results[0].firstname;
            const lastname = results[0].lastname;
            connection.query("DELETE FROM `users` WHERE `identifier` = ?", [identifiant], function(error, _) { // Need to make one query to delete everything 
                if (error) throw error;
                return interaction.reply({content: `:good_1: Vous venez de supprimer le personnage de ${firstname} ${lastname}`, ephemeral: true});
            })
        }
    })```
#

mais j'ai cette erreur throw err; // Rethrow non-MySQL errors TypeError: Cannot read properties of undefined (reading 'firstname')

true ravine
#

Tu peux faire le check if(results.length === 1) je pense

#

ou >0

#

à la place de

#

if (!typeof results[0] === "undefined") {

wraith wren
true ravine
#

J'pense pas, tu n'es pas dans un navigateur

wraith wren
#

ou alors je créer un fichier pour chaque utilisateurs, je renvoie un token et je le stock dans la BDD

true ravine
#

Ou même pas de fichier, direct en BDD

#

Mais faudra trafiquer l'api tvtime

wraith wren
#

bah on stock deja les identifiants dans la bdd mais le problème c'est que faut quand meme utiliser la focntion login

true ravine
#

Déjà fais le test voir si ça t'avance à quelque chose de pas te reco à chaque fois

wraith wren
#

ouai

true ravine
#

Pourquoi faut quand même utiliser la fonction login ?

wraith wren
#

bah faut se connecter au compte pour avoir accés au episodes et tout

#

sinon un utilisateurs aura les série de l'autre

true ravine
#

Justement faut trouver un moyen de stocker des sessions indépendantes

#

Pour pas avoir besoin de relogger tout le temps

wraith wren
#

bah du coup

#

faudra que dans la fonction de l'api je regarder et je récupère les bon cookie pour executer la fonction au bon utilisateur

true ravine
#

Tu pourrais par ex avoir un objet de connexions

#

Ou les clés seraient le nom de chaque utilisateur

wraith wren
#

ouai mais je sais pas du tout faire ça

true ravine
#

Ouais dur faut comprendre l'api tvtime et la modifier

#

Déjà charger l'info "vu" après le chargement de la page

#

Et l'autre truc que j'avais proposé ^^

wraith wren
#

je viens de test

#

alors sans se connecter a chaque fois

#

c'est beaucoup plus rapide

true ravine
#

Ah ça tue

wraith wren
#

mais du coup je vois pas trop comment eviter ça quoi

true ravine
#

De se co à chaque fois ?

wraith wren
#

fin je sais pas si je serais capable de tout modifier

#

ouai

#

je sais pas par ou comme,cer

true ravine
#

Permettre à un utilisateur de garder sa connexion tant que personne d'autre se co, tu vois pas ?

wraith wren
#

ah ça si

#

mais je me dis que si il y a beaucoup de monde ça sera pas opti du tout

true ravine
#

OLui cette opti servira pas à grand chose

#

Un système de cache sinon

#

Ton serveur va tranquilou à fréquence régulière aller chercher l'info des épisodes vus et les stocker en BDD

wraith wren
#

ouai mais

#

on a penser a stocker ça mais imaginons

#

je regarde un episode

#

je le met comme vu

#

et je pars du site

#

entre temps je regarde un episode sur un autre site

#

et je met en vue sur l'appli

#

quand je reviens sur mon site, bah c'est pas a jour

#

pcq on aura stocker les épisodes vu avant

#

et il a changer après en passant par l'appli

true ravine
#

Dans ce cas le site va chercher l'info, après chargement de la page

wraith wren
#

ouai je pense que c'est le mieux

true ravine
#

Ton serveur commence par regarder s'il a l'info pour cet utilisateur et cet épisode, une info suffisamment à jour

wraith wren
#

après je pense qu'un système de fichier pour changer une fois qu'on a le nom de l'utilisateur c'est pas con aussi mais si y'a par exemple 1000 fichiers bah ça ve etre long quand mme

true ravine
#

Je ne vois pas pkoi ça serait spécialement long 🤔

wraith wren
#

bah 1000 fichier c'est pas long a charger ?

true ravine
#

Si t'as le login du gars dans son fichier, le fichier est trouvé instantanément

wraith wren
#

nan mais en mode

#

dans l'api ya un access.json

#

c'est la que c'est stocké

#

donc ça en créer plein pour tout le monde

#

et ensuite direct quand ya une requête on cherche le fichier correspondant

true ravine
#

C'est très rapide ça

wraith wren
#

ah ok ok je savais

#

pas

#

mais parcontre

#

imaginons

#

on charge la page et ça se charge après

#

mais encore une fois si il y a 1000 personnes qui ouvre une page en même temp, l'api agi en meme temp pour les 1000 ou c'est en liste d'attente

true ravine
#

Bonne question

#

Avcec le système chacun son fichier, il ne devrait pas y avoir de conflit, mais avec l'api tvtime actuelle, là je sais pas

wraith wren
#

ah si chacun a son fichier ça dérange pas ?

true ravine
#

Si le code est bien fait non je pense pas

#

(que ça dérange)

wraith wren
#

ouai mais faut que le code soit bien fait

#

je sais meme pas si je suis capable de le faire normalement :x

true ravine
#

c'est cette fonction qu'il faudrait modifier du coup

#

ajouter un paramètre utilisateur sans doute

#

Ou peut-être englober le tout dans une classe instanciable par utilisateur

#

^^

wraith wren
#

alors mon pote viens de me dire

#

enfaite on est sous laravel

#

et ya des eventlistener

#

et en gros dés que la personne ou la page

#

on la charge

#

et ensuite on récupère les données

#

donc y'aura un délai mais du coup c'est unique a chaque personne et ça devrait marcher mais bon c'est spécial

#

je vais essayer un peu tout

true ravine
#

Pourtant tu me montres un serveur nodejs depuis le début ^^

wraith wren
#

oui c'est mon api ça

#

on fait les requête depuis laravel à l'api

true ravine
#

A ton api ?

wraith wren
#

oui

true ravine
#

ok

wraith wren
#

avec les routes que j'ai faites

#

qui appelle les fonction de l'api tvtime

#

pcq sous laravel on peut pas utiliser le module tvtime direct c'est compliqué

true ravine
#

Mais que yait laravel là dedans je ne vois pas trop ce que ça change

#

hm

wraith wren
#

oui mais enfaite ça change rien je viens de réfléchir

true ravine
#

Ah si ptet

wraith wren
#

si l'api est surchargé bah voila quoi

true ravine
#

Mais il a ptet raison, ya probablement pas de risque d'interaction de sessions

#

quoi que je suis pas sûr de moi là

wraith wren
#

bah enfaite

#

dans tous les cas

#

c'est des sessiion différentes mais l'api peut pas répondre a 2 requête en meme temp sans changer le délai si ?

#

c'est ça que je comprend pas trop

true ravine
#

Les serveur php en principe peuvent répondre à plusieurs utilisateurs en même temps, mais pas à plusieurs requêtes de la même session utilisateur

wraith wren
#

oui mais mon api est pas sur un serveur php

#

elle est sur heroku

true ravine
#

Laravel oui

wraith wren
#

fin je sais pas du coup

true ravine
#

J'pense pas que si un utilisateur doiv attendre 1,5 s pour avoir sa page, un autre devra attendre derrière

wraith wren
#

je vais essayer de m'informer sur ça

true ravine
#

A mon avis ça colle pas que ta session tvtime soit globale à ton serveur

wraith wren
#

ouai mais j'y connais pas grand chose c'est pour ça que je me pose la question

true ravine
#

j'essaie un truc

true ravine
#

@wraith wren re, j'ai tenté de rendre instanciable l'api TvTime

#

J'ai pas testé vu que je n'ai pas de code utilisant l'api mais j'ai fait au mieux

wraith wren
true ravine
#

N'hésite pas si tu sais pas comment t'en servir

wraith wren
#

fin juste la première fois

true ravine
#

Comme je disais taleur, il te faut un objet de sessions

#

const tvTimeSessions = {}

#

Après quand t'as une requete tu regardes si tvTimeSessions[user] existe. Si oui tu l'utilises, sinon tu instancies le constructeur que j'ai créé

wraith wren
true ravine
#

Oui j'ai dit "user" comme ça

#

Par contre je réalise qu'il faut pas permettre à n'importe qui d'utiliser le use de qqun d'autre

wraith wren
#

ouai mais du coup logiquement faudra toujours que j'envoie les identifiants en paramètre au cas ou si il existe pas pour le créer

#

comment ça ?

true ravine
#

Tu peux utiliser un système de tokens

#

Le client te renvoie le token et s'il correspond à celui que tu as stocké c'est bon

#

Tu n'as pas besoin de renvoyer les identifiants à chaque fois, juste le token, sauf si ya déconnexion

wraith wren
#

j'ai un petit soucis d'export

true ravine
#

Mais le token tu peux le stocker dans la mémoire de ton serveur, pas besoin de bdd

#

(dans l'objet tvTimeSessions dont je parlais taleur)

wraith wren
#
if(!tvTimeSessions['username']){
    new tvtime(req.body.username);
  }```
true ravine
true ravine
wraith wren
#

ah oui merci, mais le soucis c'est l'export

true ravine
#

Essaye ça à tout hasard :

#
const user = require('./user.js')
const shows = require('./shows')
const episode = require('./episode')


class TvTime{
  constructor (nomUtilisateur) {
    this.nomUtilisateur = nomUtilisateur
  }

  login =  user.login

  logout = () => user.signOut(this.nomUtilisateur)

  shows = () => shows.getShows(this.nomUtilisateur)

  show = (serieId = 0) => shows.getShow(serieId, this.nomUtilisateur)

  followShow = (serieId = 0) => shows.followShow(serieId, this.nomUtilisateur)

  unFollowShow = (serieId = 0) => shows.unfollowShow(serieId, this.nomUtilisateur)

  episode = (serieId = 0, episodeId = 0) => episode.getEpisode(serieId, episodeId, this.nomUtilisateur)

  episodeWatch = (episodeId = 0) => episode.episodeMark(episodeId, this.nomUtilisateur)

  episodeEmotions = (episodeId = 0, emotionId = 0) => episode.episodeEmotion(episodeId, emotionId, this.nomUtilisateur)
}

export default TvTime```
wraith wren
#
class TvTime{
  constructor (nomUtilisateur) {
    this.nomUtilisateur = nomUtilisateur
  }

  login =  user.login

  logout = () => user.signOut(this.nomUtilisateur)

  shows = () => shows.getShows(this.nomUtilisateur)

  show = (serieId = 0) => shows.getShow(serieId, this.nomUtilisateur)

  followShow = (serieId = 0) => shows.followShow(serieId, this.nomUtilisateur)

  unFollowShow = (serieId = 0) => shows.unfollowShow(serieId, this.nomUtilisateur)

  episode = (serieId = 0, episodeId = 0) => episode.getEpisode(serieId, episodeId, this.nomUtilisateur)

  episodeWatch = (episodeId = 0) => episode.episodeMark(episodeId, this.nomUtilisateur)

  episodeEmotions = (episodeId = 0, emotionId = 0) => episode.episodeEmotion(episodeId, emotionId, this.nomUtilisateur)
}

module.exports = {
  TvTime: TvTime
}```
#

j'ai fias ça ça marche

#

fin j'ai pas l'erreur en tout cas

true ravine
#

Ah cool

#

Je ne maîtrise pas torp nodejs encore

wraith wren
#

moi non plus j'ai juste copier le repo git de base x)

true ravine
#

ça dépend ptet de la façon d'importer

#

Tu importes comment ?

wraith wren
#

let tvtime = require('tvtime-api');

#

mais

#

ça marche pas

#

TypeError: tvtime is not a constructor

true ravine
#

Mon écriture est prévue avec un import du style "import" il me semble

wraith wren
#

je vais essayer ta m"thide

#

ah

#

hmm je comprend pas ça me dit que c'est pas un constructor c'est vraiment bizarre

#

alors j'ai réussi a isntancier

#

mais pour utiliser les fonction je crois que je dois toutes les export

ocean bluff
#

Yo, une idée si il existe une api pour gmod ?

wraith wren
ocean bluff
#

Attend

#

Pas besoin que le serveur soit connecté sur leur site ?

wraith wren
#

franchement j'en sais pas grand chose c'est ce que j'ai trouvé sur internet

true ravine
ocean bluff
#

Le problème ça m'arrange pas, je ne vois que des récupération de vote a la limite

#

Aucune pour récupérer l'état du serveur ou autre

wraith wren
ocean bluff
true ravine
#

🤷‍♂️

wraith wren
#

c'est super bizarre pour instancier la classe

#

je penses pas que ce soit ça du coup

#

mais je vois pas comment faire

true ravine
#

Ah non tu n'y es pas

wraith wren
#

xd je m'en doutais

#

la je la redéfini je crois

true ravine
#

const tvTime = new TvTime(username)
tvTime.episode...

true ravine
wraith wren
true ravine
#

Montre moi comment tu obtiens "TvTime"

true ravine
#

Tu n'es pas en train d'appeler ton module d'avant là ?

wraith wren
#

bah j'ai remplacé les fichier

#

donc je pense pas

true ravine
#

tvtime-api c'est le dossier qui contient les fichiers que je t'ai envoyés ?

wraith wren
#

ouaip

true ravine
#

Fais module.exports = TvTime pour voir

ocean bluff
true ravine
#

J'pense que nos deux propositions sont bonnes :p

ocean bluff
#

Alors pour l'autre faudrait faire TvTime.TvTime

#

Mais là tu peux directement faire TvTime

ocean bluff
#

J'ai besoin de voir tes parametres

wraith wren
wraith wren
ocean bluff
#

Oep

true ravine
#

Oui, le fichier index

#

La solution de Hecome doit marcher aussi bien

#

Mais faut pas faire les deux x)

wraith wren
#
{
  "name": "tvtime-api",
  "description": "Unofficial TvTime Api for node",
  "main": "src/index.js",
  "version": "0.3.0",
  "keywords": [
    "tvtime",
    "api",
    "shows",
    "movies",
    "series"
  ],
  "author": "Edgar Valencia <isc.edgarvalencia@gmail.com>",
  "repository": {
    "type": "git",
    "url": "https://github.com/EdgarVaguencia/tvtime-api.git"
  },
  "license": "MIT",
  "scripts": {
    "_postinstall": "husky install",
    "prepublishOnly": "pinst --disable",
    "postpublish": "pinst --enable"
  },
  "dependencies": {
    "cheerio": "^1.0.0-rc.9",
    "needle": "^2.6.0"
  },
  "devDependencies": {
    "husky": "^7.0.2",
    "pinst": "^2.1.6",
    "standard": "^16.0.3"
  }
}
#

bah la j'ai réussi a construire un objet TvTime

#

mais

true ravine
#

J'pense que le souci c'est que le fichier json n'existe pas

#

Alors qu'avant access.json existait toujours 🤔

wraith wren
#

bah il est pourtant dans mes fichier

true ravine
#

Mais là tu as mis un username

#

ça cherche <nom d'utilisateur>_access.json

wraith wren
#

ah ouai

#

faut que je le créer ?

#

ah alors

#

j'ai mis _access.json

#

et j'ai une nouvelle erreur

true ravine
#

atta

#

J'ai tenté un correctif

#

C'est utils.js à remplacer

#

Si le fichier n'existe pas, il prend les paramètres par défaut

#

Au fait c'est pas sain de mettre mon tvtime modifié dans nodes_modules

#

Si c'est dans node_modules c'est qu'à la base tu as fait npm install...

wraith wren
#

ça install juste le code depuis node

#

j'ai toujours la meme erreur

true ravine
#

Le truc c'(est qu'une commande npm pourrait supprimer ma version et remettre la normale

wraith wren
#

ah ouai

#

après

#

la c'est un dossier de test

#

c'est juste pour voir je vais rien réinstaller

#

et si il faut je metterais dans un autre dossier

true ravine
#

Ben c'est pas la même erreur ça

wraith wren
ancient sonnetBOT
#
Citation du message de Xnern#4245 posté dans #javascript

Ce message contient uniquement une image, visible à droite de l'embed.

➜ [Voir le message original](#javascript-typescript message)

true ravine
#

Ah oui mais j'ai dû corriger la première erreur

#

Faudrait que tu supprimes le fichier pour vérifier ma correction

wraith wren
#

le json ?

true ravine
#

oui

wraith wren
#

mmh toujours la meme erreur

#

mais le fichier il est créer ou ?

true ravine
#

Il est pas encore créé

#

Mais j'ai trouvé l'erreur que tu dis

#

C'est une erreur de ma part en créant ma version

wraith wren
#

c'etait quoi le soucis ?

true ravine
#

Ligne 13 de episode.js :

#

util.get(/en/show/${serieId}/episode/${episodeId}, undefined, nomUtilisateur)

#

Il manquait le paramètre "undefined", du coup le nom d'utilisateur se mettait dans le paramètre data

wraith wren
#

ahh okok

#

et du coup les fichiers vont se créer comment ?

true ravine
#

De la mêem façon qu'avant

#

Sauf avec le nom d'utilisateur en plus

#

Avec la fonction setCookie

wraith wren
#

alors

#

enfaite

#

de base le fichier se créer pas tout seul

#

il est la de base

true ravine
#

Oui je sais

#

J'ai repris son contenu par défaut et je l'ai mis dans "defaultCookies" dans le fichier utils.js

wraith wren
#

mmh j'ai vraiment du mal a comprendre

#

si y'a qu'un fichier y'a que un utilisateur a chaque fois

#

et les valeurs du fichier ne change pas

true ravine
#

à la connexion le fichier doit se créer

#

(si ça fonctionne bien)

wraith wren
true ravine
#

Pas d'ereur ?

wraith wren
#

nop

true ravine
#

ça n'affiche ni "User is login" ni "User no login" ?

wraith wren
#

j'ai rien du tout...

true ravine
#

Et au niveau des logs côté serveur ?

wraith wren
true ravine
#

Sinon, tu as fait "res.json(tvTime.username)"

#

Mais j'ai appelé le champ nomUtilisateur

wraith wren
#

ah mince

#

je me perds la

#

toujours rien

true ravine
#

Et si ça va dans ce else, et que res.json ferme le script, il n'y a aucune requête à l'api pour l'instant

#

Tu peux faire des console.log pour voir où arrive l'exécution

wraith wren
#

j'ai réussi a enregistrer ça

#

dans le tvTimeSessions

#

mais

#

il va pas dans le else

true ravine
#

T'es sûr ?

wraith wren
#

alors

#

attend c'est super bizarre

#

en gros

#

c'est normal que le tableau Sessions se vide ?

#

genre la première fois ça s'execute j'ai rien dedans donc il ajoute au tableau le nom

#

et ensuite

#

si j'actualise

#

il passe dans le else et m'affiche le nom

#

mais si je réactualise

#

ça repasse dans le if

#

et recréer un nom

#

etc..

#

et j'ai ça quand ça affiche le nom

true ravine
#

A mon avis c'est parce que tu fais deux fois res.json(

#

Montre comment tu déclares tvTimeSessions ?

wraith wren
#

hmm ça s'arrete au premier logiquement

true ravine
#

Je sais pas, tu peux essayer un return après le premier

wraith wren
#

ça a l'air d'être bon

#

parcontre y'a pas de json au nom de l'utilisateur

true ravine
#

ça retourne un objet vide à la place du nom d'utilisateru ?

wraith wren
#

non je parle de _access.json

true ravine
#

ah

#

Oui mais tu te connectes pas

#

Il faudrait déjà essayer une connexion

wraith wren
#

je comprend plus rien

true ravine
#

tvTime != tvtime

wraith wren
#

oui....

#

je commence a être fatigué la

#

bref du coup ça a bien créer le fichier

true ravine
#

Ah c'est super ça

wraith wren
#

c'est normal que user se met a 0 ?

true ravine
#

Comment ça ?

wraith wren
true ravine
#

Non j'pense pas, ça devrait être l'id utilisateur

wraith wren
#

bah la ça le met a 0 tout le temp

true ravine
#

Où tu as trouvé cette fonction ?

wraith wren
#

utils

#

.js

true ravine
#

Ah ya deux fonctions getUser

#

Faut que tu t'intéresses à la fonction getUsers de user.js

#

C'est là qu'est récupéré l'id user

wraith wren
#

mais la je sais pas pourquoi ça se met pas je vais check

true ravine
#

Soit ya un bug dans getUser soit dans setCookie

#

Faut débogger avec des console.log

wraith wren
#

mais je comprend pas pourquoi les fichiers se créer pas tout le temp

true ravine
#

Avec des logins différents ?

wraith wren
#

ouai

true ravine
#

Avec des connexions qui réussissent ?

wraith wren
#

ouai bah la ça a marché

#

mais

#

je fais un .then apres mon login

#

et meme avec des mauvais identifiant ça passe

#

comment ça se fait

#

mais le fichier lui est pas créer

wraith wren
#

ok en gros, le user se met dans le fichier access.json de base pcq quand on faire require il trouve pas

#

mais je comprends pas trop pourquoi il me met ça la

unborn knot
true ravine
#

Cool 🙂

keen narwhal
#

Bonjour ! Désolé pour le post de noob mais j'aurais besoin de la commande pour fire un pop up lors de la soumission d'un formulaire tout simple si possible. J'ai essayé de trouver sur le net mais je bug ...

#

Merci !

pallid plume
#

Pour fire un pop-up?

keen narwhal
#

Oui

#

Genre quand tu clique sur submit

#

Le pop up te dis que ça a bien été envoyé

true ravine
#

Le truc de base en js : la fonction alert

wraith wren
# true ravine Le truc de base en js : la fonction alert

Salut, j'ai une petite question, alors j'ai réussi et la ça fonctionne j'arrive a avoir un fichier pour chaque personne etc, mais je me pose la question, si l'utilisateur change de pseudo sur l'appli comment je fais pour savoir que c'est le meme id ?

true ravine
#

Si son pseudo change et donc que son login de connexion change ?

#

Salut

wraith wren
#

je pense faire par email c'est plus simple

true ravine
#

De base tu n'as pas besoin de gérer ça, si c'est un nouveau pseudo tu as juste à rediriger vers le formulaire de connexion

#

A moins qu'il y ait quelque chose de particulier par rapport à ta BDD ?

wraith wren
#

non non du coup merci !

true ravine
#

😉

wraith wren
#

dailleur

#

c'est beaucoup plus rapide

#

je passe d'environ 3 seconde a moin de 1s

true ravine
#

Pas mal

wraith wren
#

Donc merci beaucoup pour l'aide ! et désolé si j'ai posé beaucoup de question hier mais je comprenais pas grand chose

true ravine
#

Mais non tkt

#

C'était amusant

simple aspen
#

Salut la famille . je suis nouveau sur le canal.
je suis entrain de suivre le tuto du boss a propos du réseau social . Quand je fais res.cookie , je vois les cookies dans postman mais une fois que je le connecte avec react , je ne le vois pas dans cookie qui se trouve dans la partie appli. Merci de bien vouloir m'aider

true ravine
#

Salut. A première vue tu es peut-être impacté par le fait qu'un cookie est propre à un nom de domaine ?

civic fractal
#

Hey ! Connaissez-vous un module ou bien un repos Github pour avoir une notification lorsqu'un nouveau jeu est gratuit ? Je vous remercie d'avance !

kind rain
#

a l'aide je commencer a crée mon bote discord je le lance et :
Uncaught ReferenceError ReferenceError: log is not defined

fierce plank
#

Hello

#

Je suis entrain d'essayer de reverse proxy une app js en dev (qui utilise vite) et le probleme est que j ai une erreur de websocket qui ne peux pas ce connecter savez vous comment je peux faire ?

red torrent
uneven falcon
#

Bonjour, j'aimerais faire un mix de ces deux codes https://www.youtube.com/watch?v=NWY89IO4w_0&t=1837s&ab_channel=YaoKevin et https://codepen.io/nfj525/pen/rVBaab
Je m'explique, j'aimerais le visuel du codepen avec les barres de couleurs en fonction de la musique mais avec le système de la vidéo youtube où quand on clic ça lance direct sans avoir à sélectionner un fichier. Si quelqu'un peut m'aider car je ne maitrise pas du tout le .js, Merci (Si je ne suis pas clair n'hésitez pas à me demander)

fierce plank
torn fog
fierce plank
unkempt geyser
#

Salut, j'aimerai savoir si qlq connais en nodeJs car, j'ai essayer de faire fonctionner mon bot mais il veux pas se lancer voici le code que j'ai utiliser

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

client.once('ready', () => {
   console.log('Félicitations, votre bot Discord a été correctement initialisé !');
});

bot.login(config.token)```
dire latch
#

@unkempt geyserVersion de discord.js ? Erreur ?

unkempt geyser
#

et j'ai pas d'erreur

dire latch
#

Il te manque donc des intents

unkempt geyser
#

Déjà je modif le bot.login(config.token)

#

vu que botil est pas défini

dire latch
#

Oui aussi

unkempt geyser
#

j'ai mis client.login(config.token)

#

mais je vois pas il manque quoi comme "intents"

dire latch
#

Regarde des tutos etc 🙂

unkempt geyser
#

j'ai install "npm init"

#

et ensuite le discord.js

#

Mais justement je suis parti regarde mais j'ai rien trouver c'est pour cela que je viens ici

dire latch
#

Il y a plein de tuto qui existe

cyan iron
#

C'est dans la configuration de ton client, tu dois ajouter les intents nécessaires. Mais effectivement je te conseille de regarder un tuto sur Youtube ou autre pour commencer, ce sera sûrement plus clair que nous à l'écrit 🙂

uneven falcon
#

Bonjour, j'aimerais savoir comment modifier le code ci-dessous pour ajouter 3 boutons, un bouton play, un bouton pause et un bouon mute qui quand on appuie dessus change pour donner une autre image pour indiquer demute.

window.onload = function() {
    
    button.onclick = function() {
      audio.src = "onigiri_audio.mp3";
      audio.load();
      audio.play();
      var context = new AudioContext();
      var src = context.createMediaElementSource(audio);
      var analyser = context.createAnalyser();
  
      var canvas = document.getElementById("canvas");
      canvas.width = window.innerWidth;
      canvas.height = window.innerHeight;
      var ctx = canvas.getContext("2d");
  
      src.connect(analyser);
      analyser.connect(context.destination);
  
      analyser.fftSize = 256;
  
      var bufferLength = analyser.frequencyBinCount;
      console.log(bufferLength);
  
      var dataArray = new Uint8Array(bufferLength);
  
      var WIDTH = canvas.width;
      var HEIGHT = canvas.height;
  
      var barWidth = (WIDTH / bufferLength) * 2.5;
      var barHeight;
      var x = 0;
  
      function renderFrame() {
        requestAnimationFrame(renderFrame);
  
        x = 0;
  
        analyser.getByteFrequencyData(dataArray);
  
        ctx.fillStyle = "#000";
        ctx.fillRect(0, 0, WIDTH, HEIGHT);
  
        for (var i = 0; i < bufferLength; i++) {
          barHeight = dataArray[i];
          
          var r = barHeight + (25 * (i/bufferLength));
          var g = 250 * (i/bufferLength);
          var b = 50;
  
          ctx.fillStyle = "rgb(" + r + "," + g + "," + b + ")";
          ctx.fillRect(x, HEIGHT - barHeight, barWidth, barHeight);
  
          x += barWidth + 1;
        }
      }
  
      audio.play();
      renderFrame();
    };
  };
#

Et j'ai trouver un code pour les boutons mais je doute donc corrigez moi si besoins :

var button = document.getElementById("button");
var audio = document.getElementById("audio");

var playbtn = document.getElementById("play")
var stopbtn = document.getElementById("stop")
var volumepbtn = document.getElementById("volume")

playbtn.onclick = function(){
    audio.playPause();
}
playbtn.onclick = function(){
    audio.stop();
}
playbtn.onclick = function(){
    audio.toggleMute()
}
#

Merci 🙂

#

(Pour que les boutons soient comme dans la vidéo)
https://www.youtube.com/watch?v=NWY89IO4w_0&t=1294s&ab_channel=YaoKevin

Comment Ajouter de la musique a site web avec du html ccs et JavaScript.

Vous pouvez a présent apprendre a ajouter de l'audio ou de la musique un site web peut importe votre niveau de connaissance en programmation. Nous vous expliquons tout étape par étape.
Nous utilisons HTML et CSS pour donner une structure et un style à la page Web quant...

▶ Play video
true ravine
#

Salut. Je trouve ta demande vague. Si tu as le code de quoi tu as besoin exactement ?

uneven falcon
#

par ces boutons

#

c'est quand même plus beau

true ravine
uneven falcon
true ravine
#

Si tu mets pas les controls tu as quoi ?

uneven falcon
#

rien

#

ça disparait

true ravine
#

ok

#

Alors à priori, faudrait ne pas mettre les contrôles et créer à la main tes trois boutons en html/css

uneven falcon
#

Oui c'est bien ce que je me disais mais j'ai voulus essayer en .js car je pense qu'il en faut pour faire ce système non ?

#

sauf que je suis une quiche en js

true ravine
#

Ouais avec le js que t'as cité plus haut

uneven falcon
#

Oui

true ravine
#

Pour transformer le bouton du son faudra un peu plus de code, mais tu peux déjà commencer comme ça

uneven falcon
#

Yes

true ravine
#

Allez au boulot 😄

uneven falcon
#

je garanti rien

true ravine
#

Non mais osef du js là

#

Tu as déjà le code

uneven falcon
#

oui mais même pour le système quand je mute

true ravine
#

C'est faire et placer les boutons le plus difficile

uneven falcon
#

ah

#

parce que enfaîte

#

j'aimerais que quand j'appui sur le mute

#

il se change en ça

#

faut pas du js pour ça ?

true ravine
#

Si

#
volumebtn.onclick = function(){
    audio.toggleMute()
    if(audio.muted){
      image.src = 'srcImagedmuted'
    }else{
      image.src = 'srcImagePasMuted'
    }
}```
#

Quelque chose comme ça

uneven falcon
#

Ho okay merci beaucoup 🙂

vast chasm
#

Hey ! Comment je peux faire un compteur(channel vocal) de personne ayant un rôle ?

thick gate
#

Hey comment je peut add un grade a quelqu'un via le nom du role

orchid garden
#

comment puis-je faire pour lancer une animation css à chaque fois que je clique sur un bouton comme à chaque fois que je clique sur un bouton ça fait une animation qui le fait sauter (un homme)

#

jumpButton.addEventListener("clic", fonction () {
stick.style.animationName = "vers le haut" ;
stick.style.animationDuration = "1s" ;
stick.style.animationIterationCount = "" ;
stick.style.animationTimingFunction = "" ;
})
J'ai essayé avec le code mais cela ne fonctionne que pour le premier clic

true ravine
#

"click" ou "clic" ?

#

A la fin de ta fonction du click, tu ne devrais pas "annuler" l'animation après un setTimeout pour réinitialiser le truc ?

#

En remettant "stick.style.animationName" à chaîne vide par exemple

open python
open python
misty parcel
#

Salut! Je voulais savoir si c'était possible d'ajouter un gif à un canvas

worn garnet
oak turret
#

Je crois que c’est possible mais il faut que ton image de sortie soit aussi en gif

still quest
hazy mirage
#

Yo!
@deep torrentEst-ce que tu saurais l'aider la dessus ? myman

deep torrent
#

Hmmm

#

Bizarre Bizarre

#

Pour le password tu as mis oauth:xxxxxxxx ?

still quest
deep torrent
#

C'est vraiment bizarre

#

Moi quand je le faisais tout se lancais

#

The host or ISP you are using blocks the IRC/Connection port you are using outbound
The username/password combination is invalid
Bad tmi.js version
Bad NodeJS version
Something else I’ve not thought of

#

J'ai trouvé ça

still quest
#

J'ai refais la demande de token:

still quest
deep torrent
#

Si tmi.js est à jour?

#

Quelle est ta version de nodejs?

still quest
deep torrent
#

C'est le module qu'on utilise pour se connecter à twitch

still quest
deep torrent
#

C'est normalement à jour

#

Regarde si tmi.js est à jour

#

En faisant npm i tmi.js

still quest
#

Il m'a fait un téléchargement

#

C'est normale du coup?

deep torrent
#

C'est bon

#

Reessaye

still quest
#

Ca reste bloquer

deep torrent
#

C'est bon

#

C'est connecté normalement

still quest
#

Mais je fais comment pour modifier alors?

deep torrent
#

Vous pouvez créer des commandes

#

Vous avez normalement déjà des commandes par défaut

still quest
#

?

deep torrent
#

Dans le dossier commande

still quest
#

ah ok

still quest
vast chasm
#

Hey ! J'aimerai que lorsqu'une personne ayant un compte créé il y'a moins de 3 mois sa ne lui donne pas le role lorsque il appui sur le bouton

#
const {Permissions, MessageEmbed, MessageActionRow, MessageButton }=require('discord.js')
module.exports = {
    name: 'interactionCreate',
    async execute(client, interaction) {
        if (!interaction.isButton()) return;

        if (interaction.customId == "get-premium") {
                interaction.member.roles.add('1013243688576614412')
                interaction.reply({content: "You have now access to DKW Gun Shop channel's", ephemeral: true})     
        }
    }
}```
red torrent
fathom cradle
#

Qui m’explique la fonction a et b svp

sharp grail
#

Je sais pourquoi j'ai l'impression que c'est du java

red torrent
fathom cradle
#

@red torrent tu peux m’expliquer ces 2 fonctions ?

versed storm
#

Déplace la question dans le bon salon du coup

little lotus
#

hello j'ai une question à propos de node.js, est-ce que c'est le bon salon?

past nimbus
#

oui

little lotus
#

@past nimbus alors j'avais fait une application en local avec un back node.js et un front react, pour déployer mon front j'ai compris qu'il fallait que je fasse un build pour ensuite l'héberger, jusque là tout va bien, mais pour mon back je ne sais pas comment le déployer

past nimbus
#

Tu le build et tu le lances sur le serveur d'host

little lotus
#

@past nimbus je fais la meme chose pour le back que pour le front?

#

car voici en gros mon back, c'était un serveur

past nimbus
#

Bah ton serveur tu peux le build, et c'est ce build que tu vas lancer sur le serveur host

little lotus
#

ah ok je vais essayer ça

#

je pensais qu'il fallait faire différemment

#

par contre mon fichier server.js commence comme ceci, je laisse port 3000 ? ou il faut que je change le port ?

#

car c'était mes paramètres en local

floral bolt
#

Il faut que ce soit un port différent que celui de ton front

little lotus
#

@floral bolt d'acc, par contre je ne peux pas build mon back

#

build c'est pour mon front fait en react

red torrent
little lotus
#

@red torrent oui justement je ne sais pas comment faire pour le déployer sur mon hébergement

red torrent
little lotus
#

@red torrent non

red torrent
little lotus
#

@red torrent je suis chez lws, j'ai pris cpanel

red torrent
little lotus
#

oui attends je te fais une capture

red torrent
#

par contre si ton application react et ton back en nodejs sont sur le même hébergement il va falloir déployer ton application react (build) via ton application nodejs, si tu utilises express tu vas devoir regarder du côté de express.static

little lotus
#

oui j'utilise express, ceci est le début de mon fichier app.js

red torrent
little lotus
#

@red torrent oui

#

en fait dans public_html

#

je mets mon front

#

enfin je ne sais pas si c'est bien de faire comme ça ...

red torrent
#

quand tu vas activer une application node sur cPanel il va changer la configuration nginx (ou apache) pour faire un reverse proxy vers ton application

#

ce qui fait que par défaut il ne va plus rendre le dossier public_html

#

tu vas avoir le choix :

  • soit tu change la configuration nginx (ou apache) pour rendre ton dossier public_html en plus du reverse proxy
  • soit tu vas rendre ton dossier public_html directement via express
#

pour que ton application react continue de fonctionner

little lotus
#

@red torrent ah ok je ne maitrise pas tout ça mais en effet j'ai vu apparaitre nginx dans mon gestionnaire de fichiers une fois que j'avais créé mon application mode.js avec cpanel

red torrent
#

Dans ton gestionnaire de fichier? C'est à dire?

little lotus
red torrent
#

oui j'avais compris pour le gestionnaire de fichiers, c'est quoi que tu as vu apparaître sous le nom de "nginx" dedans?

little lotus
#

euh ça devait etre dans "my_app" puis dans un autre dossier

red torrent
#

pas où mais quoi?

little lotus
#

ah ça devait etre un fichier log et un fichier error

#

si je me rappelle bien

red torrent
#

ok alors ça ne va pas t'aider à déployer tes deux applications sur ton hébergement

little lotus
#

c'était juste des rapports

red torrent
#

dans cpanel tu devrais avoir quelque-chose du type "paramètres de nginx" ou "paramètres d'hébergement"

#

et normalement tu devrais y trouver un champ qui te permet d'ajouter des règles à ta configuration nginx

little lotus
#

j'ai gestionnaire apache, c'est la dedans?

red torrent
little lotus
#

@red torrent d'acc merci pour l'aide en tout cas

#

@red torrent, par contre ce que je n'arrive pas trop à comprendre, c'est que dans mon server.js j'avais ça, et qu'une fois que je crée une application vierge, par défaut il me crée un fichier server.js contenant ma 2ieme capture, il faut que je mette mon server.js à la place de celui créé par cpanel ?

red torrent
#

tu as uploadé le dossier de ton application node (sans le dossier node_modules) ?

little lotus
#

oui j'avais fait cela hier, ensuite j'avais cliqué sur npm install, justement pour que ça installe les dépendances de mon projet

red torrent
#

tu as rempli le champ "Application root" correctement?

little lotus
#

application root, j'ai mis le nom de mon appli, dans appli url, j'ai mis backend, et dans application startup file j'ai mis server.js

red torrent
#

ton application node doit-être dans le dossier correspondant à ce que tu as entré dans "Application root"

little lotus
#

@red torrent oui il me semble avoir bien rempli ça

red torrent
little lotus
#

ah ok

red torrent
#

s'il écrase ton fichier existant

#

sinon il devrait laisser ton fichier server.js comme il était

little lotus
#

ah oui mais moi je ne faisais pas les choses dans cet ordre, je créais l'apllication node en renseignant les différents champs applaction root, application url, et application startup file, ensuite en validant ceci ça me créait dans mon gestionnaire de fichiers: plusieurs dossiers ... dont un avec le nom que j'avais donné a l'application root, et ça me créait un fichier server.js

#

puis ensuite j'uploadais mon backend (sans les node modules) dans ce dossier en remplaçant le server.js créé par le miens

#

et je faisais un npm install

red torrent
#

je pense que tu peux le faire dans l'ordre que tu veux

little lotus
#

et c'était a partir de cette étape que je ne savais plus quoi faire en fait lol

red torrent
#

tout est expliqué dans le tuto que je t'ai envoyé

little lotus
#

oui je vais voir la suite ^^

#

sinon dans cpanel tu connais un peu? là actuellement j'ai nombre de processus au maximum...

red torrent
#

non je n'ai jamais utilisé cPanel

little lotus
#

ah ok, tu utilises quoi ?

red torrent
#

avant j'utilisais plesk pour gérer mes domaines mais maintenant je n'utilise plus rien

#

je fais des LXC avec proxmox pour déployer mes applications

little lotus
#

@red torrent heu ... ^^

#

@red torrent tu me parles chinois la

red torrent
#

bah en fait c'est comme si tu voulais héberger tes applications sur des vps

#

sauf que les vps tu les crées toi-même depuis un serveur dédié avec un outil de virtualisation (proxmox)

little lotus
#

oui justement j'ai vu ça vps également c'est plus simple que ce que j'essaie de faire ?

red torrent
#

tu n'as pas d'interface pour tout gérer avec un vps mais c'est plus simple car tu n'es pas sur du mutualisé

#

tu as accès à tout

little lotus
#

par contre il faut repayer en plus tous les mois

red torrent
#

sur ton vps tu installe nodejs, pm2 et nginx puis le tour est joué

little lotus
#

c'est comme si j'étais en local apres ?

red torrent
#

oui un vps c'est plus cher qu'un hébergement mutualisé

red torrent
little lotus
#

en plus ça me permettrait de mettre mon back dans un autre endroit que mon front

red torrent
#

tu as docker qui est pas mal aussi mais je l'ai que très peu utilisé

#

c'est une alternative aux lxc

grizzled magnet
#

Bonjour j'ai appris javascript sur youtube , j'ai un niveau faible pour faire des algorithme avez vous des endroits ou pratiquer avec des exercises pour debutant

grizzled magnet
#

@open python Merci je vais voir si le niveau est accessible pour moi

frank blaze
#

Salut !
C’est à dire bump, t’as un site ?

#

Mais tu veux le bump ou ducoup ?

#

Waw okay 😅
J’aurais voulu aider mais pour l’instant j’apprends aussi et je touche pas trop au php / SQL :/

fading glacier
#

A chaque bump sauvegarde la timestamp dans ta bdd, et après en php tu classes de la timestamp la plus grande à la plus faible

keen narwhal
#

Bonjour, je cherche à faire une commande qui ban 1 personnes sur tout les discord ou est le bot directe

#

J'ai trouvé aucun tuto sur cela

fiery wave
#

salut, tu peux utiliser une méthode un peu crade qui consiste à générer un tableau contenant tous les identifiants des serveurs discord où se trouve le ban, puis tu parcours ton tableau en exécutant la commande de ban sur les serveurs en question un à un

#

je n'ai pas fait beaucoup de Discord.js, donc je ne peux pas te dire si cette technique va vraiment marcher

#

essaye pour voir 👍 @keen narwhal

keen narwhal
#

Je vais essayer

lone flax
#

Tu fais un truc qui ressemble à ça :

const ban = (client, user) => {
  client.guilds.cache.forEach((g) => {
    g.members.ban(user.id);
  });
}
fiery wave
keen narwhal
keen narwhal
#
const { Client, Partials, Collection, InteractionType, GuildMember } = require("discord.js")
const ms = require("ms")
const mongoose = require("mongoose")
const config = require("./config")

const { Channel, Message, Reaction, ThreadMember, User, GuildScheduledEvent } = Partials
const client = new Client({
    intents: 131071,
    partials: [Channel, GuildMember, Message, Reaction, ThreadMember, User, GuildScheduledEvent],
    allowedMentions: { parse: ["everyone", "roles", "users"]},
    rest: { timeout: ms("1m")}
})

client.commands = new Collection()
client.events = new Collection()

const Handlers = ["Events", "Commands"]

Handlers.forEach(handler => {
    require(`./Handlers/${handler}`)(client)
})

client.on("ready", () => {
    console.log("Bot is Ready !")
})

module.exports = client

mongoose.connect("url de connection mongoose", { useNewUrlParser: true, useUnifiedTopology: true }).then(() => console.log("base de donnée connectée !")).catch((e) => console.error(e)) 
client.login(config.token)```
glass thicket
#

Utilise les blocs de code, non d'une pipe

keen narwhal
#

Pour le mongoose connect je met quoi si je le fait avec mysql

past nimbus
#

🤔

worn garnet
#

🤔

#

pour partager son code (c'est plus propre)

lucid mica
#

[Discord JS] Heyyy j'ai un petit problème avec mon système de ticket utilisant un menu déroulant, le problème étant que je n'ai pas d'erreur dans le code mais aucun ticket ne se crée, quelqu'un pourrait m'éclairer svp ?

sharp grail
#

Sans ton code ce sera compliquédiscordjs

vast chasm
#

Hey ! Quelqu'un saurait comment je peux faire pour que sa m'ouvre un posts a la place d'un channel

        if (interaction.customId == "open-ticket") {
            if (DejaUnChannel) return interaction.reply({content: `${interaction.user.username} vous avez déjà un ticket d'ouvert.`, ephemeral: true})
                interaction.guild.channels.create(`${interaction.user.username} ticket`, {
                    type: 'GUILD_TEXT',
                    topic: `${interaction.user.id}`,
                    parent: `${catégorie}`,
                    permissionOverwrites: [
                        {   
                            id: interaction.guild.id,
                            deny: [Permissions.FLAGS.VIEW_CHANNEL]
                        },
                        {
                            id: interaction.user.id,
                            allow: [Permissions.FLAGS.VIEW_CHANNEL]
                        },
                        {
                            id: roleStaff,
                            allow: [Permissions.FLAGS.VIEW_CHANNEL]
                        }
                    ]
                }).then((c)=>{
                    const partenariat = new MessageEmbed()
                    .setTitle(`Ticket de ${interaction.user.username}`)
                    .setDescription('Votre ticket a été ouvert. Décrivez votre demande et attendez qu\'un membre du Staff vous réponde.')
                    .setColor('#1488ff')
                    .setThumbnail('https://i.imgur.com/w6QdHcJ.png')
                    .setTimestamp()
                    c.send({embeds: [partenariat], content: `${roleStaff} | ${interaction.user}`, components: [row]})
                    interaction.reply({content: `${interaction.user.username} your ticket has been opened with success <#${c.id}>`, ephemeral: true})
                })  
shy scaffold
#

Bonjour tout le Monde,
Je souhaite créer une application météo avec la géolocalisation. Mais en fond d'écran j'aimerais afficher des paysages de photo aléatoire relatif à la météo (exemple si il pleut une photo ou il est entrain de pleuvoir ,de même pour la neige ou autre) , est-ce que qu'un pourrais de donner une liste d'API ou éventuellement une façon de faire en utilisant javascript. ??

versed storm
#

Hello, petite recherche préliminaire pour t'aider :

https://api.meteo-concept.com/
https://openweathermap.org/api
https://open-meteo.com/en

Pour la photo en fond d'écran, en fonction de la requête et du résultat, tu compares ça dans un script JS et tu changes en fonction. Attention il me semble que sur ces APIs les requêtes sont limités par jour (en version gratuite)

grand musk
#

Bonjour à tous, je viens tout juste d'arriver sur ce Discord.

Je suis actuellement en train de suivre une vidéo de FromScratch "[Javascript Full-stack] Projet MERN | Créer un réseau social | Partie Front-end" et j'ai un soucis de cookies et de token.

Suis-je au bon endroit ? Si oui, il y a-t-il des âmes charitables pour m'aider ?

Je vous remercie, bonne journée à tous 😉

versed storm
#

Hello,

Yes tu es effectivement au bon endroit, ici tu peux poser tes questions ou exposer tes problèmes concernant JS ! Si c'est lié à du code n'hésite pas à envoyer les morceaux correspondants et les messages d'erreurs

peak cedar
#

ALT + 7 et tu appuie 2-3 fois

fading glacier
#

Pourquoi utiliser une librairie quand tu peux tout simplement faire Date.now() pour avoir la timestamp?

fading glacier
#

C’est pas plus opti que d’utiliser les méthodes JS de base

sharp grail
#

Bah ;-;

#

Y a des méthodes natives pour formater la date

#

Je suis pas sur d'avoir tout compris; mais bon tant que ça marche

#

Mmh

#

Bah tu veux stocker quoi exactement j'ai pas compris

pallid plume
#

En gros tu veux exec une fonctions en fonction des param que tu as c'est ça ?

#
cb1 ? con.query(sql, format, function (err,result) {}) : con.query(sql, function (err,result) {})
charred lake
#

Bonjojur, bonjour.
Quelqu'un calé ici avec Nuxt3 ?

#

J'ai un problème de duplication de layout, avec un navigateTo('')

civic fractal
#

Hey! J'avais besoin d'une aide précieuse. J'ai tenté de faire un menu de settings mais le soucis, c'est que j'avais oublié que les Selects Menu peuvent avoir uniquement 25 options donc ce que je souhaites faire c'est d'ajouter un second select menu si le guild contient +25 channels mais j'ai complètement oublié comment faire. Savez-vous comment m'aider ? Je n'ai trouvé aucun sujet parlant de cela autre part. Merci d'avance ! Voici mon code de base :

const componentForAddChannel = new Discord.ActionRowBuilder()
            .addComponents(
                new Discord.SelectMenuBuilder()
                    .setCustomId('DropDownMenuBuilderForSetChannelSlowmode')
                    .setPlaceholder('➜ Choisir un channel')
                    .addOptions(interaction.guild.channels.cache.filter(channel => channel.type === Discord.ChannelType.GuildText).map(channel => ({ label: channel.name, value: channel.id })).slice(0, 25))
            )```
vast chasm
red torrent
#

Pas en un seul message

civic fractal
queen oriole
#

Bonjour je suis nouveau et j'aimerais savoir, comment on fait pour créer une "vrai commande" / (les commandes slash) ?

sharp grail
# civic fractal Oui?

un truc comme ça

const channels = interaction.guild.channels.cache.filter(channel => channel.type === Discord.ChannelType.GuildText).map(channel => ({ label: channel.name, value: channel.id }))
const rows = [];

for (let i = 0; i < channels.length; i+=25) {
    rows.push(new ActionRowBuilder().addComponents(new SelectMenuBuilder().setCustomId('DropDownMenuBuilderForSetChannelSlowmode').setPlaceholder('➜ Choisir un channel').setOptions(array.slice(i, i + 25))));
};
#

enfin attends 🤔

civic fractal
sharp grail
sharp grail
civic fractal
desert riverBOT
#

:guide: Creating Your Bot: Creating commands
read more

civic fractal
#

Je vais tester!

queen oriole
sharp grail
#

le problème de cette méthode est que si y a plus de 125 (text) channels

#

ça va poser problème ;-;

civic fractal
sharp grail
#

bah du coup si ?

true ravine
#

Pourquoi ça va poser un problème ?

sharp grail
#

tu peux pas avoir plus de 5 row par message

civic fractal
#

Je n'ai pas +125 channels mdr

#

Heu what

sharp grail
true ravine
#

Array je crois

#

ah chui con

sharp grail
#

si c'est juste un bot pour ton serveur, aucun problème, mais si tu l'ouvres au public, bah t'auras une erreur de djs et le message pourra pas s'envoyer

civic fractal
#

Juste j'ai cette erreur

#

Je n'ai pas de ligne wtf

sharp grail
#

tu peux log componentForAddChannel ?

civic fractal
#

Yep

#

Il le build 2 fois ?

sharp grail
#

non ça ça veut dire que t'as plus de 25 channels

civic fractal
#

Oui, j'en ai 30

sharp grail
#

euh tu envoies comment le message?

civic fractal
#

Puis, je fais editReply()

sharp grail
#

tu peux envoyer le code ? 🤔

civic fractal
#

Il est très très long

sharp grail
#

nan mais juste le bout où tu envoies le message avec les components

civic fractal
#

L'endroit ou je send le Select Menu est ici

sharp grail
#

okay c'est normal

#

donc

#

le componentAddForChannel est déjà un array de row

true ravine
#

Zo row est arrivé 🥳 pardon

sharp grail
#

donc ce que tu peux faire par exemple c'est


{ components: [ channel, tools ].flat() };
#

fin en réécrivant les bons noms de variables mais voilà

civic fractal
#

Juste en ajoutant .flat() à la fin ?

sharp grail
#

ou alors tu peux aussi concat le tools dans channel, ou push, avant comme tu veux

sharp grail
#

je sais pas si tu as compris pourquoi ? ~

civic fractal
#

Je vais essayer ça !

civic fractal
sharp grail
#

heu bah en gros la structure de ton truc c'est ça

components : [ [ row, row ], row ]; alors que les rows sont censées être directement contenus dans l'array component

sharp grail
# civic fractal

ah yep du coup faut que tu aies un custom id différent pour chaque version du componentchannel

civic fractal
#

Comment je fais du coup ? Je vais devoir faire deux réponses aux 2 customs id ?

sharp grail
#

ça dépend de comment tu gères les interactions

civic fractal
#

C'est-à-dire ?

sharp grail
#

bah

#

comment ton gères les interactions des components

#

là je sais pas comment est ta structure on peut imaginer un truc comme ça

// si avant c'était ça
if (customid == 'DropDownMenuBuilderForSetChannelSlowmode') //do this

// maintenant ça peut être ça
if (customid.startsWith('DropDownMenuBuilderForSetChannelSlowmode')) // do this
#

et modifier le code en

for (let i = 0; i < channels.length; i+=25) {
    rows.push(new ActionRowBuilder().addComponents(new SelectMenuBuilder().setCustomId('DropDownMenuBuilderForSetChannelSlowmode' + i).setPlaceholder('➜ Choisir un channel').setOptions(array.slice(i, i + 25))));
};
civic fractal
sharp grail
#

bah du coup celui là par exemple tu peux le remplacer par un startswith

civic fractal
#

Ok

#

J'ai cette erreur maintenant

#

J'ai rien dans la console mais j'ai ça

sharp grail
#

t'as mis quoi dans ton code?

civic fractal
sharp grail
#

non je veux dire dans la gestion des interactions

wintry garden
#

Bonjour, j’aurais une petite question pour mon site de streaming. J’ai actuellement un site de streaming et je voudrais le mettre en ligne, il aura pour listant aucun abonnement qui est prévue, le but du site de streaming que je voudrais mètre en ligne et totalement gratuit sans aucune PUB. Ici je voudrais le mettre sur une machine OVH pour éviter toute vol du code ou autre sauve que je ne connais pas la puissance que je dois prendre pour un site de streaming. Si une personne serais me dire ce que j’ai besoins comme puissance au minimum pour le site. Il a aucune disponibilité de téléchargement sur le site. Le site a été créer avec du code javascript je ne c’est pas si ça peux changer un truc ou pas.

Petit + en question:

Je voudrais faire un site de streaming totalement légal avec les droits d’auteur sauve que je ne c’est pas comment les avoir et comment le faire.

civic fractal
sharp grail
civic fractal
#

Non

#
        if (interaction.customId.startsWith('DropDownMenuBuilderForSetChannelSlowmode')) {
sharp grail
#

mmh

#

tu peux mettre un log pour si ça passe ou pas?

civic fractal
#

Je regarde ça juste après je vais manger !

civic fractal
sharp grail
civic fractal
#

Donc console.log(interaction.customId.startsWith('DropDownMenuBuilderForSetChannelSlowmode'))

civic fractal
sharp grail
#

tu peux console.log interaction.customId?

civic fractal
#

DropDownMenuBuilderForSetTimeSlowmode

sharp grail
#

euh bah

#

là tu cliques pas sur les menu pour select les channels

civic fractal
#

Non

sharp grail
#

je comprends pas où est le problème là-

civic fractal
#

Enfaite, j'utilise un select menu pour utiliser un autre select menu

idle trench
#

bonjour, une personne de dispo qui connais bien cloudinary/node.js/react de dispo?

open python
civic fractal
#

Merci beaucoup

queen oriole
#

bonjour, petite question surement débile mais je ne trouve pas la réponse sur internet. Lorsqu'on utilise la commande const guildId = ''; où trouvons nous la valeur ?

civic fractal
charred lake
civic fractal
queen oriole
#

Euuhh 😭

charred lake
# queen oriole Oui

Si tu veux récupérer l'id d'un guild, tu peux normalement directement le faire depuis ton discord.

#

Si ce n'est pas dynamique, un simple clique gauche suffit

charred lake
#

Il faut activer le mode développeur de ton discord

civic fractal
#

<interaction Ou message>.guild.id ( Pour les bots )

charred lake
#

Pour l'activer tu peux cliquer sur la petite roue crantée en bas, et ensuite te rendre dans les paramètres avancées, et tu trouveras un bouton pour activer le mode développeur. Et ensuite quand tu feras un clique gauche sur ton message ou sur ton channel, tu pourras copier l'ID de celui-ci

queen oriole
charred lake
civic fractal
#

Si tu souhaites automatiser un peu, tu pourras donc faire :
<interaction Ou message>.guild.id

fallow light
#

Bonjour, j'essaye actuellement de faire une système en mode quand je warn quelqu'un, je peux mettre une certaine durée, et lorsque la date est expirée, la sanction s'enlève automatiquement du localhost. J'ai cherché partout, notamment sur google, mais je comprenais rien. On m'a dit qu'il fallait utiliser un setInterval et un Date.now(). J'ai réussi au niveau du setInterval, mais je trouve rien pour le Date.now(). Ducoup, il me semble qu'il faut que je fasse un onglet dans le localhost, mais j'ai des problèmes quand je fais ça, donc si quelqu'un arrive à m'aider, merci beaucoup.
Merci d'avoir lu !

queen oriole
#

Bonjour, excusez moi de vous déranger à nouveau mais j'ai essayer de créer une commande clear sauf que j'ai une erreur au niveau de mon FLAGS et je n'arrive pas à comprendre pourquoi... Merci d'avance de votre aide

true ravine
#

Bonjour. Ya pas un numéro de ligne d'erreur ?

orchid garden
#

Quel cursus me conseillez vous pour full stack JavaScript ?
´´´console.log(“pls")’´´

floral bolt
#

Oclock

queen oriole
true ravine
#

Et là on voit tout ton code ?

queen oriole
#

Nan

#

Tu veux que je l'envoie ?

true ravine
#

Je voudrais juste la partie où est située l'erreur ^^

queen oriole
#

bah je l'ai mise nan ?

true ravine
#

Doit yavoir le mot "flags" quelque part

#

FLAGS c'est censé être différent de flags, donc c'est bizarre

queen oriole
#

ah oui je vois, je vais regarder

#

j'ai relancé le programe et il m'a mis la même chose mais avec FLAGS

orchid garden
#

Quel cursus me conseillez vous pour full stack JavaScript ?
´´´console.log(“pls")’´´

orchid garden
#

Personne a rep

worn garnet
#

si une personne

#

et puis peu importe quelle école tu prend tu ne pourras pas etre vraiment dev full stack (si on a la meme def ^^) et ce qui va te différentier des autres c'est ton taff perso

#

apres je dirais que le mieux reste un IUT informatique mais tt depends ou tu veux travailler

#

si tu veux quelque chose de plus spe web par exemple tu as HETIC ou les gobelins, mais encore une fois tt va dépendre de ce que tu veux faire et ou

#

(et si c'est teletravaille ou pas, reconnu par l'etat ou pas...)

true ravine
#

ça dit que "Discord.Intents" est indéfini

queen oriole
#

Ah

#

Mais du coup comment je le défini ?

floral bolt
hasty shoal
#

Bonjour je voudrais savoir pourquoi je récupère undefined quand je fais ça (id a bien une valeur qui est l'id d'un user):
```let id = accounts[${user_id} / id]

const user = client.users.cache.get(${id})
console.log(user)

Merci
true ravine
true ravine
#

Moi j'pense que c'est plutôt que la clé est mauvaise

#

Dans la clé "id" est une sous-chaine, je sais pas si c'est normal

#

@hasty shoal qu'essaies-tu de faire avec ce code ? ${user_id} / id

#

(avec les backquotes en plus)

queen oriole
hasty shoal
#

cque je veux faire c'est envoyer un mp à cet utilisateur sans passer par interaction.user.send() mais plutot en partant de mon client, retrouver l'id et lui send

true ravine
#

Si user id vaut 4, ta clé vaudra la chaine "4 / id"

#

Attends je vérifie

hasty shoal
#

nan ça me récupere bien juste l'id

true ravine
#

Après c'est ptet normal je sais pas ce que contient "accounts"

#

Si tu voulais faire une division, il fallait juste écrire [user_id / id]

hasty shoal
#

bah en mode la clé c'est '${user.id} / id' et ça me renvoie bien la valeur contenant l'id

#

en gros je veux partir de cet id que j'ai, pour lui envoyer un mp

true ravine
#

Ah donc après le "let id" id a une valeur

#

Ok j'avais pas compris

hasty shoal
#

ok désolé. Et dcp quand je pars de mon bot avec client.users.cache.get('id') ça me trouve undefined