#javascript-typescript

1 messages · Page 19 of 1

rocky oar
#

Je t'avoue que là, je ne sais pas, je sais juste créer un fichier audio vide en .Wav xD

fleet scaffold
#

CA M AIDERAIS

rocky oar
#

Alors en JS je ferais comme ça si ça peut te donner une piste :

const wav = require('node-wav');
const fs = require('fs');

const audioData = {
  sampleRate: 44100,
  channelData: [ new Float32Array(44100) ]
};
const buffer = wav.encode(audioData);

fs.writeFileSync('audio_vide.wav', buffer);
fleet scaffold
#

Fin, c'est pourris

rocky oar
#

C'est la seule solution que je connais malheureusement comme je n'ai jamais manipulé l'audio via NodeJS :/

#

J'ai seulement manipulé l'audio sur FLStudio et AuditionCC XD

fleet scaffold
#

je t'explique pourquoi j'aime pas vite fait mdr

#

En gros, j'ai tenté de sortir de l'audio avec

#

et c'était pas génial

rocky oar
#

Qualité de merde ?

fleet scaffold
#

Même pas qualité de merde

#

juste impossible

#

une erreur "out of view"

rocky oar
#

AU PIRE, il y aurait pas un bot en OpenSource sur Gtihub qui ferait du Record audio ?
Comme ça tu peux jeter un coup d'œil sur comment ils sont fait (C'est ce que je ferais si je trouvais pas de réponses)

rocky oar
#

Alors je n'ai pas dis copier coller xD

#

Je suis contre aussi

#

Mais voir ce qu'ils ont utilisé par exemple

#

D'ailleurs à moins que ma mémoire me joue des tours, mais c'est pas ici qu'il y a un gars qui bosse pour Mee6 ?

#

Car peut-être que lui il pourrait t'aiguiller si c'est bien ici que j'avais vu ça

fleet scaffold
rocky oar
#

Ah je comprend mieux xD
Du coup la question bête, est-ce que NodeJS peut réellement gérer l'audio correctement ?

fleet scaffold
#

Oui, car ça passe pas par nodejs

rocky oar
#

Car il y a très longtemps en reprenant une de tes phrases, pendant la vague de bot musiques que tu avais loupé, j'avais essayé un bot nodeJS pour du streaming audio, et je n'avais pas une qualité de ouf

#

(Il téléchargeait l'audio puis le retransmettait) et j'avais constaté une différence avec python, après peut être que c'était moi qui avait merdé quelque part

fleet scaffold
#

Oulah attend

rocky oar
#

Mais du coup je suis à court d'idées pour t'aider sorry x)

fleet scaffold
#

je t'envoie un exemple

#

tiens un exemple du coup

#

ça à été record depuis un salon vocal ça

rocky oar
#

Bon j'avais merdé quelque part alors xD

#

Mais du coup, ça ce n'est pas ton bot, mais ce que tu veux essayer de faire

rocky oar
#

Ah mais du coup, ton problème c'est le fait que ton bot ne record pas le vide ??

fleet scaffold
#

Nan, mais, j'ai besoin de créer du vide

#

pour compiler les .wav que je créer XD

#

et créer un LONGGG .wav

#

comme un record du coup

rocky oar
#

C'est bon je crois que j'ai réussi à saisir ton problème xD
Le bot s'arrête de record quand personne ne parle du coup c'est bien ça ?

#

Car si c'est ça le soucis, il y a peut être moyen de remplacer la détection de voix par le fonctionnement d'un bouton ON/OFF via une commande

fleet scaffold
rocky oar
#

Uhm ... Et si ton bot émet du silence juste pour trigger le Speaking.on ça ne fonctionnerait pas ?

#

Genre, il emet du silence en continu, juste pour que son micro soit constamment trigger, comme ça, c'est du "Speaking" Constant

fleet scaffold
fleet scaffold
#

pas du bot

#

chaque audios est isolé

rocky oar
#

Arf du coup pas possible qu'il se record lui même

#

Tu as moyen de lui mettre des offset en paramêtre ? par exemple créer le wav seulement après 10 secondes d'inactivité du trigger Speaking ?

rocky oar
#

C'est la merde à gérer du coup

#

Enifn, je suppose que si ta lib serait compatible TS tu serais déjà tranquille

fleet scaffold
#

Ouais mdrr

#

Ah nan même pas

#

la lib compatible ts c'est pour autre chose encore mdrrr

rocky oar
#

AH xD

#

Du coup c'est pire x)

#

T'as essayer la manière brute avec un setTimeout ?

#

Et juste avec connection.on('speaking', (user, speaking) si ça se fait toujours

#

Comme ça, si speaking est à true, tu commence l'enregistrement, sinon, tu lui met un setTimeout, et à la fin de celui-ci seulement, tu enregistre le .wav

fleet scaffold
#

maintenant

#

Mais ça marche pas vraiment

rocky oar
#

Donc il n'y a plus le paramêtre qui permet de savoir l'état de speaking ?

fleet scaffold
#

Ouais

rocky oar
#

Quel bande de Chenapans* (Le bot m'a strike mon message précédent)

#

J'ai regardé comme tu as déjà du le faire mais comme toi j'ai aucunes idées de comment faire x)

#

Mais du coup, ce n'est plus possible de vérifier l'état de speaking, donc soit les bots qui record encore fonctionne avec les anciennes version de discordJS soit, il y a une nouvelle méthode

#

Pouah et là en plus j'ai le cerveau qui fume à cause de Strapi là ><
Mais du coup j'ai régler mon problème de manière assez brutale, mais je pense que c'était la seule solution

rocky oar
mellow parrot
#

Bien le bonjour

#

Vous allez bien ?

#

Pouvez-vous m'aider sur ce code ?

#
const Discord = require("discord.js")


module.exports = async (bot, oldGuild, newGuild) => {


    const nameChanged = oldGuild.name !== newGuild.name;

    // Vérifier si le fondateur a changé
    const founderChanged = oldGuild.ownerID !== newGuild.ownerID;

    // Vérifier si l'icône de la guilde a changé
    const iconChanged = oldGuild.iconURL() !== newGuild.iconURL();

    // Créer un embed pour afficher les informations de la mise à jour
    const embed = new Discord.EmbedBuilder()

        .setTitle('Guild mise à jour')

        .setDescription(`La guilde ${newGuild.name} a été mise à jour.`)

        .addFields(

            { name: 'Changements', value: `${nameChanged ? 'Nom modifié\n' : ''}${founderChanged ? 'Fondateur modifié\n' : ''}${iconChanged ? 'Icône modifiée\n' : ''}` },

            { name: 'Ancien nom', value: oldGuild.name },

            { name: 'Nouveau nom', value: newGuild.name },

            {name: 'Ancien fondateur', value: `${bot.users.cache.get()(oldGuild.ownerID)}`},

            {name: 'Nouveau fondateur', value: `${bot.users.cache.get()(newGuild.ownerID)}`},

        )

        .setTimestamp();```
#

J'ai cette erreur :

#

En vous remerciant
PS : c'est un évent guildUpdate.js

crude bramble
#

commande clear

tacit smelt
#

Bonjour, j'ai fais un globe avec threejs et lorsque je souhaite placer un point sur celui-ci, les coordonnées ne sont pas vraiment précises. Par exemple lorsque je mets les coordonnées de Paris, le point apparait au niveau de la Normandie.

Voici le code qui gère la création du marqueur

    function createMarker() {
        const latitude = 48.856613; // Paris
        const longitude = 1.352222;
        const markerGeometry = new THREE.SphereGeometry(0.001, 32, 32);
        const markerMaterial = new THREE.MeshBasicMaterial({ color: 0xffffff });
        const marker = new THREE.Mesh(markerGeometry, markerMaterial);
        const phi = (90 - latitude) * Math.PI / 180;
        const theta = (180 - longitude) * Math.PI / 180;
        marker.position.set(
            -radius * Math.sin(phi) * Math.cos(theta),
            radius * Math.cos(phi),
            radius * Math.sin(phi) * Math.sin(theta)
        );
        sphere.add(marker);
    }```
crude bramble
tacit smelt
glacial lily
#

pupetter

fleet scaffold
tacit smelt
clear crater
#

Bonjour j'ai un problème j'ai fais une slash commande sous discord js v13 voilà le fichier de ma commande(screen1), bref c'est une commande de test mais rien ne se passe quand je l'exécute elle est bien créer sur mon discord mais ne marche pas. D'après moi le problème viens certainement de mon handler le voici pour déclarer les commandes(screen2). Auriez vous une solution Merci d'avance

crude bramble
#

hello quel est l'erreur ?

clear crater
#

mais le soucis c'est qu'il n'y a pas d'erreur console juste quand je fais la commande voilà ce que le bot dis sachant qu'il à bien évidemment les perms

frosty sand
#

Fais voir dans le terminal ta version

clear crater
#

tiens c'est dans mon package json

#

tu voulais bien la version de mon discord js ou juste de mon coté ce qu'il ce passe ci c'est ça bah rien tout se lance normalement

frosty sand
#

Tu fais quoi pour lancer node . node main node index.js ou tapuille sur exécuter ?

clear crater
#

node index

clear crater
#

@frosty sand

floral bolt
clear crater
#

C’est à dire

arctic obsidian
#

Bonjour je voudrais savoir pour le coté css j utilise taillwind css je voudrais savoir es que je peut aussi rajouter bruma ?

arctic obsidian
#

ah ok merci

slim anvil
#

essaye de voir si déjà avec https://headlessui.com/ tu peux pas trouver ton bonheur

Completely unstyled, fully accessible UI components, designed to integrate beautifully with Tailwind CSS.

#

tu as pas mal de composants, mais qui utilise tailwind aussi

#

ça évite de charger un max de CSS en +

arctic obsidian
#

bruma est taillin il son suprebe les deux

crude bramble
#

bonjour à tous, j'ai un soucis ici

#
db.query(`SELECT type, raison, date FROM sanctions WHERE utilisateur='${membre.id}'`, async (error, donnees, fields) => {
                let raisons = "";

                donnees.forEach((donnee) => {
                    raisons += `**${donnee.type}**\n${donnee.raison}\nLe: <t:${parseInt(donnee.date / 1000)}:f>\n\n`
                });
            });
#

l'argument de type number n'est pas attribuable au paramètre de type string

floral bolt
#

et c'est quel argument ?

crude bramble
#

ah pardon donnee.date

#

la date est stocké en db elle etait en varchar et j'ai modifié en bigInt

past nimbus
#

Ouch les injections SQL

crude bramble
#

voici mon code complet

crude bramble
#

c'est un SELECT

past nimbus
#

SELECT type, raison, date FROM sanctions WHERE utilisateur='${membre.id}' Peu importe qu'il s'agisse d'un SELECT, INSERT etc... si member contient le bon code, il peut drop ta database

past nimbus
crude bramble
#

le soucis n'est pas là toute façon la première requete est inutile, une seul suffirais

#

je récupère bien mes données aussi, je coince juste sur le typage

crude bramble
#

et la commande accepte un user ni plus ni moins

past nimbus
crude bramble
#

pour éviter les injections ont ne fait pas confiance au client...

#

a quel moment je fait mon select avec une donnée fourni par le client ?

past nimbus
#

Pas client, mais tous services externes
Je me doute que member c'est l'entité member de discordjs

#

Et même avec tes data, jamais on insert des variables dans une requête SQL comme ça

crude bramble
#

ont tourne en ronds mais ça résout pas mon problème

past nimbus
#

Donne le message d'erreur stp

crude bramble
#

l'argument de type number n'est pas attribuable au paramètre de type string

marsh torrent
#

Retire juste ton parseint

crude bramble
#

bah non pas le but recherché

marsh torrent
#

Bah parseint te créer un number et ça attend une string

crude bramble
#

mais ma date stocké en db n'est pas une string main un bigInt => 1683693943092

marsh torrent
#

Le problème c’est que t’as pas de typage sur tes données et ts aime pas, tu le vois donnees est considéré comme any

crude bramble
#

c'est là ou je coince aussi pour moi donnée est un object

#

mais si je type j'ai une autre erreur

#

donnee.type n'existe pas par exemple

marsh torrent
#

Après dans les autres erreurs ils disent que ce que tu as dans le parseint est déjà au format number, du coup t’as pas besoin du parseint

hushed garnet
#

rajoute as unknown as number

#

si t'es sure que c'est bon

#
parseInt(donnee.date / (1000 as unknown as string))
crude bramble
#

c'est même pas parseInt qui pose problème c'est le => / 1000

hushed garnet
#

ah oui bah oui logique

crude bramble
#

parseInt(donnee.date )

#

ça passe

hushed garnet
#

voila

#

la c'est bon

crude bramble
#

mais là ma date seras pas bonne

#

tin abuse ts quand même

#

datetime /1000 => number

hushed garnet
#

c'est juste ton code

#

sinon tu parse d'abord ta date et après tu divise...

past nimbus
violet knot
violet knot
hushed garnet
#

C'est pas parseInt le soucis

#

la c'est juste une erreur de typage

#

tu peux parser un int sans soucis

#

mais parseInt attend une string

past nimbus
crude bramble
#

123456789 === number

#

'123456789' === string

hushed garnet
#

tu as juste a rajouter as unknown as string

past nimbus
#

Il a pas besoin de caster si il type son retour

crude bramble
#
db.query(`SELECT type, raison, date FROM sanctions WHERE utilisateur=${membre.id}`, async (error, donnees, fields) => {
               //let raisons = "";

                donnees.forEach((donnee: any) => {
                    const date = (donnee.date/1000);
                    
                    console.log(date.toString());
                    raisons += `**${donnee.type}**\n${donnee.raison}\nLe: <t:${parseInt(date.toString())}:f>\n\n`
                });
            });
#

là ts ne rale plus

#

et ça fonctionne en plus 😅

#

merci à vous en tout cas

#

reste juste le typage de => donnee et del la première requete sql qui sert à rien

hushed garnet
#

fait surtout gaffe aux SQLI

past nimbus
#

Les conventions de nommage
Passe en async/await plutôt en callback
Au diable les forEach, tu peux map into join
Tu traites pas jamais tes retours d'erreurs
Ton async est pas du coup bien géré, là si t'as une erreur tu vas très mal l'handle
Tu vérifies jamais que les props existent avant d'y accéder

keen narwhal
#

Sérieux utiliser TS pour faire des requêtes SQL à la main je ne vois pas l’intérêt

#

Test ça tu vas revivre

#

@crude bramble

crude bramble
#

Quel est le rapport avec ts et SQL ?

keen narwhal
#

Je ne vois pas l'intéret d'utiliser un langage typée si c'est pour avoir une db non typée

#

Surtout que le plus important dans le typage c'est vraiment les modèles de db

fleet scaffold
keen narwhal
#

Y'a rien de dur sur prisma

#

Et pour avoir tester TypeOrm j'aime pas

#

au niveau des relations

fleet scaffold
#

non, oulah

#

c'est PAS dur prisma

keen narwhal
#

C'est simple comme bonjour prisma wtf

#

Bonjour

#

Tu vois c'est pas compliqué

fleet scaffold
#

putain

keen narwhal
#

bah prisma c'est pareil

fleet scaffold
#

Je me suis trompé tu m'enerve

cyan iron
fleet scaffold
#

j'ai fait 4 heure de dev sur papier okay ? Donc si je me goure c'est normal

cyan iron
fleet scaffold
#

bref, donc je disais, typeorm y a pas d'étape de compilation, y a pas de commande cli, c'est FULL typescript, et ça permet de lancer le projet super vite

keen narwhal
#

Et ducoup pourquoi t'aime pas prisma ?

fleet scaffold
#

mais c'est pas que j'aime pas prisma ???

keen narwhal
#

c'était pas si long

#

x)

#

Nan en vrai utilise ce que tu veux

#

Perso prisma c'est dans mon coeur

fleet scaffold
keen narwhal
#

en plus ils ont une interface de DB prisma Client c'est magnifique ca me fais bander

fleet scaffold
#

Et du fait que c'est pas du TS, c'est du temps à prendre en compte aussi

#

pour un projet c'est important mine de rien

keen narwhal
#

Fin bref le sujet c'était faire du TS avec du SQL natif quelle horreur

fleet scaffold
#

bof

#

si tu sais typer tes retour y a 0 soucis

#

Je l'avais fait perso

keen narwhal
#

Prisma pas du ts ?

fleet scaffold
#

non

#

Tu transpile prisma dans du TS, mais à la base c'est pas du TS ce que tu écrit

keen narwhal
#

Je comprend pas ce que tu veux dire, prisma te génère des milliers de lignes de typage pour ta DB

#

donc c'est hyper bien typée

#

C'est même incroyablement bien typée

past nimbus
#

Y a encore un débat sur les ORM? 😐

fleet scaffold
#

prisma génère, donc prisma à la base c'est pas du TS

#

tu viens de le dire toi même

keen narwhal
#

Il génère le typage de ta db

fleet scaffold
#

Moi aussi j'aime beaucoup prisma, mais faut pas ce voiler la face sur le process de création du schéma au départ mdr 😂

keen narwhal
#

que tu as préalablement modélisé sur Looping ou Jmmerise

fleet scaffold
#

au départ tu fais pas du TS pour définir ta bdd

#

inh ??

#

ont utilise pas le même prisma là du coup

keen narwhal
#

perso je fais pas mes modèles avec prisma

#

Je les fais avec un modélisateur de base de donnée

fleet scaffold
#

🤔

fleet scaffold
#

je les fais avec un bloc notes

#

ça marche bien

keen narwhal
fleet scaffold
#

putain

keen narwhal
#

Ensuite ca me donne le code SQL

#

je le push sur ma db

fleet scaffold
#

je pensais pas que des humains utilisait ce truc

keen narwhal
#

et je dis a prisma de récupérer mes tables db et générer le typage

keen narwhal
#

Et en entreprise c'est juste obligatoire

fleet scaffold
fleet scaffold
keen narwhal
fleet scaffold
#

my bad

keen narwhal
#

Yep

#

et franchement les modélisateurs de base de donnée c'est incroyable pour gérer les relations

#

ou au moin avoir une représentation graphique de ta db

fleet scaffold
#

j'utilise phpmyadmin

keen narwhal
#

Oui

fleet scaffold
#

j'ai la représentation graphique ect...

#

c'est mieux que rien mdr 😂

keen narwhal
#

OUi :/

#

après je comprend que ca fasse peur

floral bolt
#

Après y’a code planner qui est sympa

#

Mais il ne te sors pas de code, enfin pour l’instant

#

Ça reste du reactflow donc y’a toujours quelques bug ..

keen narwhal
#

y'a que moi ou l'api discordjs bug ??

glass cargo
crude bramble
#

bonjour je rencontre un soucis avec ma command help voici l'erreur

#

et voici mon code

#

et pourtant j'ai bien des fichiers dans le repertoir

#

je vous laisse aussi la structure du projet au cas ou

pure tiger
crude bramble
pure tiger
#

Tu as essayé /commands/utilitaires/

#

@crude bramble

crude bramble
#

oui également

past nimbus
#

Au secours le franglais

keen narwhal
past nimbus
pure tiger
past nimbus
slim anvil
#

car j'ai l'impression que tu essayes de faire ce qui ai déjà surement fait par le ShewenyClient

crude bramble
slim anvil
#

j’ai testé et tu y as bien accès 🙌

#

est ce que c’est la meilleure manière je sais pas, mais ça t’évitera de venir relire tes fichiers à chaque fois que c’est appelé

crude bramble
#

sur un autre projet hors sheweny j'avais ça

#
const commandHelp = client.commands.filter(v => v.category === 'utilitaires').map((v) => `/**${v.name}** ${v.description}`).join("\n")
            console.log(commandHelp);
#

j'avais donc testé this.client mais pas accès à commands ce qui aurais été simple

slim anvil
#

tu peux faire quasi quelque chose d'identique sur sheweny

glass cargo
#

C’est toi qui définie les réponses kapp

crude bramble
#

bonjour à tous du coup pour ma commande help j'en suis arrivé là

#

du coup me reste l'erreur suivante

#

voici une de mes command si jamais

tacit smelt
#

Bonjour, je suis à la recherche d'aide concernant un projet THREEJS. Plus précisément, j'ai fais un globe terrestre jusqu'ici tout va bien, sauf que ça se complique lorsque je tente d'y ajouter les tracés des frontières. J'ai d'abord essayé avec des frontières en png, qui ne marchait pas mais soit, je me suis vite rendu compte qu'en réalité utiliser cette technique sera bien trop compliquée car à terme, je souhaiterais faire en sorte que ces frontières soient modifiables par l'utilisateur et doivent donc être dynamiques. Auriez vous des solutions s'il vous plait, merci.

pallid plume
#

Je suis pas un expert threejs mais pas sur que ça soit possible pour tracé t'es frontière sinon moi je l'aurai directement fait sur la texture que t'as sur le globe

#

Pis edits aussi sur ta normal map

tacit smelt
pallid plume
#

Ah oui aussi

tacit smelt
#

Je comprends très bien le système etc mais franchement j'y arrive pas x)

#

Moi quand je le fais c'est ça

#

PepeClown bref la seule chose qui va à la limite c'est le fait qu'on puisse distinguer certains continents

floral bolt
#

Ça va rendre trop bien quand tu aura reussi !

strange thicket
#

Ça à l'air vraiment style ThreeJs

tawny path
crude bramble
#

bonjour j'aurais besoin d'interroger des serveurs pour savoir s'ils sont en ligne ou pas, j'ai donc un début de code mais je teste sur un domaine qui n'existe pas pourtant j'ai pas d'erreur j'ai même le ping lol

past nimbus
#

C'est pas un ping ça

#

🤔

#

J'imagine que tu as copié/collé du code vu que tu mélanges des vieilles pratiques à de nouvelles

crude bramble
#

je cherchais une solution car il faut que je teste le host et le port

#

la fonction est en partie copier/coller oui mais c'est pas finalisé

#

bon regarde pas le embed il n'as rien à voir aussi

crude bramble
oak turret
#
#

et tu fonctionnes avec un .then() et .catch(), ça sera plus simple

past nimbus
#

await async plus simple

oak turret
#

moi je fais comme ça et ça fonctionne très bien

past nimbus
#

J'ai pas dis que ça fonctionnait pas

oak turret
#

Tiens t'as un exemple de la doc :

import fetch from 'node-fetch';

try {
    await fetch('https://domain.invalid/');
} catch (error) {
    console.log(error);
}
crude bramble
#

ne fonctionneras probablement pas non plus

oak turret
#

Je vois pas pourquoi toi ça fonctionnerait pas, test et tu verras bien

red torrent
crude bramble
#

D'après la doc fetch demande une URL

floral bolt
#

Tu peux regarder comment marche uptimekuma

crude bramble
frank kayak
#

Salut, quels types de service ?

crude bramble
#

Ssh FTP dns

frank kayak
#

Normalement ça peut transiter dans la barre d’adresse par exemple pour le ftp://

#

Reste à savoir si tu peux obtenir avec fetch une réponse de status

rocky oar
#

Si tu veux vérifier que des ports sont ouvert avant de les requêter, vérifie avec NMAP

crude bramble
#

Ça peut le faire

frank kayak
#

Je sais pas si tu cherches ça

#

J’ai lu que tu cherchais à avoir aussi leur uptime

crude bramble
frank kayak
#

Ouais donc un status et un ping en ms

#

J’imagine

crude bramble
frank kayak
#

Ah merde pas moyen d’avoir ça avec ftp:// ou ssh:// ?

#

On peut pas tricher ? 😅

crude bramble
#

Non mais suffit d'avoir une réponse

frank kayak
#

Ouais, j’espère que tu trouveras, je serai bien curieux 🙂

crude bramble
#

Des solutions doit y en avoir vu que cela a déjà été fait

#

Faut juste trouver la bonne

fleet scaffold
#

Analyse des ports

#

👀

crude bramble
#

curl attends un retour me semble 😉

#

curl n'est pas fait pour ça non plus

fleet scaffold
#

alors telnet

#

telnet

crude bramble
#

pour http ssh ftp je pense qu'il est possible de passer par fetch enfin à tester

#

après pour les serveurs dns je vois perso pas l'utilité de retourner la latence

#

je dirais que simplement retourner le statut suffirais

crude bramble
#

bon j'ai trouvé mais le retour reste sur undefined 🤔

slim anvil
#

pour ton return en undefined regarde bien ton code tu devrais comprendre assez vite 😬

#

assez obvious

pallid plume
#

If status.online === true Il connaît pas juste status.online ?

slim anvil
#

oui tu peux le faire en ternaire mais c’est pas pour ça que ça marche pas 😬

pallid plume
#

Le problème est là

#

Je te laisse chercher pourquoi

crude bramble
#

j'ai modifié logiquement pas besoin du let un simple return devrais le faire mais même résultat lol

#
function ping(host: string, port: number) {
        const started = new Date().getTime();

        tcpPingPort(host, port).then((statut: any) => {

            const ended = new Date().getTime();
            const milliseconds = ended - started;

            if (statut.online === true) {
                console.log(statut, milliseconds);
                return `🟢 Online (${milliseconds} ms)`;
                
            }
            else {
                console.log(statut, milliseconds);
                return `🔴 Offline`;
                //console.log('injoignable');
                
            }

        });
    }
pallid plume
#

Le problème est toujours au même endroit

rocky oar
#

Yop ✌️
Dites j'aurais une question :

Actuellement je développe une application web (juste pour le fun), avec un back-end NodeJS avec le CMS Strapi.io, j'ai un front-end en VueJS, et une partie authentification géré par le provider Discord, jusque là tout est fonctionnel, il me reste plus qu'à faire persister la connection au refresh de la page et conserver le JWT permettant de faire les requêtes API, du coup ma question est :

J'ai le choix entre utiliser le localstorage ou les cookies, étant donné que je n'ai jamais eu à gérer ça auparavant (Car ce n'a jamais était mon rôle de le faire), je ne sais pas lequel des deux est le mieux / + sécurisé pour ce cas d'utilisation

pallid plume
#

Pas de Nuxt ou quoi par dessus ?

#

Tu peux le mettre en localstorage si c'est le cas et que tu fais pas du SSR

rocky oar
#

C'est ça, juste VueJS et Pinia pour le store front

#

Pas de SSR oui

#

Je cherche à perfectionner mes connaissances sur VueJS avant d'attaquer Nuxt

pallid plume
#

Bah localstorage je dirais 🤷‍♂️

pallid plume
rocky oar
#

Ça roule 👍

crude bramble
pallid plume
#

Bah je sais pas t'as une promise ?

#

Si tu veux attendre la réponse de ta promise ?

#

tiens c'est un exemple

#

Je peux le traduire si tu veux

#

La je peux pas faire plus normalement t'as la réponse

crude bramble
#

j'ai du mal ce matin 😅

#
async function ping(host: string, port: number) {
        const started = new Date().getTime();
    
        try {
            const statut = await tcpPingPort(host, port);
    
            const ended = new Date().getTime();
    
            const milliseconds = ended - started;
    
            if (statut.online === true) {
                return `🟢 Online (${milliseconds} ms)`;
            }
    
            return `🔴 Offline`;
        } catch (error: any) {
            return `⚠️ Error: ${error.message}`;
        }
    }
    
    const test = ping("google.com", 80);
slim anvil
#

tu as rien changés

#

tu as juste utiliser async/await au lieu de .then/.. sur l'appel de tcpPingPort

pallid plume
#

en effet

slim anvil
#

prend le temps de te réveiller du coup, et relis ton code
je pense ca peut etre bien pour toi de trouver le soucis, il t'a déjà donné un bon indice, good luck!

rocky oar
# pallid plume Bah localstorage je dirais 🤷‍♂️

J'ai mis le système du LocalStorage en Place, il est fonctionnel, et du coup j'aurais une autre question :

En terme de sécurité, je voudrais qu'au bout de 24h, mon utilisateur soit obligé de ce reconnecter, du coup je prévois de faire ça :

  • à la connexion je compte stocker dans le localStorage le Date.now() dans la key "Last Connexion"
  • à chaque fois que l'utilisateur reviens sur le site je check que la variable "Last Connexion" n'excède pas les 24h, si c'est le cas, je supprime le localStorage pour que la personne doit ce reconnecter.

Tu pense que c'est une bonne solution ?

#

En sachant qu'une déconnexion manuelle est possible :

pallid plume
#

Non t'as déjà tout dans le token normalement

#

L'expiration est dans le token

rocky oar
#

Ah oui bien vu 🤦‍♂️

pallid plume
#

Quand il revient sur le site soit tu fais un middleware qui check avant d'être sur la page si l'expiration de son token est passé et tu l'envoie sur login sinon tu le refresh

rocky oar
#

D'accord ça roule, merci 👍

crude bramble
#

nous y voilà presque

#

ça fonctionne en partie mais là pour l'exemple le domaine n'existe pas ni même le port

#

et j'ai donc une erreur venant de discord

pallid plume
#

Sur ça je pourrais pas t'aider j'ai jamais touché à l'api Discord

slim anvil
#

log ton test

#

ah c'est ton interaction

#

faudrait pas deferReply le temps de faire ta requête? je sais pas si c'est lié mais surement

#

testons

marsh torrent
#

Dans ton reply tu dois lui passer un truc qui plait pas, soit ton embed soit le content vide qui est pas obligé d'ailleurs pour envoyer un embed tu peux juste lui passer l'embed seul

#

Ou soit ton délai de traitement avant le reply est trop long comme l'a dit enzo, essaie avec un defer

crude bramble
#

bien vu

#

bon il y a des choses à corriger mais voilà

#

bon j'ai enlevé le wait aussi

marsh torrent
#

Ouai j'étais en train de me demander la pertinence du wait haha

crude bramble
#

bah il aurais balancé le embed avait que tout soit exectué peut être lol

marsh torrent
#

Comme tu "await" partout où t'as des délais c'était pas censé arriver 🙂

#

Par contre je veux bien le lien où t'as eu tcpPingPort, j'en ai pas l'utilité mais dans le futur sait on jamais 🙂

crude bramble
#

sur npmjs 😅

#
marsh torrent
#

Ah le site est cassé chez moi, pour ça que je trouvais pas 🥲

crude bramble
#

ah

#

bon pas de fichier de def ts malheureusement et plus de maj depuis 2 ans

#

mais bon, ça fait le taf

fleet scaffold
crude bramble
slim anvil
#

surtout pas t'amuser à faire sa pour une lib externe mdr

fleet scaffold
#

harold ça dépend

#

Je l'ai fait pour un module ou j'avais besoin de typage

crude bramble
#

après c'est un module qui ne semble plus maintenu, fonctionel pour le moment mais à voir dans le temps aussi

fleet scaffold
#

Le miens datait de y a 4 ans, et flemme de chercher à refaire ce qu'il fait avec ffmpeg 😭

crude bramble
#

parfois faut reprendre un truc pour que le créateur se remette au taf 😅

#

j'ai eu le coup avec un bundle SF lol

crude bramble
#

ou parfois fau( arrêter de vivre et respirer...

ocean bluff
#

Je vois pas le soucis à prendre même pas quelque minute pour le typé

#

En plus c'est une fonction c'est pas long à faire

#

Et tu peux toujours faire des exceptions en TS si ta la flemme à ce point

#

Après si il a plus de maj c'est que c'est inutile et que le package doit suffire au créateur aussi

floral bolt
slim anvil
#

c’est pas la mort non plus

#

et y a pas 30 façons d’utiliser la fonction

fleet scaffold
slim anvil
#

???

fleet scaffold
#

Bah, ça retournera toujours void en typescript

slim anvil
#

mais je répond à snow

fleet scaffold
slim anvil
#

dequoi tu me parles

fleet scaffold
#

ah yes

#

je suis fatigué

ocean bluff
#

Limite juste a faire un CTRL C + CTRL V pour typer le module

fleet scaffold
#

effort 0

#

Lui il a pas encore obtenu le skill développeur

ocean bluff
#

Nan vrm si ta la flemme de typer une fonction qui a déjà du jsdoc c'est chaud

#

Et encore juste passer la souris sur la fonction pour voir ce que ça donne c'est trop dur pour lui

fleet scaffold
#

note à moi qui a du typer 5 modules differents pour mon bot discord harold

ocean bluff
#

C'est amusant a faire je trouve

slim anvil
#

vous à chaque fois

ocean bluff
#

Jsp je suis bizzare

fleet scaffold
#

c'est chiant un peu mdr

ocean bluff
fleet scaffold
#

la branlette c'est cool 😎

ocean bluff
#

Trop

slim anvil
#

je sais pas si on peut dire que c'est de la branlette

#

ou pas juste de l'auto fellation

floral bolt
ocean bluff
#

J'aime souffrir

floral bolt
#

C’est pourquoi il reprend un code qu’il ne comprend pas

fleet scaffold
#

Ouais franchement, qui a dit que c'était interdit de s'auto sucer

#

ont ce trouve bon... harold

slim anvil
#

à ce niveau faut juste doser

#

oui c'est bien de se trouver bon tant mieux

#

mais je vous jure que c'est constant dans ce channel et tjrs les mêmes

#

regarde je parle à quelqu'un d'autre, direct tu viens pour me corriger sur un sujet alors que c'était HS

ocean bluff
#

Attend tu parles a ki mdr

#

Je crois je suis pas concerné enft

slim anvil
#

je dis juste que vous savoir doser

fleet scaffold
#

nann je te répondais même pas de base, juste j'ai miss click sur ta réponse

ocean bluff
#

Ah tu parles a garder ?

ocean bluff
#

Je savais que j'étais puceau

#

Je me disais bien

hollow shadow
fleet scaffold
#

je sais doser, mon biberon fait toujours 50 CL

floral bolt
#

Fait gaffe 250ml max

slim anvil
#

c'est vraiment pas méchant mais vraiment parfois faut doser

floral bolt
#

8 cuillères de lait

ocean bluff
#

Sad je me sens seul

fleet scaffold
#

C'est tout

#

c'est pas passée mdr 😂

slim anvil
floral bolt
#

Sinon vous pouvez me donner le nom de votre fournisseur ça a l’air super bon ce que vous prenez

slim anvil
#

mais vous voyez quand vous êtes là à vouloir lui dire de typer, typer, typer

#

alors qu'il savait pas utiliser une promise

ocean bluff
slim anvil
#

genre juste doser, vous voyez bien qu'il en est pas là

#

justement je parle de lui

slim anvil
#

c'est pas méchant les gars, juste imaginez vous êtes pas encore à ce niv, et on vient vous dire "go typer, go typer"

fleet scaffold
ocean bluff
#

Fredy utilise le ts x)

ocean bluff
#

Il utilise le TS

slim anvil
#

Si si

ocean bluff
#

Je le précise juste que il a du jsdoc

floral bolt
#

Mais après il y a un gars qui a poster un screen avec le code de freddy

slim anvil
ocean bluff
#

Et que faire un fichier de déclaration est juste simple

slim anvil
#

mais il sait pas use une promise

#

ni boucler sur une map

fleet scaffold
#

Du coup je comprend pas pourquoi un mec est venu après, à copier coller le code, et à lâcher un "ça marche pas"

slim anvil
#

donc bon

ocean bluff
slim anvil
ocean bluff
#

La cest toi qui fait 0 effort enzo

floral bolt
#

Sachant que même si il type ça ne changera rien car la fonction pingmachin ne renvois rien

slim anvil
#

Ok Hecone remonte un peu dans le channel d'aide, tu comprendras 🤷

floral bolt
#

Tcppingport?

ocean bluff
fleet scaffold
#

avec plusieurs donnée dedans

ocean bluff
#

Je lai répondu avec 0 agression en lui disant que le module a déjà du jsdoc et pour utiliser le module en TS il faudrait juste typer une fonction

fleet scaffold
#

host, ping, online...

slim anvil
ocean bluff
#

En plus typer typer typer c'est un peu le but du ts..

slim anvil
#

on se comprend pas

ocean bluff
#

Surement

#

Je vois juste pas le mal que j'ai fais

floral bolt
#

Pas la

fleet scaffold
ocean bluff
#

Au moment où je l'ai répondu c'était pour son message que il pouvait pas utiliser le module en TS

#

Et pas un problème de promise ou autre

floral bolt
slim anvil
#

passons à autre chose

fleet scaffold
#

c'est le même module non ?

ocean bluff
#

Je comprends pas tu veux en venir ou alors

floral bolt
#

Il a essayé de refaire la fonction au lieu d’import le module

ocean bluff
slim anvil
#

en venir au fait ou vous etes très bandeur de typescript

#

genre a little bit 🤏

fleet scaffold
#

AH OUI MDRR

slim anvil
#

a bit too much

fleet scaffold
#

il a cliquer sur la fonction n'existe pas, la créer pour moi 😭😭😭

slim anvil
#

ts c'est cool c'est clair, mais pas au point d'en parler tous le temps, etc, vraiment regarde le channel c'est quasi constant :p

fleet scaffold
#

bah si tu fais du typescript pour ne pas typer, autant rester en JS 🤔

ocean bluff
#

J'ai vraiment juste abordé le ts parce que il en a parlé ou quand c'est le sujet de conversation

#

Sinon j'en parle jamais

slim anvil
#

mais je te cible pas forcément toi en particulier, juste dans le canal c'est vraiment souvent

ocean bluff
#

Ah ok

#

Je pensais tu magressé

slim anvil
#

non jamais

#

désolé si c'est perçu tel quel

ocean bluff
#

Okok t'inquiète

fleet scaffold
#

bref

ocean bluff
#

Je répondais juste à la demande de fredy pour utiliser le module en TS si tu l'as mal perçu excuse moi alors

fleet scaffold
#

de toute manière, ont à même pas bien regardé le screen

#

Et il avait juste pas importer le module

ocean bluff
#

Je traîne ici quand j'ai du temps a perdre alors je remarque pas souvent

slim anvil
#

le mec du screen c'est encore un autre niveau lui

#

y a le niveau crack

#

il a réussi a le dépasser

#

j'avais pas vu non plus ce qu'il avait fait, c'est mignon

floral bolt
#

Vous êtes partis super loin en vrai

fleet scaffold
#

il a compris comment ont devient un dev expirimenter, en refaisait la roue harold

ocean bluff
floral bolt
#

Sinon il a pas typer hein kappa

fleet scaffold
#

"je n'ai pas de voiture, plutôt que d'utiliser la voiture qui existe je vais refaire une voiture maison"

fleet scaffold
#

voilà, j'ai typer mon module harold

floral bolt
#

Je parle de l’autre type

fleet scaffold
#

l'autre c'est un autre niveau

slim anvil
#

tu vois Hecone harold tu comprends mieux now

floral bolt
#

Zeliose

#

Il a pas typer c’est mal du coup non ?

slim anvil
#

pas fallu attendre longtemps

fleet scaffold
#

Ici c'est pas gênant

floral bolt
#

Non mais c’est du second degré là

fleet scaffold
#

ah

#

Je me suis réveillé y a pas longtemps

floral bolt
#

Pardon j’ai pas mis le kappa

#

C’est de ma faute

ocean bluff
#

Je vais retourner sur War selection même si c'est pour troll voir ça me fait mal au coeur

fleet scaffold
#

Je vais peut être devoir dev en PHP, ça me fera du bien

floral bolt
#

On peu plus mettre le mot qui commence par « c » et fini par « on » ?

fleet scaffold
#

caon

floral bolt
#

Ah si !

fleet scaffold
#

cton

#

kon

#

t'es kon harold

#

citron

floral bolt
#

Je vais avoir l’impression de parler avec mon fils, « c’est pas bien ça il y a que coq qui font ça »

#

Pour radoucir cette discussion voilà des oiseaux

fleet scaffold
#

jejej

magic scaffold
#

Bonjour, je suis actuellement en train de développer une extension pour chrome. Mon extension injecte des "thèmes" (fichiers css) dans certaines pages. Je voudrais faire en sorte que l'utilisateur puisse télécharger les thèmes depuis un site et non que les thèmes soient présents de base dans l'extension mais je ne sais pas comment m'y prendre. En gros comment faire pour les télécharger dans un dossier situé dans l'extension même ?

Voila, merci.

fleet scaffold
magic scaffold
#

Oui mais pour executer un script il me faut un fichier

#

chrome.scripting.executeScript({target: {tabId: tabs[0].id}, files: ["scripts/test.js"]})

fleet scaffold
#

tu n'as qu'à faire un script qui evalue un contenu

#

script.js =
eval(script du storage)

magic scaffold
#

Mais certains stites bloquent

#

En gros il bloquent le eval

fleet scaffold
#

ils bloqueront pas ça

#

c'est une extension

#

les extension sont pas bloqué

magic scaffold
#

Bah pour le coup j'ai déjà exxayé et si :'(

fleet scaffold
#

alors, t'as aucun moyen

magic scaffold
#

Ah

fleet scaffold
#

tu dois faire un script global qui permet d'injecter du css

magic scaffold
#

Oui mais dans la page le theme injecte aussi du js

#

en gros un thème c'est un fichier "script.js" et "style.css"

fleet scaffold
magic scaffold
#

bah le sites bloquent pas si je fais ça

script = document.createElement('script');
        script.setAttribute("src", chrome.runtime.getURL("scripts/extension.js"));
        document.head.appendChild(script)

mais le fichier doit être dans l'extension

fleet scaffold
#

ça marcherais pas ?

magic scaffold
#

Pour certains mais d'autres bloquement les scripts externes

olive lake
#

Bonjour ! J'ai un problème assez problématique sur mon bot. Il crash sans faire d'erreurs lorsqu'il essaye d'envoyer un fichier, ce qui est assez ironique, c'est qu'il m'envoie une erreur quand mon fichier ne peut pas être envoyé et quand je me base sur les autres tutos et que tout à l'air bon. PAF, ça marche plus. Donc je ne sais même pas si c'est discord où une histoire d’autorisation sur mon ordinateur (c'est un mac si ça peut aider).

L'objectif de base de la commande est de générer une image via @napis/canvas et de l'envoyer via un embed. La génération de l'image n'a aucun problème car j'arrive à générer l'image dans mes fichiers avec le même code et quand je log l'attachment builder, il a une tête correcte.
Ça fait bien une heure que je cherche et ça m'a permis d'essayer pleins de choses mais rien à faire. Je pense que c'est lié à l'envoi de fichiers lui même. Ce qui serait top, c'est de régler ça puis après regarder pour mettre l'image dans un embed. Pour faire simple, j'ai pris l'embed par défaut du guide discordJS. *Et non je n'ai pas mi le code entier car il est énorme et peu facile à comprendre si on a pas la tête dedans. *

const image = await canvas.encode('png')
                const attachment = await new AttachmentBuilder(await image, { name: 'inventaire.png' });
                console.log(image)
                console.log(attachment)
                const exampleEmbed = new EmbedBuilder()
                    .setColor(0x0099FF)
                    .setTitle('Some title')
                    .setURL('https://discord.js.org/')
                    .setAuthor({ name: 'Some name', iconURL:                                       'https://i.imgur.com/AfFp7pu.png', url:                                       'https://discord.js.org' })
                    .setDescription('Some description here')
                    .setThumbnail('https://i.imgur.com/AfFp7pu.png')
                    .setFooter({ text: 'Some footer text here', iconURL: 'https://i.imgur.com/AfFp7pu.png' });

                await interaction.reply({embeds: [exampleEmbed], files: [{attachment: attachment.attachment, name: attachment.name}]})

Je **vous remercie énormément **par avance de votre aide et j’espère que je me suis plutôt bien expliqué. (N'hésitez pas à me ping pour quoi que ce soit)

Encore merci !

flint flame
# olive lake Bonjour ! J'ai un problème assez problématique sur mon bot. **Il crash sans fair...

Essaye voir ça

const image = await canvas.encode('png');
const attachment = new AttachmentBuilder(image, 'inventaire.png');

const exampleEmbed = new EmbedBuilder()
  .setColor(0x0099FF)
  .setTitle('Some title')
  .setURL('https://discord.js.org/')
  .setAuthor({ name: 'Some name', iconURL: 'https://i.imgur.com/AfFp7pu.png', url: 'https://discord.js.org' })
  .setDescription('Some description here')
  .setThumbnail('https://i.imgur.com/AfFp7pu.png')
  .setFooter({ text: 'Some footer text here', iconURL: 'https://i.imgur.com/AfFp7pu.png' });

return interaction.reply({ embeds: [exampleEmbed], files: [attachment] });
flint flame
olive lake
#

(La modif)

flint flame
#

J'en ai enlevé pleins, car tu sais pas vraiment les utiliser visiblement 👀

olive lake
#

J'étais surtout en depression vu que rien ne marchait x)

flint flame
olive lake
flint flame
#

@olive lake

#

?

olive lake
flint flame
#

Montre moi tout ton fichier

olive lake
#

Je log juste mon attachment

#

Rien de plus

flint flame
olive lake
#

Oh ça va hein x)

#

Il fait 350 lignes par contre

flint flame
#

Faudrait ce réveiller un jour aussi mdr

#

Genre pas dormir avant de répondre par exemple

#

@olive lake

olive lake
#

Ça va aller détends toi je suis juste venu demander de l'aide

flint flame
#

Bah j'essaye de t'aider là, mais tu dors

#

Bon, t'as toujours pas compris, bonne chance alors p: 💀

olive lake
#

Mais laisse moi trois secondes au moins

olive lake
flint flame
olive lake
#

Peut être toi non, mais moi oui

olive lake
flint flame
#

Je viens de voir

olive lake
#

Bah si !

flint flame
#

et le interaction.reply ??

olive lake
#

Et bien ça ne change rien si je le modif ^^

flint flame
olive lake
#

Je viens de le faire

#

Et je l'avais déjà fait

#

Le test

flint flame
#

Tu as quoi console.log image et atta..

olive lake
#

Pour image, j'ai un Uint8Array(101057)

#

Et pour l'autre j'ai AttachmentBuilder {attachment: Uint8Array(101057), name: 'inventaire.png', description: undefined}

olive lake
flint flame
#

Attends je reviens

olive lake
#

Okok

olive lake
#

Je pourrais pas te répondre de suite pour tes prochaines réponses désolé. Si tu veux tu pourras passer en mp au pire, je répondrais dès que possible

keen narwhal
#

Bonjour qui pourrais m'aider sur cette erreur ?

near saddle
#

Bonsoir, typeof(this.giveaways) te renvoie quoi ?

keen narwhal
#

il m'envoie "boolean"

near saddle
#

c'est là le problème alors 😉
forEach n'est pas exécutable sur un booléen
--> https://www.w3schools.com/jsref/jsref_foreach.asp

keen narwhal
#

comment je fais pour enlever blooéen ?

olive lake
flint flame
flint flame
#

Essaye de poster avec 2 messages pour voir on sait jamais

olive lake
#

Un avec et un sans ?

flint flame
#

Un juste avec l’embed, et un juste avec l’image

olive lake
#

Je test ça

flint flame
#

Et mets juste [attachement] par pitié tes trucs ça sert à rien là

olive lake
#

C'était un test pas besoin de m'en faire un drame x)

olive lake
flint flame
#

Console.log attachement

olive lake
#

Ce serait pas un problème interne car la fonction s'exécute et se finit si je ne me trompes pas (avec le then)

olive lake
flint flame
#

Bref, je regarde demain, je suis pas dispo ce soir désolé

olive lake
olive lake
keen narwhal
#

j'ai un probléme avec mon bot music

#

il connait pas createQueue

past nimbus
#

Non, c'est l'objet parent qui est undefined

ashen rapids
blissful hemlock
#

Bonjour ! est-ce que vous savez si c'est possible de trouver l'id d'une commande via son nom en discord.js ?

blissful hemlock
#

ahh merci, je vais continuer mes recherches dans ce cas

#

bonne journée

floral bolt
#

je suis trop un helpeur enfaite kappa

floral bolt
#

#python

azure belfry
#

Me suis tromper sorry

celest zealot
#

Bonjour, je dois mettre en place une application type "tchat", avec page d'inscription (on choisit son pseudo, son mot de passe et son avatar), une page de connexion ainsi que la page de l'application elle-même ;
_un utilisateur doit pouvoir envoyer des messages publics (tous le monde les reçoit) et des messages privés (à destination d'un seul utilisateur) ;*
_les messages s'affichent sous la forme de blocs : on peut voir le pseudo et l'avatar de l'expéditeur, la date et l'heure de l'émission du message, et bien sûr son contenu ;
_**un client peut voir la liste des utilisateurs connectés **;
_vous devez utiliser NodeJS, socket.io et express côté serveur, et HTML, CSS/Flexbox (ou Grid), et JS côté client ;
_pas de bases de données SQL : si vous devez enregistrer quelque chose, utilisez du JSON.
(j'ai mis les points que je n'ai pas encore fait en gras)

Je bloque actuellement sur l'affichage du nom du users lorsque celui-ci tente d'envoyer un message, à la place j'ai undefined.

      const user = socket.username;
      console.log('De:', user);
      
      console.log('Message reçu:', message);
      
      io.emit('message', user);
      io.emit('message', message);
    });```


Si vous avez une solution, je suis preneur.
Merci par avance !
celest zealot
#

Je vais check ça

torn fog
#

Ouais l'user tu dois l'envoyer dans les datas en conséquent dans message pour ton code actuel

glass cargo
#

Tu as bien configuré ton serveur web ?

#

Ton app (qui je suppose est faite avec express) écoute sur quel port ?

#

ou du moins est censé écouter sur quel port ?

#

Si tu fais la commande netstat -tulpn | grep 80, est-ce que tu as un résultat ?

#

Ah je vois

#

Ton app écoute sur l'ip v6

#

attends, j'te donne la solution dans 1min

#
server.listen({ port: 80, host:"0.0.0.0"});
#

Au moment de faire écouter ton app, il faut que tu lui indique l'ip sur laquelle il doit écouter. En l'occurence, 0.0.0.0 indique obligatoirement l'ipv4 de ta machine. Il faut bien sûr qu'elle en dispose ^^

#

tu vas bien sur <tonip>:80 ?

#

avec un reverse proxy ?

#

oui mais comment tu fais pour que ton app utilise ton ndd ?

#

Okay

#

Faudrait que tu fasse un reverse proxy avec un serveur web comme nginx ou Apache 👀

#

Pour rediriger les requêtes de ton nom de domaine vers ton app express

#

Pense à changer le port de ton app pour éviter les problèmes x)

#

Passe l’étape 3 et génère un certificat ssl :

sudo apt install certbot python-certbot-nginx -y

certbot --nginx -d tondomaine.fr
#

En l’occurrence ça diffère pas ^^

glass cargo
#

passe, c'est que t'as pas de firewall ^^

#

Tu as bien désactivé le proxy de cloudflare ?

#

Yep

#

Juste pour le domaine que tu veux utiliser

rocky oar
#

Yop ! ✌️
En se moment je me forme à la transition Javascript => Typecript, via des petits exercices du site Exercism que j'aime bien, m'enfin c'est pas la question, ma question est :

**J'ai créé un objet qui ressemble à celà : **

export const COLORS: Object = {
  "black": 0,
  "brown": 1,
  "red": 2,
  "orange": 3,
  "yellow": 4,
  "green": 5,
  "blue": 6,
  "violet": 7,
  "grey": 8,
  "white": 9,
}

Le but de l'exercices est de faire une simple fonction qui prend en paramètre une string, et qui retourne un nombre, jusque là je comprend bien, mon soucis, étant que avec la fonction que j'ai réalisé : ```ts
export const colorCode = (color: string): number => {
return COLORS[color];
}

le linter me dit que "string" ne peut pas être utilisé comme index d'un objet, le soucis c'est que je reçoit une string en paramètre OBLIGATOIREMENT 😓

Du coup, comment je suis sensé typé `color` pour que ça passe ?
(EDIT : Je continus de chercher de mon côté mais pour le moment je ne trouve pas)
past nimbus
#

Hello, ton params color doit être une des key de ton objet sinon si le mec passe "abcd", ça va pas le faire
Je te laisse comment faire pour typer ça ;), dis moi si c'est pas clair

rocky oar
#

Du coup si je traduit en code, faudrait que j'utilise le type "keyOf" quelque chose ?

past nimbus
#

C'est ça

rocky oar
#

🤦‍♂️ Merci

#

Apparemment ça ne passe pas mais je pense que je suis sur la bonne voie xD

#

avec color: keyof COLORS il me dit "Non tu devrais utiliser typeof" puis quand j'utilise color: typeof COLORS il me dit "Type '{ black: number; brown: number; red: number; orange: number; yellow: number; green: number; blue: number; violet: number; grey: number; white: number; }' cannot be used as an index type." du coup il faut que je cherche une solution harold

#

(Oui le typage c'est un peu ma bête noir du coup je me fais quand même violence pour passer sur TS 🤣 )

#

Bon, j'ai fais ma brute, je sais pas si c'est bien, mais j'ai repensé au fait qu'il me disait qu'une string ne peut pas être un index de mon Objet, du coup je lui ai dis que ça le sera avec :

export const COLORS:{[index:string]:number} = {
  "black": 0,
  ... //mes valeurs
}


export const colorCode= (color: string): number => {
  return COLORS[color];
}

200iq (Il a pas voulu que j'utilise keyof du coup ....)

past nimbus
#

Non c'est pas bon ce que tu as fais, t'as cassé le typage

#

il suffit de combiner typeof et keyof

#

sur ton COLORS

#

Ou bien directement keyof sur ton Object

keen narwhal
#

Salut qui peut m'aider svp

versed storm
#

Re !

Quand tu déclares le client en utilisant discord.Client tu dois spécifier les intents (https://discordjs.guide/popular-topics/intents.html#enabling-intents)

const { Client, Events, GatewayIntentBits } = require('discord.js');
const { token } = require('./config.json');

const client = new Client({ intents: [GatewayIntentBits.Guilds] });

Les intents sont paramétrables selon les besoins de ton bot, via le portal dev

rocky oar
rocky oar
# past nimbus 😂

Le typage va finir par rentrer à force de pratiquer, mais ça va je commence à mieux comprendre là 🤣

rocky oar
# past nimbus 😂

Par contre j'ai vraiment un gros problème de compréhension en faite, le site où je fais les exercices, tu peux regarder les solutions communautaire, mais tout les mecs qui ont validés les exercices où j'ai besoin d'appliquer keyof/typeof, ont tous casser le typage comme moi

Et quand je regarde ma source de documentation (https://www.typescriptlang.org/docs/handbook/2/keyof-types.html) je n'arrive pas à voir comment faire à l'interne d'une fonction, car de ce que je comprend c'est comme ça que je devrais faire : ```ts
type OrbitalPeriods = {
'earth' : 1.0,
'mercury' : 0.2408467,
'venus' : 0.61519726,
'mars' : 1.8808158,
'jupiter' : 11.862615,
'saturn' : 29.447498,
'uranus' : 84.016846,
'neptune' : 164.79132
}

export function age(planet: keyof OrbitalPeriods, seconds: number): number {
let secondsInYear = 31557600;
let howManyYears = (seconds / (secondsInYear * OrbitalPeriods[planet])).toFixed(2);
return howManyYears;
}

Le soucis c'est que `OrbitalPeriods` a était instancié comme un type, et je l'utilise comme une valeur ![notlikethis](https://cdn.discordapp.com/emojis/822079649756217374.webp?size=128 "notlikethis")
#

Pour l'instant je me dis que c'est une torture Typescript, car sans le typage, en JS j'ai le résultat attendu 🤣
Mais bon je comprend l'utilité du typage, c'est juste que je suis pas habitué à penser de cette façon du coup ça me brainfuck complètement

lone flax
#

Hello,

Est-ce qu'il y a un moyen générique de pouvoir accéder à des fichiers envoyés via discord même après leur suppression ?
Parce que dès qu'un utilisateur supprime une image d'un salon par exemple, lorsque les autres essayent d'y accéder, l'image devient inaccessible. Pareil pour les fichiers compressés, etc...

Quelqu'un aurait une idée pratique qui peut m'éviter de faire du cas par cas et sans devoir faire mon propre cdn ?

versed storm
#

SI l'utilisateur supprime son attachment il est aussi supprimé côté serveur non ?

torn fog
#

Après une image même si elle est supprimé le lien de l'image fonctionne encore

lone flax
#

C'est ce que je fais justement mais ça marche pas visiblement

torn fog
#

Donc au pire le bot garde juste en stock le lien de l'image

lone flax
#

Si l'auteur de l'image supprime l'image, même si tu as envoyé le lien dans un autre salon et que tu le laisses, l'image devient invalide

#

C'est ce que je faisais en pensant que ça réglait quoi que ce soit mais en fait non

lone flax
#

Pareil pour les fichiers compressés, etc...
Quelqu'un aurait une idée pratique qui peut m'éviter de faire du cas

#

J'ai eu l'idée de download l'image et de la réupload

#

Mais en plus d'être chiant

#

Ca marche pas pour tous les fichiers

near saddle
#

j’avais eu ce souci la, ce que je faisais c’est qu’à la réception du message et du fichier, je le renvoyais dans un autre channel

ça permettait de le garder

torn fog
fleet scaffold
#

les fichiers sont delete au bout de 6 heures après leur suppresion des serveurs

past nimbus
#

De la base tu veux dire

near saddle
leaden prism
#

Bonjours, je suis en train d'essayer e récupérer le status d'un membre mais cela ne fonctionne pas pouvez vous m'aider svp

const user = interaction.options.getUser("user") || interaction.user;
const member = ssinteraction.guild.members.cache.get(user.id);```
```js
console.log(member.presence.status);```
lone flax
near saddle
#

je vais regarder comment j'avais fait précisément

#

j'ai ça qui marche supposément

#

mais ça fait qlq temps que j'avais fait ça

#

donc c'est pas impossible que ce ne soit plus fonctionnel

glass cargo
#

et est-ce que member n'est pas undefined ?

leaden prism
#

nn quand je log member j'ai bien un truc

fleet scaffold
#

sse ou websocket 👀 ?

leaden prism
#

c bon j'ai trouvé ^^

near saddle
#

ça venait de quoi?

twin coral
#

Hello j'ai un petit problème avec ma fonction javascript. Celle-ci m'affiche undefined

function ajouterOption(selectElement, value, text) {
var option = document.createElement("option");
option.value = value;
option.text = text;
selectElement.appendChild(option);
}

slim anvil
slim anvil
twin coral
slim anvil
#

faire un console.log

fleet scaffold
#

Yoo j'ai un soucis

#

problème réglé

#

je suis un abruti

clear crater
#

Yo j'aimerais savoir comment récupérer le contenue d'un modals pour le mettre dans un embed par exemple je met 'test' dans mon modals et le titre de mon embed est 'test'

glass cargo
white sedge
glass cargo
mossy vault
#

Bonjour j'ai un petit problème je créé actuellement un petit jeu en javascript mais j'ai un problème j'ai créé un input en html qui renvoie à ma fonction enter mais quand je tape des lettres ou chiffre dans l'input j'ai un message d'erreur me disant :
allumette.html:11 Uncaught ReferenceError: enter is not defined at HTMLInputElement.onkeydown (allumette.html:11:97)

Je présume que cela vient de mon code en js mais je ne trouve pas l'erreur :

function enter(event){
    if (event.key === "Enter") {
        start();
        document.getElementById("input").value = "";
    }
});```

Voici mon input :
```<input type="text" placeholder="ecrire ici" size=10 maxlength=10 id="input" onkeydown='enter()'></input>```

J'ai bien fait appel avec le src à mon fichier js dans lequel se trouve mon code. Merci à ceux qui pourrons m'aider (en cas de besoin de d'autres morceaux de code ou autre n'hésitez pas à me mentionner)

(je ne suis encore que débutant en js donc si il y a quelques erreur faut pas trop m'en vouloir 😅 )
strange thicket
#

Déjà, ce n'est pas cohérent de mettre dans ta balise onkeydown et en JS un event Listener, le mieux serait de faire soit l'un, soit l'autre

fleet scaffold
mossy vault
#

Ok merci je vais essayer

mossy vault
strange thicket
#

Ce que je te conseil d'ailleurs de faire

#

Et dans ton listener keydown, tu peux directement écrire ta fonction enter

#

Appeler* pas écrire

#

Et tu n'auras plus besoin de keypress

#

En fait ce sont deux choses différentes, keydown se déclanche quand tu appuie sur ta touche, keyup quand tu la relâche et keypress sert quand tu appuie sur une touche caractère (donc pas enter)

#

Donc dans ton cas de figure, tu n'as pas besoin du keypress, tu peux le remplacer par keydown dans ton eventListener et l'enlever de ta balise html

fierce kelp
#

Bonjour, je regardais un tuto sur le scrollspy en JS (Grafikart), malheureusement je bloque vers le 9ème minute. Ma balise <a> garde la classe 'active' indéfiniment une fois qu'elle l'a "appliqué" (donc la classe qui permet de styliser mon texte pour faire ressortit une des sections du scrollspy) malgré les lignes suivante prévues pour régler ceci. Quelqu'un pourrait il me venir en aide?

       .querySelectorAll('.active')
       .forEach(node => node.classList.remove('active')) ```
strange thicket
#

Et la fonction comlplète

#

As-tu pensé à regarder la console pour voir si il y a des erreurs ? @fierce kelp

fierce kelp
strange thicket
#

Je pense que ça viens de ton JS tu pourrais envoyer la fonction complète stp

misty parcel
#

Hey je rencontre quelque problèmes avec Postgresql et Prisma, j'aimerais connecter ma bdd a mon site avec Prisma, mais l'uri (postgresql://postgres:monMotDePasse@localhost:5432/postgres) ne marche pas (Environment variable not found)

fleet scaffold
misty parcel
fleet scaffold
#

faut mettre la variable d'environnement normalement

misty parcel
#

okok

keen narwhal
#

c'est d'ailleur pour ca que le schéma c'est écrit
env("DATABASE_URI")

#

il te faut un .env avec comme valeur DATABASE_URI

#

et que tu es dotenv

hushed garnet
keen narwhal
#

Oui roh c'est pareil mdr

merry inlet
#

sa marche enfin

jovial ocean
#

Salut, y’a pas un mec pour m’aider en JS pour faire un bot discord? Je suis nouveau dans le domaine

jovial ocean
#

J’ai fait une commande pour une réponse automatique et impossible qu’elle fonctionne

jovial ocean
glass cargo
#

Une erreur ?

jovial ocean
#

Je t’envoie le message d’erreur après j’suis pas sur mon pc la

glass cargo
#

ok

jovial ocean
desert riverBOT
#

Documentation suggestion for @jovial ocean:
:property: (static) IntentsBitField.Flags
Numeric WebSocket intents

#

Documentation suggestion for @jovial ocean:
:property: (static) IntentsBitField.Flags
Numeric WebSocket intents

jovial ocean
#

et jsuis sencé faire quoi dcp ?

glass cargo
jovial ocean
glass cargo
#

Remplace X par l’intent suefort

jovial ocean
#

jmet pas Discord.IntentsBitField.Flags.GUILDS, ? et ainsi de suite ? avec GUILD_MESSAGES et DIRECT_MESSAGES

glass cargo
#

Si

jovial ocean
#

sa me met exactement le même message derreur que celui la

jovial ocean
keen narwhal
#

les virgules c'est pas optionels

#

tu vois bien que ton éditeur te souligne le mot discord en plus

#

Comme je t'ai dis apprend le js avant de vouloir faire un bot

empty mauve
#

eu... normal que mon bot me mette "l'aplication de rep plus" et j'ais pas d'érreur

#

meme ma commande ping ne fonctionne plus

keen narwhal
#

l'api de discord est down

#

ou du moin elle ram ca mère

#

j'ai passé l'aprem dans ta situation tkt @empty mauve

#

Même si logiquement la y'a plus de souci

floral bolt
#

J'ai appris que discordJs n'etait plus dev par discord

#

maintenant c'est @discordJS c'est vrai ?

empty mauve
empty mauve
#

bon ah ça veux toujours pas

#

alort que pourtant les autre bot de mon serv fonctionne

#

mais seulement MON F*KING BOT ne fonctionne pas

keen narwhal
#

ca a toujours été un projet communautaire même si il est vrai que pas mal des contributeurs sont employés de discord

#

bon bah c'est repartie l'api est de nouveau en majeur outage

empty mauve
#

a part ça qui peut m'aider car je comprend pas le Rich Presence sur discord devlopper portal

fleet scaffold
empty mauve
fleet scaffold
#

attend

#

elle work

#

elle aussi

keen narwhal
fleet scaffold
#

Github aussi les soutiens

#

my bad c'est github sponsor

keen narwhal
#

Vous trouvez ca sympa ?

#

les descriptions

glass cargo
#

👍

fleet scaffold
azure atlas
#

Hey

#

Jai un soucis concernant mon bot discord pour pterodactyl je m'explique je peux faire /create-user pour me créer un compte sur le panel cependant j'ai un soucis lorsque je tape cette commande il me renvoie "Erreur lors de la création du compte." Voici la commande :

#

Merci d'avance

fleet scaffold
azure atlas
azure atlas
floral bolt
fleet scaffold
#

par exemple

azure atlas
#

Ok je vais essayer merci

fleet scaffold
#

ici aussi ça peut posé problème

#

y a des règles concernant le pseudo

#

check les regex

azure atlas
#

Jai toujours l'erreur

floral bolt
azure atlas
floral bolt
#

non, c'est a toi de trouver ce que disent les logs

azure atlas
# azure atlas

Le problème c'est que je n'ai pas grand chose à part " erreur lors de la création du compte " et ça :

floral bolt
#

genre tien la ya une ereur :

merry inlet
#

petite question pour les bot discord, peut on faire des sous commande aux sous commande comme dans ce code ?

data: new SlashCommandBuilder()
        .setName('verify')
        .setDescription('Verify your steam account from your discord passport')
        .addSubcommand(subcommand =>
            subcommand
                .setName('channel')
                .setDescription('Set the channel where the user will be verified')
                .addChannelOption(option =>
                    option.setName('channel')
                        .setDescription('The channel where the user will be verified')
                        .setRequired(true)
                )
        )
        .addSubcommand(subcommand =>
            subcommand
                .setName('role')
                .setDescription('Manage the roles given to the user when he is verified')
                .addSubcommand(subcommand =>
                    subcommand
                        .setName('add')
                        .setDescription('Give the role to the user when he is verified')
                        .addRoleOption(option =>
                            option.setName('role')
                                .setDescription('The role given to the user when he is verified')
                                .setRequired(true)
                        )
                )
                .addSubcommand(subcommand =>
                    subcommand
                        .setName('remove')
                        .setDescription('Remove the role to the user when he is verified')
                        .addRoleOption(option =>
                            option.setName('role')
                                .setDescription('The role removed to the user when he is verified')
                                .setRequired(true)
                        )
                )
                .addSubcommand(subcommand =>
                    subcommand
                        .setName('list')
                        .setDescription('List all the roles given to the user when he is verified')
                )
                .addSubcommand(subcommand =>
                    subcommand
                        .setName('delete')
                        .setDescription('Delete a registered role (role add or role remove)')
                        .addRoleOption(option =>
                            option.setName('role')
                                .setDescription('The role to delete')
                                .setRequired(true)
                        )
                )
        ),
merry inlet
#

c good

#

addSubcommandGroup

empty mauve
#

l'API n'est plus en pls??

glass cargo
#

on est plus aux 16s de ping d'hier kapp

empty mauve
#

c beaucoup mieu comme ça

#

pk mon bot veux toujours pas me rep

fleet scaffold
merry inlet
empty mauve
#

quelqun peut m'aider mon bot me met "l'application ne rep plus" et j'ais pas d'érreur et j'ais perdu mon badge "activ-developer"

#

j'ais reset le token, kick et réinviter mon bot...

#

ça veux pas

fleet scaffold
#

j'ai toujours mon badge

#

mais je savais même pas mon bot était utilisé mdr

empty mauve
#

de qui?

fleet scaffold
#

moi

fleet scaffold
keen narwhal
#

wesh si qq aime bien faire des embeds et a du temps a perdre je le défi de rendre ca plus jolie

empty mauve
fleet scaffold
#

mhhh peut avoir du code à voir ?

azure atlas
floral bolt
azure atlas
#

Une erreur au début

floral bolt
azure atlas
#

Ouep

floral bolt
#

C’est quoi l’ip et le port de ton api ?

azure atlas
floral bolt
azure atlas
floral bolt
#

Ouais mais du coup ça sers à rien, il ne sait pas quoi faire avec ça pteto

#

Ah je crois avoir compris ce que tu veux, c’est crée un user sur ptero ?

#

Dans ces cas là il te faut une ip suivi d’un port (celui de ptero)

azure atlas
floral bolt
#

T’es sûr que c’est possible aussi ?

#

Et t’es sûr de savoir ce que tu fais ?

azure atlas
floral bolt
#

Alors c’est pas la bonne adresse pour la requête

glass cargo
#

@azure atlas localhost = ipv6 hein 👀

floral bolt
empty mauve
azure atlas
floral bolt
#

Ah oui alors non, je ne telecharge pas de .rar sur github 🙂

#

tu peux demander a @copper pagoda de t'aider

azure atlas
floral bolt
#

c'est juste pour crée un compte sur softsky, du coup deso mais ca ne marchera jamais

azure atlas
#

je sais cependant je peux le config ?

floral bolt
#

ou alors je ne sais pas comment ca marche :/ je suis désolé

azure atlas
#

je ne peux pas le config ?

floral bolt
#

si si mais je ne sais pas comment ca marche

azure atlas
#

ah, dommage. Merci quand même ^^

glass cargo
gusty needle
#

quelqu'un matrise telegraf?

modern skiff
#

Pas moi (ouai js mon message est très utile)

misty parcel
#

Hey ! J'ai un petit soucis avec une fonction en TypeScript.
J'ai fais une fonction qui retourne une Promise<any>, le problème c'est que dès que j'exécute la fonction, le programme n'exécute pas le reste.

J'ai déclarer ma fonction comme ça :

async function pushFunction(): Promise<any> {
let arr = [];
arr.push({test: "test"})
return arr
}

Dans mon code, cette fonction m'a renvoyer un tableau contenant 2 objets

Et appeler ma fonction comme ça :

const p = await pushFunction();
console.log(1);
if(!p.length) return console.log("Pas de données");
console.log(2);

Le problème c'est que les deux derniers console.log ("Pas de données" et 2) ne s'envoient pas, d'ou le fait que je pense que le programme n'exécute pas le reste 🤔

#

J'ai mis Promise<any> un peu au pif je vais pas vous mentir

empty mauve
fleet scaffold
#

bah je sais pa s