#javascript-typescript

1 messages · Page 23 of 1

slim anvil
#

je suis sur téléphone, mais le code reste assez lisible, tu peux me dire ce que quoi tu bloques exactement

plain raven
#

mon input que je dois remplacer dans personaleinfo (l'input de dateinfo.tsx) prend une value qui est calculer constament pour dire si il a en dessous de 18 ans ou si il a au dessus de 80 ans, mon but est de remplacer l'input pour rendre ces verifications obligatoire pour le submit.

#

dis moi si tu as compris ou non

floral bolt
#

Tu peux passé des fonctions en props si jamais

plain raven
#

j'ai essayé, avec les interfaces etc mais a mon avis je suis pas encore assez doué

floral bolt
#
const monInput = ({onChange}) => {


    const handleChange = (e) => {
        onChange(e.target.value)
    }

    return (
        <div className="flex flex-col w-1/2 gap-2">
            <label for="name">_name:</label>
            <input

                id="name"
                type="text"
                placeholder=""
                onChange={handleChange}
                className="w-full h-10 border-2 border-[#1E2D3D] bg-[#011221] rounded-lg"
            />
        </div>
    )
}


const monApp = () => {

    const [name, setName] = useState("")

    const handleChange = (e) => {
        setName(e.target.value)
    }

    return (
        <monInput onChange={handleChange} />
    )
}
slim anvil
#

ah j’avais pas vu le fichier plus haut

#

en gros tu veux juste dans ton parent disabled le button si la value est pas bonne ?

plain raven
#

oui c'est ça

#

mais comme mon input est dans un autre fichier je me perd

slim anvil
#

bah du coup dans ton parent check juste que la value existe

#

et dans ton composant tu émit uniquement si la value est bonne

plain raven
slim anvil
#

si elle est pas bonne tu reset comme ça ton parent ne l’a pas

#

et ton composant lui affiche l’erreur

plain raven
#

et comment j'exporte ma value ?

slim anvil
#

tu l’émit à ton parent

#

quand tu appelles ton composant dans le parent

#

tu l’as récupères via une propriété onChange ou autre

#

c’est à ce moment là que tu viens récupérer la valeur de ton composant date au niveau du parent

floral bolt
#

dans ton cas <DateInput onChange={maFonction}/>

#

export const DateInput: React.FC = ({onChange}) => {

slim anvil
#

voilà et donc toi tu vas onChange dans DateInput la valeur, si elle est bonne tu l’envoies, si elle est pas bonne tu peux return undefined ou i’ll

#

null*

#

comme ça dans ton parent elle se reset et donc tu peux checker if (!value) disabled true

plain raven
#

je peux console log onchange dans le parent, pour savoir si c'est 'connecté'

plain raven
slim anvil
#

ça l’est forcément à partir du moment où tu l’appelles dès 2 côtés

#

et si ce sont des parents enfants de 1er niveau évidemment

plain raven
#

vs code me dit
Property 'onChange' does not exist on type '{}'.ts(2339)
(parameter) onChange: any

plain raven
#
import React, { useState, ChangeEvent, useRef, useEffect, MouseEvent } from 'react';
import { parse, differenceInYears, isValid } from 'date-fns';

export const DateInput: React.FC = ({onChange}) => {
  const [value, setValue] = useState("MM / DD / YYYY");
  const inputRef = useRef<HTMLInputElement>(null);

  useEffect(() => {
    if (inputRef.current) {
      inputRef.current.setSelectionRange(0, 0);
    }
  }, []);

  const handleMouseDown = (e: MouseEvent<HTMLInputElement>) => {
    e.preventDefault();
    if (inputRef.current) {
      inputRef.current.focus();
    }
  };

  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {
    onChange(e.target.value)
    other code...
  }

  return (
    <>
        <input
            ref={inputRef}
            value={value}
            required
            onMouseDown={handleMouseDown}
            onChange={handleChange}
            className='text-white bg-transparent border-2 border-gray-400 rounded-md px-4 py-2 focus:outline-none focus:border-gray-300 w-[300px]'
        />
        validation....
    </>
  );
};
slim anvil
#

si jamais il y a d’autres éléments entre les 2 ils faut que tu passes tes props

#

mais ça dans l’idée oui c’est bon

plain raven
#

mais du coup : <DateInput onChange={maFonction}/>
ma fonction vaut quoi ?

slim anvil
#

bah ça peut être ton setState

#

pour update ton formulaire par exemple

#

je vois pas ton fichier parent je peux pas l’ouvrir

#

mais grosso merdo c’est ça

plain raven
#
<DateInput onChange={handleDateChange}/>
const [birthDate, setBirthDate] = useState("MM / DD / YYYY");

const handleDateChange = (e: ChangeEvent<HTMLInputElement>) => {
   setBirthDate(e.target.value);
};

J'ai vs code qui me souligne onChange en disant :

"Type '{ onChange: (e: ChangeEvent<HTMLInputElement>) => void; }' is not assignable to type 'IntrinsicAttributes'.
Property 'onChange' does not exist on type 'IntrinsicAttributes'.ts(2322)
(property) onChange: (e: ChangeEvent<HTMLInputElement>) => void"

slim anvil
#

tu reçois une string de ton onChange déjà je crois

#

dans ton composant tu émit la value direct pas tout l’élément

plain raven
#

donc dans mon interface je dis que onChange c'est une string ?

slim anvil
#

que dans onChange le paramètre que tu reçois c’est une string

plain raven
#

comme ça :

interface Props {
  onChange: (e: ChangeEvent<HTMLInputElement>) => string;
}```
floral bolt
#

Enfaite dans le handledatechange console log « e »

slim anvil
#

non la tu dis que tu return une string

floral bolt
#

Parceque je pense que tu renvois directement la value

slim anvil
#

le e?: string

#

yes de mémoire il onchange le value

plain raven
#

je suis désolé mais je commence à être perdu :(

slim anvil
#

en optionnel car dans ton check tu vas sûrement return null

#

ok dsl

floral bolt
#

Oui il renvois directement e.target.value

plain raven
slim anvil
#

je suis sur tel trop galère on peut check après

plain raven
#

je dois bien crée une interface ? si oui laquelle ?

floral bolt
#

E: string pour le moment

#

Parceque ton handleChange renvois directement la value

#

Qui est une string

#

Si tu veux renvoyer un element html au lieu de « e.target.value » tu renvois « e »

plain raven
#
interface Props {
  onChange: (e: string) => void;
}

export const DateInput: React.FC = ({onChange}:Props) => {
  const [value, setValue] = useState("MM / DD / YYYY");
  const inputRef = useRef<HTMLInputElement>(null);

  others...

  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {
    onChange(e.target.value)
    other code...
  }

  return (
    <>
        <input
            ref={inputRef}
            value={value}
            required
            onMouseDown={handleMouseDown}
            onChange={handleChange}
            className='text-white bg-transparent border-2 border-gray-400 rounded-md px-4 py-2 focus:outline-none focus:border-gray-300 w-[300px]'
        />
        validations....
    </>
  );
};
const [birthDate, setBirthDate] = useState("MM / DD / YYYY");

const handleDateChange = (e: ChangeEvent<HTMLInputElement>) => {
   setBirthDate(e.target.value);
};
<DateInput onChange={handleDateChange}/>

J'ai mis ça, et j'ai plus d'erreur dans mon fichier input mais j'ai toujours onChange qui est souligné en rouge quand j'appelle le composant :

"Type '{ onChange: (e: ChangeEvent<HTMLInputElement>) => void; }' is not assignable to type 'IntrinsicAttributes'.
Property 'onChange' does not exist on type 'IntrinsicAttributes'.ts(2322)
(property) onChange: (e: ChangeEvent<HTMLInputElement>) => void"

plain raven
floral bolt
#

Du coup ton dernier message c’est bon ?

plain raven
#

non non

#

j'ai toujours le souligne en rouge quand j'appelle la fonction onChange du composant

floral bolt
#

setBirthDate(e)

#

En vrai je reviens dans 45 minutes je pourrais mieux t’aider

plain raven
floral bolt
#

Ça fait quoi si tu console log « e » ?

plain raven
#

quand j'écris dans mon input

floral bolt
#

Mets le console.log en haut

#

Avant set….

plain raven
#

MM / DD / YYYY3

floral bolt
#

Du coup c’est handleDateChange = (e:string)

#

Et setBirthDate(e)

plain raven
#

ah merci

#

autant pour moi

#

je crois c'est un truc tout bete ça

#

mais sinon plus d'erreur

floral bolt
#

Perso j’ai jamais joué avec les dates donc je pourrais pas t’aider là dessus 🙂

plain raven
#

je dis n'importe quoi, j'ai encore une erreur

#

@floral bolt au pire je te laisse regarder après si ça te dérange pas, merci beaucoup

floral bolt
#

renvois ton code 😉

plain raven
#
import React, { useState, ChangeEvent, useRef, useEffect, MouseEvent } from 'react';
import { parse, differenceInYears, isValid } from 'date-fns';

interface Props {
  onChange: (e: string) => void;
}

export const DateInput: React.FC = ({onChange}:Props) => {
  const [value, setValue] = useState("MM / DD / YYYY");
  const inputRef = useRef<HTMLInputElement>(null);

  useEffect(() => {
    if (inputRef.current) {
      inputRef.current.setSelectionRange(0, 0);
    }
  }, []);

  const handleMouseDown = (e: MouseEvent<HTMLInputElement>) => {
    e.preventDefault();
    if (inputRef.current) {
      inputRef.current.focus();
    }
  };

  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {
    onChange(e.target.value)
    others...
  };

  const dateRegex = /^(0[1-9]|[12]\d|3[01])\s\/\s(0[1-9]|1[0-2])\s\/\s\d{4}$/;
  let isYoung = false;
  let isOlder = false;

  if (dateRegex.test(value)) {
  
    const enteredDate = parse(value, 'dd / MM / yyyy', new Date());
    others...
  }

  return (
    <>
        <input
            ref={inputRef}
            value={value}
            required
            onMouseDown={handleMouseDown}
            onChange={handleChange}
            className='text-white bg-transparent border-2 border-gray-400 rounded-md px-4 py-2 focus:outline-none focus:border-gray-300 w-[300px]'
        />
        validations...
    </>
  );
};
slim anvil
# plain raven ```tsx import React, { useState, ChangeEvent, useRef, useEffect, MouseEvent } fr...

vire le DateInput: React.FC
c'est pas la meilleur manière de typer son composant React, ça apporte du typage pas forcément nécessaire , defaultProps, contextTypes etc... qui sont pas utiles dans ton cas

tu peux simplement typer de cette manière

export const DateInput = ({ onChange} : Props) : JSX.Element => {
..
}

Aussi ta variable dateRegex sors la de ton composant, sinon elle est re-render à chaque fois aussi, c'est pas vraiment utile étant donné que c'est une regex, donc tu peux la placer juste en dehors

tes 2 variables isYoung, isOlder, c'est pas une bonne manière de faire

Sois tu crées un state pour venir l'update en fonction de si c'est isYoung ou si c'est isOlder, sois tu viens créer un useMemo() ou ton check sera fais dedans ce qui te retournera true ou false, mais ne fais pas de variable de ce genre que tu vas venir update comme en javascript vanilla

#
useEffect(() => {
    if (inputRef.current) {
      inputRef.current.setSelectionRange(0, 0);
    }
  }, []);

fais attention mais je crois que ta ref sera pas forcément présente au moint, donc ce que tu peux faire, c'est venir watch inputRef?.current pour être sur que ça focus lorsque ta ref sera existante

plain raven
#

je t'avoue je suis assez perdu sur le nombre de chose à changer au moins je sais ce qu'il y a changer et donc je pourrais faire des recherches ou utiliser chatgpt, simplement, comment je rend l'input fonctionnel, c'est à dire que si il y a une erreur alors on ne peut pas clicker :

slim anvil
#

sur ton bouton "continue"?

#

tu le disabled si la value ne correspond pas

plain raven
#
const handleNext = (e: any) => {
    e.preventDefault();
    if (
      fullName === "" ||
      birthDate === "" ||
      primaryLanguages.length === 0 ||
      secondaryLanguages.length === 0 ||
      paypalEmail === "" ||
      country === ""
    ) {
      toast({
        position: "top",
        title: "Missing informations",
        description: "Please fill all the required fields",
        status: "error",
        duration: TOAST_DURATION,
        isClosable: true,
      });
      return;
    }

    if (!checkPaypalEmail(paypalEmail)) {
      toast({
        position: "top",
        title: "Invalid email",
        description: "Please enter a valid paypal email",
        status: "error",
        duration: TOAST_DURATION,
        isClosable: true,
      });
      return;
    }

    if (idFile === null) {
      toast({
        position: "top",
        title: "Missing file",
        description: "Please upload a proof of identification",
        status: "error",
        duration: TOAST_DURATION,
        isClosable: true,
      });
      return;
    }

    localStorage.setItem("fullName", fullName);
    localStorage.setItem("birthDate", birthDate);
    localStorage.setItem("country", country);
    localStorage.setItem(
      "primaryLanguages",
      primaryLanguages.toString().split('"').join("")
    );
    localStorage.setItem(
      "secondaryLanguages",
      secondaryLanguages.toString().split('"').join("")
    );
    localStorage.setItem("paypalEmail", paypalEmail);

    const reader = new FileReader();
    reader.readAsDataURL(idFile);
    reader.onload = () => {
      localStorage.setItem("proofOfIdentification", reader.result as string);
    };

    setFirstStep(false);
    setSecondStep(true);
  };

c'est ici pour le disabled il me semble, sauf que la c'est l'ancienne value qui est birthdate

plain raven
#

tu as une idée ? @slim anvil

slim anvil
#

sois ici tu recheck que ta date soit au bon format, sois tu le fais dans ton composant

plain raven
#

j'ai fait ce que tu m'as dit avec des states pour isYoung et isOlder

#

et c'est beaucoup plus simple tout fonctionne mainteant

plain raven
#

ah bah j'ai re un problème...

#

étant donné que c'est que lié a la date je pense que ça devrait pas prendre de temps

plain raven
#

je reste avec la date de nessance que j'ai mit tout à l'heure et je remarque que si je la met rien ne se passe, le bouton ne se met pas en disable, par contre si je rappuie sur 7 (soit le dernier chiffre) alors le bouton se met en disabled, se qui veut dire que même si le text d'erreur s'affiche et que toute la date est remplie il faut quand même rappuyer sur la dernière touche pour 'actualiser' ou je ne sais quoi

plain raven
#

personne pour voc, ça irait plus vite je pense

slim anvil
#

je pense ce qui irait plus vite c'est que tu revois comment fonctionne la communication entre le parent et son composant

#

Concrètement tu vas avoir une condition sur ton button !data disabled true

#

Du coup il faut que tu gères dans ton composant de renvoyer ou non une donné si la valeur est bonne

#

Par exemple là sur ton screen la valeur est en erreur, surement car ce n'est pas bon ? Sauf que si tu emit au parent la value, pour lui c'est ok, la value existe
DOnc dans ce cas là quand tu as une erreur tu emit un onChange à undefined pour clear la value et donc disabled le button tant qu'il a pas réglé le soucis

plain raven
#

je pense avoir réussi, merci quand même

empty mauve
#

hey, j'ais un petit problème avec mon interactionCreate mon msg n'est pas envoyer quand je fait ma commande et j'ais pas d'éreur

normal lichen
#

Bonjour pourriez vous me dire comment vérifier les roles d'une personne sur un bot en ts s'il vous plait ? car

if (interaction.member.roles.cache.some(r => r.id === Roles.staff))

ne fonctionne pas j'ai une erruer sur cache, merci beaucoup 😅

plain raven
#

quelqu'un serrait me dire si il est possible de mettre un maximum de selection avec react-select, faire en sorte que l'utilisateur ne puissent pas mettre plus de 4 selections

slim anvil
#

oui

#

tu m'excuses mais je comprend pas trop
tu te fais chier a faire un datepicker, mais pour un select tu utilises une lib ?

#

j'aurai fais l'inverse quoi, la gestion des dates c'est toujours relou

plain raven
#

j'ai un client exigeant ...

slim anvil
#

pas tant que ça je trouve, sinon il voudrait le systeme le plus simple pour un datepicker mais bon

rigid surge
#

Qu'apport le V14 de discord.js par apport à la v13 svp ?

queen ocean
onyx wren
#

Salut a tous, je découvre nextjs, malheureusmeent j'ia un probleme. en gros je veux qu'au moment de la connexion avec Discord, ça envoie les données au backend, qui les met en base et renvoie des données complémentaires tels que le role etc. Malheureusement, j'ai l'impression que la requête ne part pas:

login/page.tsx:


"use client";

import { LoginForm } from "./form";
import { useSession, signIn, signOut } from "next-auth/react";
import { useEffect, useState } from "react";
import Loader from "../../components/Loader";

export default function LoginPage() {
  const { data: session, status } = useSession();
  const [isLoggedIn, setIsLoggedIn] = useState(false);

  useEffect(() => {
    if (session && session.user) {
      setIsLoggedIn(true);
    } else {
      setIsLoggedIn(false);
    }
  }, [session, status]);

  useEffect(() => {
    if (isLoggedIn && !("role" in session.user)) {
      var userToUpdate = { ...session.user };

      let data = {
        userId: session.user.id,
        username: session.user.name,
        avatar: session.user.image,
      };

      fetch("http://localhost:4000/gamer/auth", {
        method: "POST",
        headers: {
          "x-api-key": process.env.ISAGAMER_API_KEY,
          "Content-Type": "application/json",
        },
        body: JSON.stringify(data),
      })
        .then((response) => response.json())
        .then((res) => {
          userToUpdate.role = res.role;
          userToUpdate.tokenAuthAPI = res.token;
          userToUpdate._id = res._id;
          // Mettez à jour l'état de session ici avec userToUpdate
        })
        .catch((error) => {
          console.error("Erreur lors de l'envoi des données à l'API:", error);
        });
    }
  }, [isLoggedIn]);

  if (status === "loading") return <Loader />; // Assume that Loader is a component that shows a loading spinner or similar

  if (!session) {
    return (
      <section className="flex items-center justify-center h-screen bg-gradient-to-r from-blue-900 to-blue-600 overflow-hidden relative">
        <div className="absolute inset-0 z-0 w-full h-full bg-black opacity-20"></div>
        <div className="z-10 w-full max-w-md mx-auto">
          <LoginForm />
        </div>
      </section>
    );
  }
  return (
    <>
      <p>Youre logged in</p>
    </>
  );
}

login/form.tsx:


"use client";

import { signIn } from "next-auth/react";
import { useSearchParams, useRouter } from "next/navigation";

export const LoginForm = () => {
  const searchParams = useSearchParams();
  const callbackUrl = searchParams.get("callbackUrl") || "/profile";

  return (
    <div className="px-10 py-12 bg-white rounded shadow-lg overflow-hidden sm:max-w-md sm:mx-auto sm:w-full sm:rounded-lg">
      <h2 className="text-center text-3xl font-extrabold text-gray-900 mb-6">
        Connexion
      </h2>
      <a
        className="px-4 py-3 mb-4 font-semibold text-white uppercase bg-discord-blue hover:bg-discord-blue-dark rounded cursor-pointer flex items-center justify-center transition-all duration-200 ease-in-out"
        onClick={() => signIn("discord", { callbackUrl })}
        role="button"
      >
        Continue with Discord
      </a>
    </div>
  );
};

#

et vu que j'ai vu que next ca a bcp chnagé ces derniers temps ben jgalère

empty mauve
wintry garden
#

Bonjour, J'ai un problème avec mon bot de musique qui ne fonctionne pas.

Je lance la musique et elle démarre. Cependant, après 30 secondes à 1 minute, il n'émet plus aucun son, même s'il n'est pas en mode muet. Je ne parviens pas à trouver le problème.

Le bot a été codé en V14.

wintry garden
torn fog
pallid plume
#

Je crois juste que c'est normal

torn fog
pallid plume
#

ça marche pareil sur discord classique genre sans bot si tu streams du son ça te coupe la diffusion

wintry garden
torn fog
glass cargo
wintry garden
torn fog
wintry garden
empty mauve
wintry garden
plain raven
#

J'ai besoin de personnes experimenté en ts/react pour me dire si c'est possible de garder la values d'input et autres d'un formulaire même une fois avoir changer de components.
Je m'explique, je veux faire une sorte d'onboarding avec des step mais si je fais retour qui me retourner vers le step précédant j'ai pas mes data dans les input et autres.
N'hésitez pas à me mentionner si vous voulez plus d'infos

fleet scaffold
floral bolt
#

mais sinon tes step tu les geres sur la meme page

plain raven
#

je vais me renseigner sur les context

drowsy ocean
#

@empty mauve As tu bien compris ce que fait ce bout de code ?

empty mauve
empty mauve
empty mauve
fleet scaffold
cyan iron
#

mdr

fleet scaffold
cyan iron
#

Ouais mais ça marche qu'avec vsc

#

et faut le brancher à ton pc

fleet scaffold
#

y a un CLI

#

et tu l'installe définitivement sur ton rpi à la fin du dev mdr

cyan iron
#

le mien ne pourra pas communiquer avec l'api de Discord

#

pas de module pour le réseau

fleet scaffold
plain raven
#

j'ai essayé d'enregistrer mes datas comme les inputs et autres et seul que je réussi pas apparement c'est d'enregistrer des fichiers dans le localstorage, peut-etre que c'est pas possible et que je fais ça pour rien mais alors dites le moi
J'ai une sorte d'onboarding avec plusieurs steps et je voulais gardé les values de mes input pour que quand l'utilisateur fait retour alors ça lui affiche toutes les valeurs qu'il avait mise avant.
Je vais vous montrer le code qui ne fonctionne pas et vous allez me dire si ce que je dis est vrai, ma théorie est que cela ne fonctionne pas parce que j'enregistre le nom du fichier, je vous ai simplifié la taille du code au maximum.

#

si je reviens avec le bouton back dans un autre component j'ai en effet le nom de mon fichier qui apparait :

#

le problème est que c'est qu'un nom et que donc je ne peux pas appuyer sur continuer, le toast apparait et me dit que j'ai oublié de poster le fichier

plain raven
#

(il me manque plus que ce truc pour finir mon projet) 😅

past nimbus
#

Bah pas dans le localStorage en fait, c'est pas fait pour ça

#

Le localStorage c’est fait pour garder des data entre les sessions à la base

#

Si c'est des data de la session courante, il y a déjà eu des réponses à ta question

misty parcel
#

Salut ! Avec mon bot j'ai voulu faire un petit système de musique sympa :

const audioFilePath = path.join(__dirname, "lofi.wav");
const voiceChannel = interaction.member?.voice.channel;
if (!voiceChannel) {
    return interaction.editReply({
        content: "Vous devez être dans un channel vocal pour utiliser cette commande."
    });
}

try {
    const connection = joinVoiceChannel({
        channelId: voiceChannel.id,
        guildId: interaction.guild.id,
        adapterCreator: interaction.guild.voiceAdapterCreator
    });
    const player = createAudioPlayer();
    const resource = createAudioResource(audioFilePath);
    player.play(resource);

    connection.subscribe(player);

    connection.on('error', (error) => {
        console.error(error);
    });
} catch (error) {
    console.error(error);
}

Le bot se connecte bien au salon vocal, mais il ne joue aucune piste audio, mon fichier audio lofi.wav se situe à la racine de mon projet, j'ai bien mis l'intent GuildVoiceStates, je n'ai aucune erreur dans mon terminal

drowsy ocean
frosty sand
#

Qui peut m’aider pour un code en js svp (pour iOS)


const widget = new ListWidget()

const now = new Date()

const until = new Date(now)
until.setDate(now.getDate() + 7)

const cal = await Calendar.forEventsByTitle("Bin Collection")
const events = await CalendarEvent.between(now, until ['cal'])

const event = events[0]

if(event.title = 'BLUE') {
  widget.backgroundColor = Color.blue()
} else {
  widget.backgroundColor = Color.gray()
}


Script.setWidget(widget)
Script.complete()

widget.presentMedium()

#

Ou Mac OS alors je vous explique l’erreur ils le disent qu’ils ne trouve pas le titre de calendrier Bin Collection alors que dans le tuto ça met pas sa

#

Si vous avez des titres de calendrier qui font pas sa je suis preneur ou qui peut résoudre l’erreur merci d’avance

#

@ moi si vous avez trouvez je vous répond vers 23h/00h

wheat onyx
#

Salut, comment puis-je obtenir l'url de l'api vinted où tous les nouveaux éléments sont mis s'il vous plaît, je ne trouve pas l'url :/
Car la j'ai juste l'url du fil d'actu mais pas vraiment ça car y a pas tout etc..

Merci ^^

wheat onyx
visual sequoia
#

Quelqu'un serait comment faire un date picker en js pour un bot discord et avoir un output du genre ---> 2023-07-31

#

Thanks in advence

slim anvil
visual sequoia
#

car j'avais regarder mais ya aucun module connu...

slim anvil
#

ah ok
bah t'as plusieurs possibilité je pense, tu peux le faire juste via une / command ou tu demande aux gens d'indiquer la date dans le bon format
YYYY-MM-DD

sois tu passes par des select, 1 pour les jours, 1 pour les mois

visual sequoia
#

donc je voulais savoir si le seul moyen etait d'en faire un sois meme

slim anvil
#

mais bon tu vas etre limité par le nb. d'options

visual sequoia
#

ok ok thx

slim anvil
#

peut-être d'autres auront de meilleurs idées il est un peu tard là

visual sequoia
slim anvil
glass cargo
wheat onyx
#

Yes ce n'est pas le problème ça, mais qu'est-ce que je peux utiliser pour récupérer les derniers articles mis car sur leur api je vois pas comment faire car y a rien comparer au feed ou je peux

glass cargo
#

Par contre, j'ai jamais lu les ToS de Vinted, mais vu qu'ils ont pas de doc, je pense pas qu'ils autorisent le scrapping de leur api 👀

wheat onyx
#

Jsp mais leur api est aux yeux de tout le monde

glass cargo
wheat onyx
#

yes

glass cargo
# wheat onyx yes

C'est justement sur ça que je te mets en garde, ils interdisent surement l'utilisation de leur API par autre chose que leur site/app

wheat onyx
#

Même pour du privé ?

glass cargo
wheat onyx
#

Je vais voir ça, sinon merci ^^

floral bolt
#

Oui c'est bien interdit. leur api n'est pas publique

#

Sinon actuellement j'utilise postgres mais j'ai vus que prisma avair l'air cool, sachant que je compte faire une app assez grosse en donnée vous me conseillé quoi ?

past nimbus
#

Trop jeune pour un vrai projet

floral bolt
#

C’est la v5 hein

cobalt oyster
past nimbus
#

Le nbr de version ne veut rien dire 🤫

cobalt oyster
#

Mais prisma je vois ps en quoi ce serais trop jeune pour un vrai projet c’est une techno qui marche très bien

#

Qui est mis à jour souvent

#

Et qui écoute la communauté

#

Parfait pour un vrai projet

burnt fractal
# cobalt oyster Parfait pour un vrai projet

Le vrai problème c’est de penser qu’il est possible de faire une vraie application sérieuse en node.Js … node JS en tant que micro service ou pour des petites applications oui, mais certainement pas pour autre chose

cobalt oyster
#

Absolument pas d’accord avec toi

burnt fractal
#

Il n’y a aucun projet sérieux qui tiens sur du node js, je me rappelle qu’il avait commencé à l’utiliser chez ubisoft et qu’ils avaient finalement arrêté car ça scalait trop mal

#

Dans tous les cas ce n’est pas fait pour créer de gros projets sérieux car node js n’est pas fait pour réaliser du traitement lourd

past nimbus
#

Tu confonds tout

burnt fractal
#

Non non

past nimbus
#

A aucun moment une API (ou bien ton serveur SSR) est destiné à faire du traitement lourd, c'est une grosse erreur

#

NodeJS est là pour gérer les requêtes, ce qu'il fait très bien
Derrière si t'as du gros traitement, c'est un service tier

#

Peu importe le langage que tu utilises, ton infra doit être structurer ainsi

burnt fractal
#

En réalité non, un monolithe peut très bien fonctionner si celui-ci a correctement été réalisé.

Tout les projets n’ont pas besoins d’arborer une architecture en micro-service. La consistance des données devient plus compliquée à gérer en micro-service et si les développeurs ne maîtrisent pas correctement cette architecture, ça cause souvent des problèmes.

past nimbus
#

ça va très bien fonctionner pour un petit projet, comme tu en parlais plus haut
Dans la réalité, on va jamais réaliser du traitement lourd au même endroit que ton API ou ton serveur web, c'est ridiculement stupide

Je parle pas uniquement d'une structure en micro service. Une seule API/service qui distribue les jobs sur des services tiers. Ton API reste en monolithe, tes traitements sont organisés, ce qui est beaucoup plus logique d'un point de vue du dev et à entretenir

violet knot
# past nimbus ça va très bien fonctionner pour un petit projet, comme tu en parlais plus haut ...
past nimbus
#

Oui bien sur pour Docker, peu importe la techno il faut pouvoir scale

#

Cluster pour des tâches oui, à la limite

slim anvil
#

ça dépend ce que vous appelez traitement lourd, mais en nodejs avec un modèle CQRS tu optimises déjà énormément et tu augmentes tes possibilité de traitement

#

mais comme l’a dit scylla si on parle de millions de données peu importe la stack il faut traiter les donnés reçus hors api sur un service tier pour renvoyer que celles dont tu as besoin

jade fossil
#

Hey, je viens de commencer à dev en discord js et j'ai un soucis, le bot ne trouve pas les catégories de mon serveur (il a pourtant les droits admin): voici ce que ça donne ->

const { Client, GatewayIntentBits } = require('discord.js')
const client = new Client({
    intents: [
        GatewayIntentBits.Guilds,
        GatewayIntentBits.GuildMessages,
        GatewayIntentBits.MessageContent,
        GatewayIntentBits.GuildMembers,
    ],
});

let channelsLastMessage = new Map();
client.once('ready',()=> {
    console.log('ready, lets go');
    client.guilds.cache.each(guild => {
        console.log(`Found guild: ${guild.name}`);
        let categories = guild.channels.cache.filter(c => c.type == 'GUILD_CATEGORY');
        console.log(`Found ${categories.size} categories in ${guild.name}`);
    });
});

->
ready, lets go
Found guild: Eren's Scripts
Found 0 categories in Eren's Scripts

swift maple
#

A la place de 'GUILD_CATEGORY' mets 4 (J'ai trouvé la réponse ici)

discord-api-types documentation

discord-api-types is a simple Node/Deno module that brings up to date typings for Discord's API

broken solar
#

Bonsoir ! Quelqu'un aurait une idée de comment je pourrais faire une fonction qui permet de set le pourcentage de remplissage de ce demi-cercle (qui est fait en svg) ? J'ai déjà tester ceci mais sans résultats... :

  public calculateProgress(value: number, element: any) {
    const path = document.querySelector(element) as any;
    const pathLength = path.getTotalLength();
    const computedStyle = window.getComputedStyle(path);
    const minDashoffset = parseFloat(computedStyle.getPropertyValue('stroke-dashoffset'));
    const maxDashoffset = minDashoffset + pathLength;
    const delta = maxDashoffset - minDashoffset;
    const progress = (value / 100) * delta;
    return maxDashoffset - progress;
  }```

le path du svg : 

 ```html
<path d="M134.165 21.1475C123.358 16.5033 111.697 14.1125 99.913 14.1243C88.1286 14.1362 76.4732 16.5504 65.675 21.2162L68.4239 27.4351C78.3573 23.1429 89.0793 20.922 99.9199 20.9111C110.761 20.9002 121.487 23.0996 131.429 27.3718L134.165 21.1475Z" fill="black" fill-opacity="0.5" id="circle_speed_level"/>
slim anvil
flint flame
#

Hey, j'ai prévu de faire des locations de bots perso. Concernant l'hébergement, j'ai prévu de gérer mes process via pm2. Sauf que y'a pas longtemps, j'ai vu un gars avec un serv ptero (juste un serveur sur le panel ptero). Le code était hébergé sur ce serveur, sauf que y'avait 40 shards sur le serveur. En gros le mec avait 40 bots, et il faisait un shard par bot. Est il mieux de faire comme lui, ou de faire usage de pm2, (un process par bot)

broken solar
broken solar
#

La par exemple, j'ai mis un mask d'un autre cercle à l'intérieur, mais le rond s'est mit en path ^^

leaden prism
#

hey est ce que quelqun purait m'aider svp

#

je pense que sa vient du module firebaseui

tacit shore
#

Hello !
Je voudrais savoir comment je peux entamer le backend

#

Un framework avec lequel commencer ou alors une serie de videos qui vous aidez ect..

timid loom
# broken solar La par exemple, j'ai mis un mask d'un autre cercle à l'intérieur, mais le rond s...

C'est parce que tu utilise Figma -- utilise plutôt un logiciel dédié, comme Inkscape par exemple
Après la syntaxe SVG c'est pas très compliqué tu peux tout à fait faire ça pour avoir deux cercles :

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
   viewBox="0 0 200 200"
   version="1.1"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:svg="http://www.w3.org/2000/svg">
    <circle
       style="fill:#ff0000;fill-rule:evenodd;stroke-width:0.25"
       id="base"
       cx="90"
       cy="100"
       r="45" />
    <circle
       style="fill:#ffff00;fill-rule:evenodd;stroke-width:0.25"
       id="mask"
       cx="92.5"
       cy="102.5"
       r="40" />
</svg>
light sluice
#

Bonour quelqu'un sait à quoi est du cette erreur ?

slim anvil
glass cargo
#

C’est juste de la flemme à ce stade harold

keen narwhal
#

bonjour, j'aimerais que mon image se transforme en video au clic du logo play c'est possible de m'aider svp ? je m'y connais pas en js

slim anvil
keen narwhal
marble tartan
keen narwhal
marble tartan
keen narwhal
marble tartan
keen narwhal
vernal sluice
#

Salut !
Est ce que vous pourriez m'aidez. Je cherche a automatiser le clique sur un bouton avec une class.

vernal sluice
#

En gros je voudrais automatiser le click sur un bouton avec un script javascript

#

Je voudrais automatiser le clique de ce bouton

slim anvil
#

ça ok, mais par automatiser, tu veux dire en fonction de quoi, c'est à quel moment ?

#

toutes les X secondes, au chargement de la page, etc

vernal sluice
#

Toutes les X secondes

#

Je veux un script que je puisse soit lancer dans un terminal, ou alors dans le F12

slim anvil
#

alors sois tu le fais avec un truc comme puppeeter pour le faire côté serveur, sois dans la console tu fais un Interval d'un click sur le button

vernal sluice
#

D'acc, puppeeter ça fonctionne comment ?

#

Je connais pas ?

fleet scaffold
#

suffit de faire un setInterval dans la console xd

vernal sluice
#

Sur Bumble

slim anvil
#

et donc de créer des actions client via le serveur

vernal sluice
#

C'est sur le principe du web scapping ?

#

Parce que j'ai essayer en python et le problème c'est qu'il me demande la connexion de la page

vernal sluice
# fleet scaffold suffit de faire un setInterval dans la console xd

Sa ne fonction pas..

const bouton = document.querySelector('[role="button"]');

if (bouton) {
  bouton.click();
} else {
  console.log('Bouton non trouvé. ');
}

Pour le moment j'ai ce code, mais le soucis c'est qu'il ne cible pas la bonne div..
Il m'ouvre le menu personnel mais ne like pas

fleet scaffold
#

Je l'avais fait pour tinder perso

vernal sluice
#

<div class="encounters-action tooltip-activator encounters-action--like" role="button" data-qa-role="encounters-action-like" tabindex="0" aria-label="Like">

J'essaye de cibler cette div la spécialement

vernal sluice
vernal sluice
#

Mias pour le setIterval il te faut un argument a mettre dedans ?

fleet scaffold
#

bah

#

le clique du bouton

vernal sluice
#

Prcq j'ai fais des teste sur une page avec un simple button qui ajoute 1 a chaque click et la le setinterval reprenait la fonction js de la page pour l'automatiser ..

vernal sluice
fleet scaffold
#

tu select pas bien la div j'imagine

vernal sluice
#

J'ai essayer avec une class, le role, la data-qa-role mais sa marche pas

#

Le F12 me répond "undefined"

vernal sluice
fleet scaffold
#

document.querySelectors(".encounters-action .tooltip-activator .encounters-action--like")[0]

vernal sluice
fleet scaffold
#

Chelou

#

prend le dernier alors

#

encounters-action--like

vernal sluice
vernal sluice
vernal sluice
#

Il trouve pas non plus ...

fleet scaffold
#

je sais pas alors

vernal sluice
fleet scaffold
#

yep

#

je checkais avec l'inspecteur que ça sélectionne le bon élément surtout

vernal sluice
fleet scaffold
#

je sais pas alors

vernal sluice
# fleet scaffold je sais pas alors
error_log: {
  "name": "TypeError",
  "message": "document.querySelector(...) is null",
  "origin": "onerror",
  "filename": "debugger eval code",
  "lineno": 3,
  "colno": 27,
  "stack": [
    "cliquerSurDiv@debugger eval code:3:27",
    "setInterval handler*@debugger eval code:16:34"
  ],
  "user_id": "zAhMACTgzMDUzNTM4OQAgMKIH7hKRAGJUMgmRtqEBgp4k1bd_1BveXiEmsAQmrTw",
  "device_id": "8851042c-042c-2c9f-9f4c-4c40959b5b0d",
  "app_version": "29256",
  "app_label": "bumble_web",
  "deploy_info": "production",
  "app_state": "",
  "current_url": "https://bumble.com/app",
  "ua": "Firefox",
  "ua_full": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0",
  "lang": "en-US",
  "images_root": "https://eu1.bumbcdn.com/i/aco/bumble.com"
}

J'ai se message d'erreur

fleet scaffold
#

non mais génial, mais j'ai dit je sais pas ça sert à rien de me ping

rocky oar
#

Yop ✌️
J'ai un petit soucis avec child_process

En ce moment je développe une app companion qui est sensé regroupé plusieurs outils python, avec une UI pour les utiliser, mais je rencontre un petit soucis :
Il y a un module Python que je peux utiliser via mon CMD en faisant juste NOMDUMODULE ...arguments, mais quand je tente de le faire via child_process, j'ai l'erreur suivante : "Truc n'est pas reconnu en tant que commande interne"
Quelqu'un aurait une solution ?

#

Commande qui fonctionne dans mon CMD :

#

Le code qui retourne l'erreur précédente mais qui devrais fonctionner : ```ts
import { exec } from "child_process";

const onlyUsed = (email: string) => {
return new Promise((resolve, reject) => {
exec(holehe ${email} --only-used, (error, stdout, stderr) => {
if (error) {
console.log(error);
reject(new Error("Something went wrong"));
} else {
resolve(stdout);
}
});
});
};

export default onlyUsed;

#

PS : J'ai tenté d'exec uniquement "Holehe" mais sa n'a pas fonctionné j'ai toujours l'erreur en question

glass cargo
rocky oar
#

Car par exemple, dans mon app je verifie que les prés requis sont installé et sa fonctionne : ```ts
import { exec } from "child_process";

export default () => {
return new Promise((resolve, reject) => {
exec("py --version", (error, stdout, stderr) => {
if (error) {
reject(new Error("Python3 not found"));
} else {
resolve(stdout);
}
});
});
};

glass cargo
#

Oui mais python est peut-être un programme "reconnu"

rocky oar
#

Mh ... Je pense voir ce que tu veux dire, mais Child_process exécute la commande dans un CMD, comme moi je le ferais à la main ( et sa fonctionne à la main)

glass cargo
#

Ex avec vscode: tu peux utiliser les commandes npm, node, mais pas tsc, vue, etc

rocky oar
#

AH

#

Je peux pas dans VSCode

glass cargo
#

Yep

#

Faut add à la whitelist de vscode

#

Peut-être qu’il y a la même protection sur childprocess

rocky oar
#

Uhm ... et je n'ai pas moyen de choisir le shell dans lequel j'exec avec ChildProcess ?

glass cargo
#

🤷‍♂️

#

Aucune idée x)

#

Et si tu lance ton app en admin ?

rocky oar
#

Je fais les tests

#

Ça fonctionne 🥳

#

Merci 🙏

#

(Normalement on entre une Email, mais je l'ai mis en dure dans le code pour tester)

left forum
rocky oar
# left forum ça servirait à quoi ?

C'est une application companion regroupant tout les outils d'OSINT les plus populaire en un seul logiciel, avec une interface intuitive pour éviter la tâche pénible des commandes dans le CMD pour les moins expérimentés et rendre la pratique de l'OSINT accessible à tous

#

l'exemple au dessus c'est un outil d'OSINT appelé Holehe, permettant de retracer tout les sites où une email a était utilisée lors de l'inscription

#

Je tiens à préciser que c'est totalement légale, seul une utilisation malveillante peut être éthiquement réprimandable

#

Et du coup, comme c'est une app qui utilise les outils d'OSINT populaire, j'avais besoin d'éxécuter des scripts Python avec NodeJS

#

Il y a aussi une page configuration qui permet de vérifier la présence des prés requis, et dans le cas contraire de les installer en 1 clic

#

le design n'est pas finaliser car je suis encore dans la phase de dev fonctionnel

left forum
#

ah c'est cool ça faudrait que j'vois avec Rust ce qui serait possible de faire avec JS

rocky oar
#

Pour te donner un exemple de comment sa ce présente, sa c'est mon helper qui permet de Check que Python est bien installé : ```ts
import { exec } from "child_process";

export default () => {
return new Promise((resolve, reject) => {
exec("py --version", (error, stdout, stderr) => {
if (error) {
reject(new Error("Python3 not found"));
} else {
resolve(stdout);
}
});
});
};

left forum
#

ah ouais stylé

#

au pire rajoute un système d'envoie d'email à celui qui se fait OSINT kappa

left forum
#

parce que là c'est éthique à ton niveau mais l'utilisation derrière ne l'est pas x)

rocky oar
#

Malheureusement, sa je ne peux pas le gérer :/

#

Il y a toujours des détraqués quoi que tu fasse

empty mauve
#

bonjour j'ais une érreur mais jla comprend pas la voici

C:\Users\Angelo\Desktop\Angelo bot - Copie\node_modules\@sapphire\shapeshift\dist\index.js:1592
      return regex.test(input) ? Result.ok(input) : Result.err(new ExpectedConstraintError(type, "Invalid string format", input, expected));
                                                               ^

ExpectedConstraintError: Invalid string format
    at Object.run (C:\Users\Angelo\Desktop\Angelo bot - Copie\node_modules\@sapphire\shapeshift\dist\index.js:1592:64)
    at C:\Users\Angelo\Desktop\Angelo bot - Copie\node_modules\@sapphire\shapeshift\dist\index.js:212:66
    at Array.reduce (<anonymous>)
    at StringValidator.parse (C:\Users\Angelo\Desktop\Angelo bot - Copie\node_modules\@sapphire\shapeshift\dist\index.js:212:29)
    at validateName (C:\Users\Angelo\Desktop\Angelo bot - Copie\node_modules\@discordjs\builders\dist\index.js:1402:17)
    at MixedClass.setName (C:\Users\Angelo\Desktop\Angelo bot - Copie\node_modules\@discordjs\builders\dist\index.js:1499:5)
    at C:\Users\Angelo\Desktop\Angelo bot - Copie\Commands\Moderation\setup-welcome.js:17:16
    at MixedClass._sharedAddOptionMethod (C:\Users\Angelo\Desktop\Angelo bot - Copie\node_modules\@discordjs\builders\dist\index.js:2080:50)
    at MixedClass.addStringOption (C:\Users\Angelo\Desktop\Angelo bot - Copie\node_modules\@discordjs\builders\dist\index.js:2052:17)
    at Object.<anonymous> (C:\Users\Angelo\Desktop\Angelo bot - Copie\Commands\Moderation\setup-welcome.js:16:6) {
  constraint: 's.string.regex',
  given: 'message de bienvenue',
  expected: 'expected /^[\\p{Ll}\\p{Lm}\\p{Lo}\\p{N}\\p{sc=Devanagari}\\p{sc=Thai}_-]+$/u.test(expected) to be true'
}

et voici le code qui va avec

#

svp urgent

slim anvil
#

faudrait juste que tu lises

#

j'ai ouvert le fichier j'ai deja vu une erreur très obvious, prend le temps de te re-lire

glossy rose
#

c'est comme si sur minecraft tu pouvais faire une commande avec un espace

worthy dew
#

Bonsoir, je viens vous voir car je rencontre une petite erreur lors de l'installation de mon bot discord, j'ai suivi toutes les étapes du site pour créer un bot discord, et lors du lancement voici l'erreur :

#

je suis à la partie "connecter son bot à l'API de Discord"

drowsy ocean
worthy dew
#

pourtant c'est celui de ce discord

#

tu en a un à me conseiller ?

drowsy ocean
# worthy dew tu en a un à me conseiller ?

To start off the discord.js series, I will be showing you how to setup the main files of your discord bot, and get your discord bot online and running

Patreon: https://www.patreon.com/kajdev

Useful Links:

▶ Play video
worthy dew
#

merci

worthy dew
red torrent
drowsy ocean
mellow parrot
#

Bonjour tout le monde !
j'aurais besoin de votre aide..
je m'explique sur ce code : https://i.imgur.com/DA2UhI1.png
j'ai fait des console logs (ouais2, ouais3, ouais4, ouais5..) sauf que j'ai l'impressions que le code du colector ou y'a mes boutons ne s'éxécute pas vu que les console log n'apparaissent pas dans la console..

#

voici le code en codeblock :

#
 if (interaction.customId === "close-ticket") {
            // ON CHERCHE DANS LA BASE DE DONNEE L'ID DU TICKET QU'ON A MIS DANS LA VALUE DU SELECT MENU
            db.query(`SELECT * FROM tickets WHERE ticketid = "${interaction.values[0]}"`, async (err, req) => {

                // SI ON TROUVE PAS L'ID ON RETURN BLC
                if (req.length < 1) {
                    return;
                }
                // LA ON CHERCHE LE CHANNEL PAR SON ID ET ON LE DELETE
                let Embed = new Discord.EmbedBuilder()
                    .setColor("#FF8C00")
                    .setTitle(`❓ - __Menu des fermetures des tickets__`)
                    .setDescription(`> Que voulez-vous faire avec le ticket ${interaction.values[0]} ? `)
                    .setThumbnail(bot.user.displayAvatarURL({ dynamic: true }))
                    .setTimestamp()
                    .setImage('https://i.imgur.com/aYh5vqJ.png')
                    .setFooter({ text: `Lunar Bot - Tout droits réservés par Xepa` })

                let button = new Discord.ActionRowBuilder()
                    .addComponents(
                        new Discord.ButtonBuilder()
                            .setCustomId("close")
                            .setStyle(Discord.ButtonStyle.Secondary)
                            .setEmoji("❌"),
                        new Discord.ButtonBuilder()
                            .setCustomId("save")
                            .setStyle(Discord.ButtonStyle.Secondary)
                            .setEmoji("💾"),
                    )
                console.log("ouais") // ok
                const replyMessage = await interaction.reply({
                    embeds: [Embed],
                    components: [button]
                });

                const filter = (i) => interaction.user.id === i.user.id;
                const collector = replyMessage.createMessageComponentCollector({ filter, time: 60000 });


                collector.on('collect', async (interaction) => { // à partir d'ici le code ne s'éxécute pas...
                    console.log("ouais2")
                    if (interaction.isButton() && interaction.customId === 'close') {
                        console.log("ouais3") // pas de console log dans la console quand j'exécute le boutons 

                        bot.guilds.cache.get(interaction.guild.id).channels.cache.get(`${req[0].ChannelID}`).delete()
                        db.query(`DELETE FROM tickets WHERE ticketid = "${interaction.values[0]}"`)

                    }
                });

                collector.on('collect', async (interaction) => {
                    console.log("ouais4")
                    if (interaction.isButton() && interaction.customId === 'save') {
                        console.log("ouais5")

                        const channel = message.channel;
                        const attachment = await discordTranscripts.createTranscript(channel);
                        const logsChannel = message.guild.channels.cache.find(c => c.name === "logs" || c.name === "log");
                        if (logsChannel) {
                            await logsChannel.send({
                                files: [attachment],
                            });
                        }
                        bot.guilds.cache.get(interaction.guild.id).channels.cache.get(`${req[0].ChannelID}`).delete()
                        db.query(`DELETE FROM tickets WHERE ticketid = "${interaction.values}"`)

                    }
                });



            })
        }```
#

merci de votre aide, et n'hésiter pas à me mentioner !

arctic pagoda
#

Salut à tous j'écris un code pug et du js j'ai une icône que je veux m'en servir pour m'afficher deux formulaires différentes en fonction de la section sur laquelle je me trouve

icy oracle
#

Hein

empty mauve
#

hey, j'ais un problème et je ne trouve pas pk ça me fait ça et l'érreur...
bref voila le code

#

l'erreur

icy oracle
#

J'y connais rien mais c'est pas sensé être juste le nombre ?

empty mauve
#

att je crois que c juste il avais pas le rôle que j'ais crée pour les bot

#

a nan

#

je comprend pas pourtant le msg s'envoie

#

bon bah

#

help me please

slim anvil
#

c'est quoi le data.Role ?

#

comme la dernière fois suffit de lire le msg d'erreur

empty mauve
#

moi je lis que le role n'est pas une boule de neige

slim anvil
#

^_^

empty mauve
#

...

slim anvil
#

ce que tu essayes de passer c'est pour mentionner un role

#

donc ça ne passera pas

#

il veut un snowflake, donc un ID pour te la faire court

empty mauve
#

bah pk ça ma crée ça comme ça dans ma BDD?

slim anvil
#

parce que tu l'enregistres comme ça

empty mauve
#

ah donc au lieu de mentioner le role dans ma commande de setup je doit coller l'id

#

?

slim anvil
#

enregistre l'id et pas la mention et quand tu as besoin de le mentionner tu ajoutes juste <@& - id - >

#

pas utile d'enregistrer en base la mention

empty mauve
#

ok en gros dans me BDD j'enlève juste <,@,& et >

slim anvil
#

tu enregistres uniquement l'id oui

empty mauve
#

ok merci

#

je test

#

bruh ça marchera pas si je relance pas le bot

#

yes c bon

#

maintenant je doit trouver comment enlever ce role quand jme vérifie

#

mais je ferais ça plus tard

#

@slim anvil on peut mettre plusieur role a jouté quand le membre join car j'ais fais des "inter-role" comme GCA

slim anvil
#

oui tu peux

empty mauve
#

daieur faudra dire a zaros que le role hobbies dépasse un peux on vois des ... et il manque un espace entre le mot et le dernier émoji

empty mauve
#

ou ya un moyen plus rapide

empty mauve
near saddle
#

Hello, je rencontre actuellement un souci avec gamedig. J'espère pouvoir le résoudre ou bien, à défaut, pouvoir trouver une alternative ^^

Je fais actuellement un script dans lequel mon bot récupère par une commande tous les joueurs connectés sur un serveur gmod. Cependant, alors que l'IP est bonne et le port également, il peut arriver que la liste des joueurs apparaisse sans propriétés.

#

Une image valant mieux que mille mots :

#

résultat normal de ma query via gamedig

#

résultat parfois obtenu

#

( à noter que gamedig détecte bien qu'il y a un ou des joueurs sur le serveur, il ne répertorie "juste" pas le nom du joueur et les infos qui vont avec )

#

et voici ma requête

#

merci à ceux qui prendront le temps de m'aider!
( pingez moi en cas d'idée, même si ça passe par une toute autre manière de récupérer la liste des joueurs et leurs noms ! )

slim anvil
# near saddle Hello, je rencontre actuellement un souci avec gamedig. J'espère pouvoir le réso...

hello
https://github.com/gamedig/node-gamedig/issues regarde le repo il a l'air d'être laissé à l'abandon, et il semblerait que bcp ont des issues liés aux players, vide, pas la bonne value etc.
tu peux essayer de --debug pour voir si tu as des erreurs ou non, ou alors de débug la lib de ton côté, ou en utiliser une autre (mais pas forcément sur gmod, sur d'autres jeux aussi)

ou sinon parcours les issues voir si certain ont réussis à resolve via des petits hacks

GitHub

Query for the status of any game server in Node.JS or Bash - Issues · gamedig/node-gamedig

near saddle
#

est ce que tu connaîtrais une lib qui aurait un fonctionnement similaire ?

hazy mirage
near saddle
#

je vais essayer ça alors, je vous remercie ^^

hazy mirage
#

Np, dis moi si ça fonctionne 😉

knotty vapor
#

Bonjour, j'aurai besoin d'aide sur un code, je n'arrive pas a trouver l'erreur. J'aimerai pouvoir comprendre pk y'a sa qui s'affiche et comprendre comment le résoudre si possible. Merci a ceux qui prendrez le temps de m'aider

knotty vapor
#

mon index

#

mon loadcomands

left forum
#

l'erreur vient du loadcommands alors

knotty vapor
knotty vapor
pallid plume
knotty vapor
pallid plume
#

au dessus de client.commands.set

#

il est undefined ton truc

left forum
#

en dessous de fileCommande

knotty vapor
left forum
#

envoie l'erreur

pallid plume
#

t'as pas un undefined qui a pop dans ta console ?

#

Pour moi c'est le require(...) qui te pose problème

knotty vapor
#

je vais envoyez l'erreur

left forum
#

tu as vérifié si ton chemin d'accès était bon ?

knotty vapor
left forum
#

quand tu fais ../ tu as pas une auto complétion ?

knotty vapor
left forum
#

c'est normal ../Commands/Commands ?

knotty vapor
left forum
#

car c'est bizarre

knotty vapor
#

azy je retourne vérifie

knotty vapor
left forum
#

ligne 8 à 17

knotty vapor
#

La j’ai mis en français et y’a tjr l’erreur

left forum
#

envoie ton code en copier coller formater

knotty vapor
#

Azy

knotty vapor
# left forum envoie ton code en copier coller formater
function loadCommands(client) {
    const ascii = require("ascii-table");
    const fs = require("fs");
    const table = new ascii().setHeading("commandes", "Status");

    var cmdArray = [];

    const dossiers = fs.readdirSync("./Commands");

    for (const dossier of dossiers) {
        
        const fichiers = fs
        .readdirSync(`./Commands/${dossier}`)
        .filter((fichier) => fichier.endsWith(".js"));

        for (const fichier of fichiers) {
            const fichierCommande = require(`../Commands/${dossier}/${fichier}`);

            console.log(fichierCommande.data.name)
            
            client.commands.set(fichierCommande.data.name, fichierCommande);

            cmdArray.push(fileCommande.data.toJSON());

            table.addRow(fichier, ":white_check_mark:");
            continue;
        }
    }
    client.application.commands.set(cmdArray);

    return console.log("commands chargées.\n", table.toString());
}

module.exports = { loadCommands };
left forum
#
function loadCommands(client) {
    const ascii = require("ascii-table");
    const fs = require("fs");
    const table = new ascii().setHeading("commandes", "Status");

    var cmdArray = [];

    const dossiers = fs.readdirSync("./Commands");

    for (const dossier of dossiers) {
        
        const fichiers = fs
        .readdirSync(`./Commands/${dossier}`)
        .filter((fichier) => fichier.endsWith(".js"));

        for (const fichier of fichiers) {
            const fichierCommande = require(`../Commands/${dossier}/${fichier}`);

            console.log(fichierCommande.data.name)
            
            client.commands.set(fichierCommande.data.name, fichierCommande);

            cmdArray.push(fileCommande.data.toJSON());

            table.addRow(fichier, ":white_check_mark:");
            continue;
        }
    }
    client.application.commands.set(cmdArray);

    return console.log("commands chargées.\n", table.toString());
}

module.exports = { loadCommands };
knotty vapor
#

y'a sa aussi qui est apparu

left forum
#
function loadCommands(client) {
    const ascii = require("ascii-table");
    const fs = require("fs");
    const table = new ascii().setHeading("commandes", "Status");

    var cmdArray = [];

    const dossiers = fs.readdirSync("../Commands");

    for (const dossier of dossiers) {
        
        const fichiers = fs
        .readdirSync(`${dossier}/${fichiers}`)
        .filter((fichier) => fichier.endsWith(".js"));

        for (const fichier of fichiers) {
            const fichierCommande = require(`${dossier}/${fichier}`);

            console.log(fichierCommande.data.name)
            
            client.commands.set(fichierCommande.data.name, fichierCommande);

            cmdArray.push(fileCommande.data.toJSON());

            table.addRow(fichier, ":white_check_mark:");
            continue;
        }
    }
    client.application.commands.set(cmdArray);

    return console.log("commands chargées.\n", table.toString());
}

module.exports = { loadCommands };
#

essaye ça pour voir

knotty vapor
#

Azy

knotty vapor
left forum
#
function loadCommands(client) {
    const ascii = require("ascii-table");
    const fs = require("fs");
    const table = new ascii().setHeading("commandes", "Status");

    var cmdArray = [];

    const dossiers = fs.readdirSync("./Commands");

    for (const dossier of dossiers) {
        
        const fichiers = fs
        .readdirSync(`${dossier}/${fichiers}`)
        .filter((fichier) => fichier.endsWith(".js"));

        for (const fichier of fichiers) {
            const fichierCommande = require(`${dossier}/${fichier}`);

            console.log(fichierCommande.data.name)
            
            client.commands.set(fichierCommande.data.name, fichierCommande);

            cmdArray.push(fileCommande.data.toJSON());

            table.addRow(fichier, ":white_check_mark:");
            continue;
        }
    }
    client.application.commands.set(cmdArray);

    return console.log("commands chargées.\n", table.toString());
}

module.exports = { loadCommands };
#

essaye ça

knotty vapor
left forum
#
function loadCommands(client) {
    const ascii = require("ascii-table");
    const fs = require("fs");
    const table = new ascii().setHeading("commandes", "Status");

    var cmdArray = [];

    const dossiers = fs.readdirSync("./Commands");

    for (const dossier of dossiers) {
        for (const fichier of fichiers) {
            
            const fichiers = fs
                .readdirSync(`${dossier}/${fichiers}`)
                .filter((fichier) => fichier.endsWith(".js"));

            const fichierCommande = require(`${dossier}/${fichier}`);

            console.log(fichierCommande.data.name)
            
            client.commands.set(fichierCommande.data.name, fichierCommande);

            cmdArray.push(fileCommande.data.toJSON());

            table.addRow(fichier, ":white_check_mark:");
            continue;
        }
    }
    client.application.commands.set(cmdArray);

    return console.log("commands chargées.\n", table.toString());
}

module.exports = { loadCommands };
knotty vapor
#

je suis dsl de te faire perdre du temps

left forum
#

si tu me faisais perdre mon temps je serais pas en train de t'aider

#

Le serveur est là pour ça

knotty vapor
left forum
# knotty vapor

👉 Yo les potes, je vous fais un petit tuto de comment coder un bot Discord avec discord.js v14 ! Dans cette vidéo, on va créer l'handler des commandes et faire notre première commande, la commande ping ! N'hésite pas à t'abonner, activer la cloche, liker et rejoindre mes réseaux (merci) !

👉 #DISCORDJSV14 #BOTDISCORD #DISCORD

❤️ S'abonner : htt...

▶ Play video
#

je fais pas du tout de DJS donc je pourrais pas t'aider plus

#

mais j'peux te conseiller ce tuto

#

il est plutôt bien fait

knotty vapor
#

Ok ok mais ducoup si je suis ce tuto je dois changer mon index.Js aussi ?

left forum
#

possiblement

knotty vapor
#

Ok ok je vais allez voir si sava marcher merci de ton aide

knotty vapor
#

j'ai un problême c'est que lorsque j'envoie un message avec le prefix suivie de nimporte quoi genre (?ahajaj) bah sa marque erreur et le bot crash alors que moi je voudrait que le bot ne crash pas et ne repond pas

near saddle
near saddle
knotty vapor
left forum
#

on vois rien là

knotty vapor
knotty vapor
# left forum envoie l'erreur en entier
Uncaught CombinedError Error: Received one or more errors
    at handle (c:\Discord\codage\VSC\bot naruto\node_modules\@sapphire\shapeshift\dist\index.js:1104:23)
    at parse (c:\Discord\codage\VSC\bot naruto\node_modules\@sapphire\shapeshift\dist\index.js:212:88)
    at validateDMPermission (c:\Discord\codage\VSC\bot naruto\node_modules\@discordjs\builders\dist\index.js:1477:25)
    at setDMPermission (c:\Discord\codage\VSC\bot naruto\node_modules\@discordjs\builders\dist\index.js:2302:5)
    at <anonymous> (c:\Discord\codage\VSC\bot naruto\Loaders\loadSlashCommands.js:14:10)
    at module.exports (c:\Discord\codage\VSC\bot naruto\Loaders\loadSlashCommands.js:9:18)
    at module.exports (c:\Discord\codage\VSC\bot naruto\Events\ready.js:6:10)
    at emit (events:514:28)
    at triggerClientReady (c:\Discord\codage\VSC\bot naruto\node_modules\discord.js\src\client\websocket\WebSocketManager.js:388:17)
    at checkShardsReady (c:\Discord\codage\VSC\bot naruto\node_modules\discord.js\src\client\websocket\WebSocketManager.js:371:10)
    at <anonymous> (c:\Discord\codage\VSC\bot naruto\node_modules\discord.js\src\client\websocket\WebSocketManager.js:201:16)
    at emit (events:514:28)
    at checkReady (c:\Discord\codage\VSC\bot naruto\node_modules\discord.js\src\client\websocket\WebSocketShard.js:181:12)
    at gotGuild (c:\Discord\codage\VSC\bot naruto\node_modules\discord.js\src\client\websocket\WebSocketShard.js:155:10)
    at <anonymous> (c:\Discord\codage\VSC\bot naruto\node_modules\discord.js\src\client\websocket\WebSocketManager.js:241:15)
    at emit (c:\Discord\codage\VSC\bot naruto\node_modules\@vladfrangu\async_event_emitter\dist\index.js:282:31)
    at <anonymous> (c:\Discord\codage\VSC\bot naruto\node_modules\@discordjs\ws\dist\index.js:1173:51)
    at emit (c:\Discord\codage\VSC\bot naruto\node_modules\@vladfrangu\async_event_emitter\dist\index.js:282:31)
    at onMessage (c:\Discord\codage\VSC\bot naruto\node_modules\@discordjs\ws\dist\index.js:988:14)
    at processTicksAndRejections (internal/process/task_queues:95:5)
left forum
#

le bot GCA clc

#

t'essaye d'envoyer un message en D²M depuis ton bot ?

knotty vapor
#

non je veux juste faire un handlers des loadslashcommands

#

mais wesh

#

et j'ai refuser les messages en D²M

#

tiaaa enfin

fleet scaffold
#

privé

#

message privé

devout flume
#

Bonjour, j'ai re crée mon propore bot mais impossible de faire fonctionner la commande /clear

voici le code :

const { Client, GatewayIntentBits } = require('discord.js');
const { SlashCommandBuilder } = require('discord.js');
const { REST } = require('@discordjs/rest');
const { Routes } = require('discord-api-types/v9');

const commands = [
  {
    name: 'clear',
    description: 'Supprimer un certain nombre de messages dans le channel.',
    options: [
      {
        name: 'amount',
        description: 'Le nombre de messages à supprimer (entre 1 et 100).',
        type: 4,
        required: true,
      },
    ],
  },
];

const clientId = '';
const guildId = '';

const rest = new REST({ version: '9' }).setToken('');

(async () => {
  try {
    console.log('Started refreshing application (/) commands.');

    await rest.put(
      Routes.applicationGuildCommands(clientId, guildId),
      { body: commands },
    );

    console.log('Successfully reloaded application (/) commands.');
  } catch (error) {
    console.error(error);
  }
})();

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

client.once('ready', () => {
  console.log('Le bot est prêt !');
});

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

  const { commandName, options } = interaction;

  if (commandName === 'clear') {
    if (!interaction.member.permissions.has('MANAGE_MESSAGES')) {
      return interaction.reply("Vous n'avez pas la permission de supprimer des messages.");
    }

    const amount = options.getInteger('amount');

    if (amount < 1 || amount > 100) {
      return interaction.reply('Veuillez spécifier un nombre entre 1 et 100 pour supprimer les messages.');
    }

    try {
      const fetched = await interaction.channel.messages.fetch({ limit: amount });
      interaction.channel.bulkDelete(fetched);
      interaction.reply(`Suppression de ${amount} messages avec succès !`);
    } catch (error) {
      console.error('Erreur lors de la suppression des messages :', error);
      interaction.reply('Une erreur est survenue lors de la suppression des messages.');
    }
  }
});```

Voici l'erreur : 

```js
   if (!this.deferred && !this.replied) throw new DiscordjsError(ErrorCodes.InteractionNotReplied);
                                               ^

Error [InteractionNotReplied]: The reply to this interaction has not been sent or deferred.
    at ChatInputCommandInteraction.editReply (C:\Users\zzz\Desktop\discord.js-v14-template-main\node_modules\discord.js\src\structures\interfaces\InteractionResponses.js:157:48)
    at Client.<anonymous> (C:\Users\zzz\Desktop\discord.js-v14-template-main\index.js:131:19)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
  code: 'InteractionNotReplied'
}```

Merci beaucoup 🙂
silent quiver
#

@devout flume slt, voici une vidéo qui devrait t'aider.

cobalt oyster
#

salut savez vous comment récupérer l'id du message d'un thread

#

genre l'id de ce message

left forum
#
const thread = channel.threads.cache.find(x => x.name === 'food-talk');
await thread.delete();
slim anvil
#

sur chaque msg tu as une propriété thread

left forum
#

aç vient de la doc

slim anvil
#

et un hasThread aussi

#

si tu veux le récupérer depuis le msg parent

cobalt oyster
#

Okay merci mais j'ai trouver ca qui fonctionne bien
const InitialMessage = await thread?.fetchStarterMessage();

devout flume
silent quiver
#

@devout flume c'est la même chose tu dois juste remplacer la variable "message" de sont code par "interaction"

light sluice
#

Salut, les commentaires de mon api ne s'affichent pas alors qu'ils deverait s'afficher quand on voit le loader, pour tant on voit bien la requete à chaque vois que le loader est visible, quelqu'un aurait une idée ?

#

`import { fetchJson } from "./api.js"

class InfinitePagination {
/@type {string} */
#endpoint
/
@type {HTMLElement} */
#template
/@type {HTMLElement} */
#target
/
@type {string} */
#elements
/**@type {IntersectionObserver} */
#observer

/**
*

  • @param {HTMLElement} element
    */

    constructor (element) {
    this.#endpoint = element.dataset.endpoint
    this.#template = document.querySelector(element.dataset.template)
    this.#target = document.querySelector(element.dataset.target)
    this.#elements = element.dataset.elements
    this.#observer = new IntersectionObserver((entires) => {
    for (const entry of entires) {
    if (entry.isIntersecting) {
    this.#loadMore()
    }
    }
    })
    this.#observer.observe(element)
    }
    async #loadMore() {
    const comments = await fetchJson(this.#endpoint)
    for (const comment of comments) {
    const commentElement = this.#template.content.cloneNode(true)
    this.#target.append(commentElement)
    }
    }
    }

document
.querySelectorAll('.js-infinite-pagination')
.forEach(el => new InfinitePagination(el))

`

#

voici mon js

floral bolt
#

Quelqu’un a déjà use nextjs et capacitor ?

ruby pond
#

Jai un probleme avec mon js et mon hta voici le code :

#

Const separators = document.querySelectorAll('.separator');
separators.forEach(separator => {
const infoDiv = separator.nextElementSibling;
separator.addEventListener('click', () => {
infoDiv.classList.toggle('active');
});
});

glass cargo
ruby pond
glass cargo
#

const pas Const ;)

ruby pond
glass cargo
#

Je vois pas de problème 🤷‍♂️

ruby pond
#

Tu peux voc ?

ruby pond
floral bolt
trim trout
#

c'est quoi le meilleur hebergeur pour un bot discord avec database ?

queen ocean
glass cargo
pallid plume
glass cargo
pallid plume
#

Pourquoi il posserais la question si 98% du discord connait déjà pas l'existance de Capacitor ?

#

Perso je viens de découvrir

glass cargo
floral bolt
#

Mec je suis sur le Discord depuis bien longtemps je sais bien que si j’ai une question à poser je dois le faire

#

C’est juste que je connais personne qui l’utilise

glass cargo
#

Mais faut de prendre ça mal suefort

floral bolt
#

Je le prend pas mal hein c’est juste que t’es 3 derniers message me force presque à poser une question 😄

left forum
#

C’est vrai que c’est mieux de poser la question direct c’est moins long si quelqu’un peut t’aider

floral bolt
#

Mais j'ai pas de question mdr

#

je veux juste savoir si des gens l'utilise 😄

left forum
#

ahhhhh

grave turtle
#

Hello, serait-il possible d'avoir des conseils(sites ou quoi que ce soit)pour apprendre javascript en tant que débutant? j'ai parcouru plusieurs sites mais j'aimerais savoir si il existe des moyens plus recommandé pour l'apprendre

left forum
grave turtle
#

Merci bien

worthy dew
#

Bonjour ! Avant toutes choses, je tiens à dire que j'ai suivi le code de cette vidéo pour réaliser ma commande "help" : https://www.youtube.com/watch?v=3pVJgLBBmrs&list=PLAGWPY8arhLRP7h-3YJ0yRKbcHQ_3KA_R&index=8

**J'ai fais exactement tout comme lui (normalement) et voici l'erreur que la console me rejette lorsque j'execute la commande sur discord **:

`${str[0].toUpperCase()}${str.slice(1).toLowerCase()}`;
^
TypeError: Cannot read properties of undefined (reading '0')

Today, I will be showing you how to create a dyanmic help command menu in discord.js v14.

Patreon: https://www.patreon.com/kajdev

Useful Links:

Credits: https://youtube.com/c/Lyxcode

Discord.js is a powerful Node.js module to interact with the ...

▶ Play video
#

(voici la partie du code ou il y a potentiellement une erreur) ```

module.exports = {
data: new SlashCommandBuilder()
.setName("help")
.setDescription("Obtenez une liste de toutes les commandes que je suis capable de faire."),
async execute(interaction) {
const emojis = {
info: "📝",
moderation: "🛠",
general: "⚙",
};

const directories = [
  ...new Set(interaction.client.commands.map((cmd) => cmd.folder)),
];
  
const formatString = (str) =>
  `${str[0].toUpperCase()}${str.slice(1).toLowerCase()}`;
  
const categories = directories.map((dir) => {
  const getCommands = interaction.client.commands
    .filter((cmd) => cmd.folder === dir)
    .map((cmd) => {
      return {
        name: cmd.data.name,
        description:
          cmd.data.description ||
          "Il n'y a pas de description pour cette commande.",
      };
    });
      
  return {
    directory: formatString(dir),
    commands: getCommands,
  };
});
cerulean pond
worthy dew
#

je fais ça quand je rentre

worthy dew
#

désolé je m'y connais pas énorme dans ce langage

cerulean pond
worthy dew
cerulean pond
worthy dew
#

normal j’ai envoyé que la partie où il y a normalement une erreur

#

pas la fin du code

cerulean pond
#

Send me all

worthy dew
#

okok

#

je wuis dispo voc stv

#

je t'envoie un doc text

#

ya trop de ligne

cerulean pond
#

Et dis-moi ce que ça te log

worthy dew
#

vasy

cerulean pond
#

Regarde ce qu'il y'a marqué juste avant ton erreur

#

"undefined"

worthy dew
#

ça dit que mon bot est en ligne c'est tout, l'erreur commence là

cerulean pond
cerulean pond
worthy dew
#

ah je l'ai enlevé je crois

cerulean pond
#

?

worthy dew
#

Ah non rien

cerulean pond
#

Tu as enlevé quoi ?

worthy dew
#

nn nn rien j'ai rien dit

cerulean pond
#

Bon, maintenant pour nous en assurer, tu vas placer un console.log(dir) juste après dans ta variable categories

#

Comme ceci :

 const categories = directories.map((dir) => {
      console.log("Variable dir:",dir)
      const getCommands = interaction.client.commands
        .filter((cmd) => cmd.folder === dir)
        .map((cmd) => {
          return {
            name: cmd.data.name,
            description:
              cmd.data.description ||
              "Il n'y a pas de description pour cette commande.",
          };
        });
          
      return {
        directory: formatString(dir),
        commands: getCommands,
      };
    });
worthy dew
#

dac vasy

cerulean pond
#

Et après tu reload ton bot et tu me dis ce que ça retourne

worthy dew
#

ok oui ça marque qu'elle n'est pas définie

cerulean pond
#

Fait moi une capture

worthy dew
cerulean pond
#

Dis-moi

#

Fais-moi voir ton fichier commandHandler.js

worthy dew
#
function loadCommands(client) {
    const ascii = require('ascii-table');
    const fs = require('fs');
    const table = new ascii().setHeading("Commands", "Status");

    let commandsArray = [];

    const commandsFolder = fs.readdirSync('./commands');
    for (const folder of commandsFolder) {
        const commandFiles = fs.readdirSync(`./commands/${folder}`). filter((file) => file.endsWith('.js'));

        for (const file of commandFiles) {
            const commandFile = require(`../commands/${folder}/${file}`);

            client.commands.set(commandFile.data.name, commandFile);

            commandsArray.push(commandFile.data.toJSON());

            table.addRow(file, "loaded");
            continue;
        }
    }

    client.application.commands.set(commandsArray);

    return console.log(table.toString(), "\n Loaded commands");
}

module.exports = {loadCommands};
cerulean pond
#

Et l'architecture de ton dossier ?

worthy dew
#

lequel ?

#

le tout ?

cerulean pond
#

tout

worthy dew
#

dans commande :

#

et info :

#

le reste on s'en fou non ?

#

le commandHandler se trouve dans le dossier handlers

#

pas de sous dossier

cerulean pond
#

re

#

Bon à priori c'est compliqué de t'aider comme ça, j'viens de voir la vidéo, y'a un commentaire (screen) et son dossier github n'est plus en ligne, donc je te conseillerai de t'aider d'une autre chaine, + accessible pour ceux qui débutent

worthy dew
#

a

cerulean pond
#

Essaie de mettre un console.log(directories) juste après la déclaration de cette variable pour voir

floral bolt
#

Envois tout ton code

cerulean pond
# floral bolt Envois tout ton code

Je te laisse prendre le relai, mais ça va être compliqué de l'aider comme ça, qui plus est le projet n'est même plus sur github
Bon moi je retourne à mon code kappa

floral bolt
worthy dew
#

dac att

#

le code

#

et l'index

floral bolt
#

bonne soirée 😉

worthy dew
#

ah merci je test ça demain !

knotty vapor
#

Bonjour, dsl de déranger. En ce moment je travaille sur une commande qui genre. Prend les messages des membres. Imaginant là je l’utilise. Genre fait la commande le bot m’envoie nom : ? en format embed et en-dessous du message du bot j’envoie chocapik j’aimerai savoir comment faire pour que le bot prend ce le mot chocapik que j’ai envoyé et le mets dans son message (le message du bot)

queen ocean
#

Donc quand tu envoies ton embed, tu awaitMessages pour récup la réponse puis tu edit l'embed

knotty vapor
#

Ok ok bien vue merci

frosty sand
#

Quelqu’un a une doc pour faire comme blox link genre tu connecte ton compte Roblox a Discord

keen narwhal
#

Salut à tous ! je cherche de l'aide pour une solution que je ne trouve pas faire une bar de progression de ma musique en directe voici un screen de ce que je demande

En gros je souhaite que pendant que ma musique ce joue la bar s'actualise dans le channel ou les gens demande leur musique via le track bar pouvez vous me lancer vers une solution je peux vous donner le code de ma function.js pour l'embed qui s'affiche comme ça

https://media.discordapp.net/attachments/1097997975197851758/1140739100572393693/image.png?width=1036&height=662

slim anvil
#

peut-être pas obligé d'éditer ton embed toutes les secondes, ce serait overkill
fais en sorte que ce soit variable en fonction de la durée, éviter de spam les édites du message

keen narwhal
#

J'ai esseyé avec un ${progressbar.splitBar(queue.duration, queue.currentTime + 5, size = 27, line = '-', slider = '🎶')[0]}

#

Sans réponse du code enfin une erreur qui me dit que splitBar n'existe pas

#

TypeError: progressbar.splitBar is not a function

#

Faut aussi s'avoir que j'ai un progressbar.js comprenant le système de progress bar



module.exports = {
    progressbar: function (player) {
    let size = 15;
    let line = "▬";
    let slider = ":radio_button:";
    
    if (!player.queue.current) return `[ ${slider}${line.repeat(size - 1)} ]`;
    let current = player.queue.current.length !== 0 ? player.shoukaku.position : player.queue.current.length;
    let total = player.queue.current.length;
    let bar = current > total ? [line.repeat(size / 2 * 2), (current / total) * 100] : [line.repeat(Math.round(size / 2 * (current / total))).replace(/.$/, slider) + line.repeat(size - Math.round(size * (current / total)) + 1), current / total];
   
    if (!String(bar).includes(slider)) return `${slider}${line.repeat(size - 1)}`;
    return `${bar[0]}`;
    }
 }
keen narwhal
#

Re ! j'ai essayer avec un

return interaction.editReply({ embeds: [embed] }).then(m => {
      interval = setInterval(() => {
        if(!song) return clearInterval(interval);
        m.edit({ embeds: [embed] })
      }, 3000)
    })

Cela s'actualise une fois en suite plus rien et je perçois aucun changement sur l'embed qui est edit

keen narwhal
#

Bon au moins la sa s'actualise x)

keen narwhal
#

Re bonsoir ! Suite a des problèmes j'ai du faire une commande de Now PLaying cependant celui m'affiche une erreur est ne supprime pas le message du now playing a la fin de la musique et n'arrête rien voici un screen

cerulean pond
keen narwhal
#

Alors maintenant j'ai réussi mais

#

cependant
quand je skip une musique le titre présédent ce superpose au nouveau titre
En gros ça change le nom du titre sur l'ancienne musique si il y a des playlistes jouer
ou des musiques en attente

keen narwhal
#

En faite faudrait que je trouve le moyen de faire en sorte que si ça skip une music ça relance l'intervale
mais je plane je galère

keen narwhal
#

Dans ma function

#

Regarde

cerulean pond
#

Envoie moi le screen le code est trop long

keen narwhal
#

C'est le screen du pastebin

#

Mais parcontre je doute qui clear l'intervale

cerulean pond
#

bah logique

#

c'est == ou ===

#

pas =

#

= c'est pour attribuer une valeur à la variable

keen narwhal
#

Attend je test voir

#

Sinon le code en lui même fonctionne ?

cerulean pond
#

Aucune idée je l'ai pas testé

keen narwhal
#

Et bien mon embed m'affiche ma musique précédente ainsi la nouvelle

cerulean pond
#

c'est à dire ?

keen narwhal
#

La musique actuelle

#

La musique précédente

#

Et en gros toute les 10 secondes il change le nom et l'autheur de la musique en gros il remet les infos de l'ancienne musique

#

J'ai l'impression qui clearIntervale pas *

cerulean pond
#

C'est toi qui a tout codé ?

keen narwhal
#

Non c'est une reprise d'un code que j'ai re modifié justement

cerulean pond
#

Tu comptes en faire un bot public ou privé ?

keen narwhal
#

Privé

#

Vu que ce n'est pas mon bot

#

Enfin une partie de mon code

keen narwhal
#

En gros toute les X secondes l'embed revoie les infos de la musique précédente qui avais avant

#

En gros ça intérfaire sur la nouvelle musique qui se joue

#

Donc j'ai l'impression que le clearIntervale ne fonctionne pas sinon il clear puis il recommence une fois la musique qui suit reprend

cerulean pond
keen narwhal
#

Dans ma function

#

async function trackStartEventHandler(msgId, channel, player, track, client) {

#

Et @param {KazagumoPlayer} player

#

Je return les infos dans ma console

#

Tout est normal tout s'affiche

#

J'ai attendu la fin de la musique voilà ce que ça fais

#

Et dans la console sa n'affiche pas le message de La musique est fini !

#

J'ai inversé le player.queue.current.length == player.position par player.position >= player.queue.current.length ça ne fonctionne pas

#

Et même avec un if(!player.queue.current) ça fonctionne pas

#

Je test avec un !player.playing && !player.paused

#

ok c'est bon !

#

Il m'affiche bien le console.lo

#

g

#

Par contre ça ne résoud toujours pas mon problème que ça change les informations de la musique précédente...

#

Quand c'est une playlist qui est joué

#

Car si on regarde bien, elle a joué une autre musique mais l'autre est encore la

#

La première c'est My Life et la deuxième c'est Believer

#

En gros il stack

frosty sand
#

:/

keen narwhal
#

C'est des musiques au pif

#

Faut bien test

visual sequoia
#

Salut les bg de cette planette de JS es-ce que il y a un d'entre vous qui si connais bien en Regex? Car je cherche a faire un systeme de bad word donc il me faut detecter les mots meme modifier sans etre trop strict non plus genre je veut detecter si le mec ecrit f u c k fuck f.u.c.k f4ck

#

Thanks in advance

left forum
#

Y a des sites pour auto générer du regex j’crois

visual sequoia
left forum
#

Regarde des tutos peut être

#

Parce que j’crois que personne ne maîtrise vraiment le regex

oak turret
#

Salut,

Y a des sites qui le font et qui explique les différent type de match, et pour tester tu peux entrer un input et voir le match avec ton regex

#

Tout dépend de ce que tu veux faire, sinon t’as chat gpt qui te le fera très sûrement

low arch
#

Bonjour possible de m'aide sur des probleme sur un bot discord relier a pterodactyl si possible de vocal

#

voici mon eureur au complet

violet knot
visual sequoia
violet knot
#

Alright

visual sequoia
keen narwhal
#

Bonjour je voudrais faire une mise à jour automatique pour mon application ElectronJS mais qui télécharge les fichiers via un site externe pas via Github comment je pourrais faire ?

dusk berry
keen narwhal
# dusk berry Bonjour, peux tu préciser ce que tu cherche ?

En gros, je voudrais faire une mise à jour automatique de mon application, seulement j'ai vue qu'il fallait passer par github et qu'il fallait que je le mette en publique (ce que je ne veux pas) donc je voudrais passer via un site externe (mon site web) pour héberger les fichiers.

dusk berry
#

okay alors pour ça tu va devoir mettre en place un system pour que ton application puisse comparer sa version local (du package.json) avec la dernière disponible en faisant une requête sur tes serveurs

  • ton app fait une request sur tes serveur et tu récupère un object avec la dernière version disponible (et son lien de téléchargement), puis la compare
  • si elle est supérieur, tu download via le lien
  • tu décompresse
  • et tu exécute en sub process détaché (pour pouvoir fermer le process parent sans close l'installation)
    En gros voilà, dis moi si tu veux plus d'infos
floral bolt
#

ah mais non ca passe par github

keen narwhal
keen narwhal
dusk berry
#

bien sur !

keen narwhal
#

Merci 🫶

normal lichen
#

Bonjour j'essaye de faire des redirections avec nextjs et j'aimerais que de l'acceuil (page.tsx) je sois rediriger vers la page reglement (reglement.tsx) les 2 fichiers ce trouvant au même niveau dans src/app, j'ai réaliser ce code

 <Link href="/reglement">
    <div className="text-white hover:text-gray-400 cursor-pointer">Règlement</div>
  </Link>

mais ce message s'affiche dans ma console lors du clique sur le bouton

Warning: Detected multiple renderers concurrently rendering the same context provider. This is currently unsupported.

et je suis redirigé sur ma page erreur 404

pourriez vous m'aider s'il vous plait ?

ma navbar est créer dans un fichier navbar.tsx qui ce situe dans le dossier components qui ce situe lui même au même niveau que page.tsx et reglement.tsx
mon components s'affiche tres bien c'est vraiment lors du clique que la redirection ne ce fait pas

je vous remercie 😅

floral bolt
dusk berry
#

Bonsoir, je bute sur un problème depuis plusieurs semaines déjà, je travaille sur un launcher minecraft en ElectronJS et j'utilise une librairie nommée @xmcl/installer pour télécharger les fichiers de minecraft. Or, lors de l'installation des librairies, le téléchargement crash tout le temps avec une erreur étrange

Error: Client network socket disconnected before secure TLS connection was established
j'ai fait beaucoup de recherche et est trouvé que ça pourrait avoir relation avec un proxy,

  • la librairie semble utiliser undici
  • le téléchargement bloque toujours à peu prêt au même pourcentage et à la même lib donc ça pourrait avoir rapport avec le temps de connexion
  • la ressource demandée est bien accessible
  • je n'utilise pas de VPN ou autre
const mainTask = installTask(xmclVersion, dir);
await mainTask.startAndWait({
  onUpdate(task: any, chunkSize: number) {
    //...
  },
  onFailed(task: any, error: any) {
    console.error(task, ' failed with error ', error);
    //...
  },
  onSucceed(task: any, result: any) {
    console.log(task, ' finished');
    //...
  }
});

Si quelqu'un à déjà utilisé cette lib, s'y connait en request ou à une piste de réponse à m'apporter je suis preneur,
Merci d'avance

floral bolt
#

montre le design pour voir

dusk berry
floral bolt
#

il resemble a quoi le launcher ?

dusk berry
floral bolt
#

propre

#

je regarde hein j'arrive quand j'ai trouvé 😉

dusk berry
#

okay ^^

floral bolt
#

c'est bien cette fonction la on est d'accord ? : js function Download(url: string, callback: any): Promise<string> { return new Promise((resolve, reject) => { console.log('updating...'); axios({ method: 'get', url: url, responseType: 'stream', onDownloadProgress: progressEvent => { // @ts-ignore const downloadPercentage = Math.floor((progressEvent.loaded * 100) / progressEvent.total); console.log('Downloading update: ' + downloadPercentage + '%'); callback(downloadPercentage); } }) .then(axiosResponse => { try { axiosResponse.data.pipe(createWriteStream(path.join(app.getPath('temp'), `bushLauncherUpdate.exe`))) .on('finish', () => resolve(path.join(app.getPath('temp'), 'bushLauncherUpdate.exe'))) .on('error', (error: any) => reject(error)) .on('onDownloadProgress', (progress: any) => console.log(progress)); } catch (err) { console.error(err); reject(err); } }) .catch(() => { reject('Couldn\'t update, please restart the launcher.'); console.error('Couldn\'t download the update'); }); }); }

#

ah bah non 😄

dusk berry
#

nop

floral bolt
#

Et si tu utilise install direct de xmcl ?

dusk berry
dusk berry
#

Et si tu utilise install direct de xmcl

burnt fractal
normal lichen
#

Ahh d’accord je vois, je vous remercie ^^

past nimbus
#

Merci pour ça Next

distant lagoon
#

Hey je suis nouveau dans le js et j'ai un problème avec node pour faire un bot.
possibilité de m'aider si besoin j'ai anydesk.

dire latch
alpine goblet
#

bonjour je dev un bot discord est un message me dissant exactement ceci "
Error: Cannot find module './config/loadCommands'
Require stack:

  • C:\Users*\Desktop\bot discord\main.js
    at Module._resolveFilename (node:internal/modules/cjs/loader:1077:15)
    at Module._load (node:internal/modules/cjs/loader:922:27)
    at Module.require (node:internal/modules/cjs/loader:1143:19)
    at require (node:internal/modules/cjs/helpers:121:18)
    at Object.<anonymous> (C:\Users*\Desktop\bot discord\main.js:4:22)
    at Module._compile (node:internal/modules/cjs/loader:1256:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1310:10)
    at Module.load (node:internal/modules/cjs/loader:1119:32)
    at Module._load (node:internal/modules/cjs/loader:960:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) {
    code: 'MODULE_NOT_FOUND',
    requireStack: [ 'C:\Users\*\Desktop\bot discord\main.js' ]" pouver vous m'aider svp
#

nn en faite j'ai regler le problème escuser moi j'avis oublier une lettre quelque part 😂

distant lagoon
#

TypeError [ClientMissingIntents]: Valid intents must be provided for the Client.
at Client._validateOptions (C:\Users\zack\node_modules\discord.js\src\client\Client.js:509:13)
at new Client (C:\Users\zack\node_modules\discord.js\src\client\Client.js:78:10)
at Object.<anonymous> (C:\Users\zack\Desktop\FoodendsexV1_bot\index.js:2:16)
at Module._compile (node:internal/modules/cjs/loader:1105:14)
at Object.Module._extensions..js (node:internal/modules/cjs/loader:1159:10)
at Module.load (node:internal/modules/cjs/loader:981:32)
at Function.Module._load (node:internal/modules/cjs/loader:822:12)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:77:12)
at node:internal/main/run_main_module:17:47 {
code: 'ClientMissingIntents'
}

red torrent
red torrent
# distant lagoon ?

Si jamais tu ne comprends pas l'anglais tu devrais prendre l'habitude de traduire les messages d'erreur. Ça te permettrait de savoir d'où vient ton problème

distant lagoon
#

ok

#

ces quoi des intentions

"Des intentions valides doivent être fournies pour le client"

warm bear
#

Bonjour à tous, j'ai un soucis sur une interface, je veux changer la valeur d'un élément html via js. C'est un système de panier. Mais par exemple quand je remplace la valeur initiale par une autre valeur, mon image, nom disparaissent et laissent place seulement au nombre d'items (quand il y a plus d'un items identiques, alors on met le nombre qu'il y a pour éviter d'avoir 36 éléments identiques).
Voici un exemple et comment je remplace. Merci d'avance à vous !

dusk berry
#

possible d'avoir ta structure HTML

warm bear
#

Je viens de trouver erreur de class, merci quand même de la réponse rapide !

solid wedge
#

Salut j'ai une question comme je peut faire pour que quand on clique sur un boutton sa ouvre un modal ?

unborn knot
#

pose directement ta question sur le discord de FiveM^^

sinon j'ai trouvé quelque chose, ça peut t'aider: https://forum.cfx.re/t/nui-issue-with-hover-from-the-native-cursor/40863

silent raptor
#

Bonjour tout le monde je commence à apprendre le javascript pour faire des bots discord donc je suivais un tuto et tout et j'ai un soucis enfaite j'essaie de faire ma première commande et donc je créé un dossier commands et un fichier mute.js pour commencer, je le fais passer au terminal aucune erreur mais quand j'essaie d'exécuter la commande sur le serveur sa ne fonctionne pas si vous pouvez me dire d'où peut provenir l'erreur s'il vous plaît, mon bot a bien les permissions d'administrations. L'index: ```const { Client, Partials, Collection } = require('discord.js');
const { User, Message, GuildMember, ThreadMembers } = Partials;
const client = new Client({
intents: [3276799],
partials: [User, Message, GuildMember, ThreadMembers],
});

client.config = require('./config.json');
client.commands = new Collection();
client.subcommands = new Collection();
client.events = new Collection();
client.memberGuildConfig = new Collection();
client.messageGuildConfig = new Collection();

const { loadEvents } = require('./Handlers/eventHandler');

loadEvents(client);

const fs = require('fs');
const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));

for (const file of commandFiles) {
const command = require(./commands/${file});
client.commands.set(command.data.name, command);
}

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

const command = client.commands.get(interaction.commandName);

if (!command) return;

try {
    await command.execute(interaction);
} catch (error) {
    console.error(error);
    interaction.reply({ content: 'Une erreur s\'est produite lors de l\'exécution de cette commande.', ephemeral: true });
}

});

client.login(client.config.token);

#

Mute.js: ```module.exports = {
data: {
name: 'mute',
description: 'Met en sourdine un membre du serveur',
options: [
{
name: 'membre',
description: 'Membre à mettre en sourdine',
type: 'USER',
required: true,
},
],
},
async execute(interaction) {
const member = interaction.options.getMember('membre');

    if (!interaction.member.permissions.has('ADMINISTRATOR')) {
        return interaction.reply({ content: "Vous n'avez pas la permission d'utiliser cette commande.", ephemeral: true });
    }

    if (!member.manageable) {
        return interaction.reply({ content: "Je ne peux pas mettre en sourdine ce membre.", ephemeral: true });
    }

    await member.voice.setMute(true);

    return interaction.reply({ content: `Membre ${member.user.tag} a été mis en sourdine.`, ephemeral: true });
},

};```

left forum
silent raptor
#

Bah jsp dans le terminal c marqué aucun problème

#

Tu parles du console de débogage ?

left forum
#

Tu es sûr que ton code sert à mute channel et pas mute vocal ?

#

Car dans le cas d’un mute channel tu es censé attribué un rôle au membre en question

silent raptor
#

Ouais mais j'ai regardé sur internet et j'ai modifié pour mettre juste ceux qui ont les permissions Administratifs qui peuvent faire la commande au moin c plus simple

silent raptor
left forum
silent raptor
# left forum Envoie le code ou tu attribues un rôle à la personne en question oui
    data: {
        name: 'mute',
        description: 'Met en sourdine un membre du serveur',
        options: [
            {
                name: 'membre',
                description: 'Membre à mettre en sourdine',
                type: 'USER',
                required: true,
            },
            {
                name: 'temps',
                description: 'Durée de la mise en sourdine (en minutes)',
                type: 'INTEGER',
                required: false,
            },
            {
                name: 'raison',
                description: 'Raison de la mise en sourdine',
                type: 'STRING',
                required: false,
            },
        ],
    },
    async execute(interaction) {
        const member = interaction.options.getMember('membre');
        const duration = interaction.options.getInteger('temps') || null;
        const reason = interaction.options.getString('raison') || 'Aucune raison spécifiée';

        if (!interaction.member.permissions.has('MUTE_MEMBERS')) {
            return interaction.reply({ content: "Vous n'avez pas la permission d'utiliser cette commande.", ephemeral: true });
        }

        if (!member.manageable) {
            return interaction.reply({ content: "Je ne peux pas mettre en sourdine ce membre.", ephemeral: true });
        }

        await member.roles.add('1144357870138298390');

        if (duration !== null && duration > 0) {
            setTimeout(async () => {
                await member.roles.remove('1144357870138298390');
            }, duration * 60 * 1000); 
        }

        return interaction.reply({ content: `Membre ${member.user.tag} a été mis en sourdine. Raison : ${reason}`, ephemeral: true });
    },
};```
left forum
#

Et ça ne marchait pas ça ?

silent raptor
#

Non sa ne marche pas je viens de réessayer

#

Je vais essayer de faire une commande qui ne nécessite pas des permissions administratifs pour voir si sa marche si tu veux

left forum
#

Déjà ta vérification de permissions est mauvaise

#

C’est pas mute members mais manage members

silent raptor
#

Tu parles de cette ligne ?

#

if (!interaction.member.permissions.has('MUTE_MEMBERS')) {

left forum
#

Yep

silent raptor
#

if (!interaction.member.permissions.has('MANAGE_MEMBERS')) {

#

C bon ?

left forum
#

Essaye

#

Normalement ça devrait être bon sur les perm

silent raptor
#

Ah baah sa marche tjr pas

left forum
#

Mais t’as aucune erreur qui s’affiche dans la console ou tu as exécuté ton bot ?

silent raptor
#

Vraiment aucune erreur

#

Mais tu en es sûr que y'a pas d'erreur dans l'index je vois pas comment la commande marche avec / si c pas mentionné dans le code enfaite

#

Peut être que je vois mal hein

left forum
#

Tu as un handler de slash command au moins ?

silent raptor
#

Peut être que non xD

#

J'en ai pas

void coyote
#

Ça c’est discord.js v13

left forum
#

C’est très bien d’avoir voulu essayer seul mais pour un début j’te conseille vraiment de suivre un tuto pour comprendre

silent raptor
#

J'ai que un commandHandler et un eventHandler enfaite

void coyote
#

Ça c’est discord.js v14

silent raptor
#

Désolé pour le dérangement et merci pour votre aide

left forum
#

J’ai pas les noms sous la main mais si j’y retrouve je t’y envoie

cerulean spoke
#

Bonjour tt le monde

cerulean spoke
#

j'ai une question ... de quelle façon peut on rafraichier le dom sans rafraichir la page ? j'envoi une 'chaine' dans un input sur la page mais le DOM ne voit pas les données dedans pourtant elles sont bien affichées ...

dusk berry
cerulean spoke
#

tout le code non je vais pas pouvoir .. j'essaie d'isoler le probleme

dusk berry
#

👍

cerulean spoke
#

<html>

....
<div id="fichierSortie"></div>
<input type="text" id="stockage" />

.../...

<script>

...

appelDeLaFonction('entree' , 'sortie');

function appelDeLaFunction(idInputfile, idSortie) {

def des vars ...

là j'utilise fr = new FileReader (pour lire le contenu d'un CSV)
FR me retourne un résultat qui à l'air volatile (détruit à la sortie de l'appel à FileReader) stocké dans fr.result

ce fr.result j'arrive à l'utiliser dans :
document.getElementById(idSortie).value = fr.result;

il apparaît à l'écran, je le vois dans le champs texte ...
mais dans le debugger j'ai

<input id="stockage" type="text"> <-- aucune valeur dedans

}

#

j'ai essayé de créer l'input via un append .. mais ce ne change rien au DOM

dusk berry
#

hum idSortie est "sortie" et tu n'a pas d'élément HTML avec un id "sortie"
ce serais pas plutôt appelDeLaFonction('entree' , 'stockage');

cerulean spoke
#

oui autant pour moi ... l input c est stockage

#

mais je le vois bien dans le DOM l'input ... et à l'ecran la valeur du input change bien ... car ... j'affice une chaine dedans qui peut changer ... et elle change bien ... mais pas dans le dom

dusk berry
#

comment ça ?

cerulean spoke
#

dans cette page je fais importer des données à l'utilisateur en y allant par étape:

#
  • j'ai construit une liste des fichier qu'il peut modifier pour faire un import de masse via un csv
#

2 - Il choisit son fichier

#

3 - je fais une correspondance des intitulés (ceux de la base et ceux du fichier fourni par l utilisateur)

#

4 - j'affiche les donnée <-- je suis là

#

comme la lecture des données de l'utilisateur sont récupéré dans un input/file

#

j'utilise FR pour récupérer les infos que je transforme en JSON

#

et cette chaine JSON je la stock dans l'input/text

#

lorsque j'essaye de copier le contenur obtenu dans le fr.result (<-- result de la fonction FileReader) dans une variable globale ou autre ... impossible

#

je peux l'afficher dans un div, dans un input ... mais je peux pas dupliquer la valeur dans une variable ... je ne comprend pas pourquoi

#

la page est plutot tres complexe ... c est un div divisé en deux .. menu a gauche et iframe à droite ...

#

et ce code est dans l'iframe .. qui a mon avis fout le bordel dans le DOM

dusk berry
#

passe ta/tes fonction qui lis le fichier et qui affiche les données

cerulean spoke
#

la fonction :

#

function chargerFichier(idInputFile, idSortie) {
"use strict";
var entree, fichier, fr;

if (typeof window.FileReader !== "function") {
        alert("L’API file n’est pas encore supportée par votre navigateur.");
        return;
}

entree = document.getElementById(idInputFile);
if (!entree.files[0]) {
        alert("S’il vous plaît sélectionnez un fichier avant de cliquer sur «Chargement».");
} else {
    fichier = entree.files[0];
    fr = new FileReader();
    fr.readAsText(fichier);
    fr.onload = function () {
        document.getElementById(idSortie).value = csvJSON(fr.result);
           };
    fr.onerror = function () {
            console.log(fr.error);
    };
}

}

dusk berry
cerulean spoke
#

merci infiniment 🙂 je regarde ca ... je suis appelé sur un autre soucis 🙏

dusk berry
#

pas de problème

grave bronze
#

Bonjour j'essaie d'utiliser Sequelize grâce à leur documentation. Mais j'ai un problème quand j'exécute mon programme, rien ne s'affiche dans la console (voir capture d'écran). Auriez vous une solution ? Merci d'avance pour votre réponse.

grizzled lily
#

bonjour, je aurait besoin d'aide si possible pour adapter un code d'un bot sur un autre merci

queen ocean
queen ocean
grizzled lily
# queen ocean Il faut donner plus d'info si tu veux que les gens puissent t'aider 😉

merci, enfaite jai pris le code la

const Discord = require("discord.js");
const Gamedig = require("gamedig");

module.exports = {
  name: "status",
  description: "Permet d'envoyer les status du serveur.",

  async run(bot, message) {
    const ip = "Statut_Du_Serveur";
    const port = "Port_Du_Serveur";

    const embed = new Discord.MessageEmbed()
      .setColor("#272424")
      .setTitle(`[FR] Naria Roleplay | Exclusivité | Semi - Serious | soon`)
      .setDescription(`**steam://connect/142.124.214.543.321**`)
      .setTimestamp()
      .addFields(
        {
          name: "Map du Serveur 🗺️",
          value: "EvoCity V4B1",
          inline: true,
        }
      )
      .addFields(
        {
          name: "Adresse IP 📡",
          value: "",
          inline: true,
        }
      );

      message.channel.send({ embeds: [embed] });

    setInterval(() => {
      Gamedig.query({
        type: 'garrysmod',
        host: "",
        port: "27015",
      }).then((state) => {
        embed.spliceFields(2, 1, {
          name: `Joueurs connectés :busts_in_silhouette:`,
          value: `${state.players.length}/${state.maxplayers}`,
          inline: true,
        });

        sentMessage.edit({ embeds: [embed] });
      }).catch((error) => {
        const Embed = new Discord.MessageEmbed()
          .setColor("#272424")
          .setTitle(`Voici le statut du Serveur de Naria Roleplay !`)
          .setTimestamp()
          .addFields(
            {
              name: `:bar_chart: Statut du Serveur`,
              value: `🔴 Hors Ligne`,
              inline: true,
            }
          );

        message.channel.send({ embeds: [Embed] });
      });
    }, 3000); 
  },
};```
j'ai suivis cequi il dit bien plus haut mais j'ai toujour en embed qui spawn en boucle j'ai dit essayer de retire sa
#

pour metre sa mais sa marche pas

grave bronze
#

}();
^

SyntaxError: Unexpected token '('

queen ocean
#

J'ai lu trop vite ton code sue

#

A la ligne 1 :
(async () => {
A la ligne 15 :
})()

grave bronze
#

Merci

#

Plus d'erreur mais toujours rien dans la console

#

Bizarre...

grave bronze
#

C'est un code que tu as copié ?

grizzled lily
# grave bronze C'est un code que tu as copié ?

Moi le code oui il vien de tout en haut du salon mais j'en n'avais un autre mais c'est directement un dossier avec plusieur truc dedans mais je arrive pas a l'adapter a mon code de principale

grave bronze
#

Le problème c’est surtout que tu ne le comprends pas visiblement

#

Et évite de spammer les gens de mentions stp

#

C’est chiant à force

grizzled lily
#

d'accord

grave bronze
#

Je précise que le mot de passe est comme ça pour la capture d’écran

#

Le problème ne vient pas de là

#

Tu as une idée Zaros ?

floral bolt
grave bronze
#

Ok

#

Ca ne renvoie rien

floral bolt
#

ligne 17 c'est : })()

grave bronze
#

Ok

#

Merci ça marche

queen ocean
floral bolt
#

il est vrai

grizzled lily
#

Bonsoir, possible de l'aider
Code:

.setDescription(`**⚡ - Nom du serveur:**\n\`Radium RP | Exclusivité | Semi - Serious\`\n\n🗺️ - **Map:** \`rp_rockford_mk_v2\`\n\n**:person_red_hair: - Joueur(s)**: ${state.players.length}/${state.maxplayers}`)

Erreur:

C:\Users\Utilisateur\Desktop\Radium Bot\Commandes\status.js:16
      .setDescription(`**⚡ - Nom du serveur:**\n\`Radium RP | Exclusivité | Semi - Serious\`\n\n🗺️  - **Map:** \`rp_rockford_mk_v2\`\n\n**:person_red_hair: - Joueur(s)**: ${state.players.length}/${state.maxplayers}`)
                                                                                                         
ReferenceError: state is not defined
    at Object.run (C:\Users\Utilisateur\Desktop\Radium Bot\Commandes\status.js:16:174)
    at module.exports (C:\Users\Utilisateur\Desktop\Radium Bot\Events\interactionCreate.js:11:21)
    at Client.emit (node:events:513:28)
    at InteractionCreateAction.handle (C:\Users\Utilisateur\Desktop\Radium Bot\node_modules\discord.js\src\client\actions\InteractionCreate.js:97:12)
    at module.exports [as INTERACTION_CREATE] (C:\Users\Utilisateur\Desktop\Radium Bot\node_modules\discord.js\src\client\websocket\handlers\INTERACTION_CREATE.js:4:36)
    at WebSocketManager.handlePacket (C:\Users\Utilisateur\Desktop\Radium Bot\node_modules\discord.js\src\client\websocket\WebSocketManager.js:354:31)
    at WebSocketManager.<anonymous> (C:\Users\Utilisateur\Desktop\Radium Bot\node_modules\discord.js\src\client\websocket\WebSocketManager.js:238:12)
    at WebSocketManager.emit (C:\Users\Utilisateur\Desktop\Radium Bot\node_modules\@vladfrangu\async_event_emitter\dist\index.js:282:31)
    at WebSocketShard.<anonymous> (C:\Users\Utilisateur\Desktop\Radium Bot\node_modules\@discordjs\ws\dist\index.js:1103:51)
    at WebSocketShard.emit (C:\Users\Utilisateur\Desktop\Radium Bot\node_modules\@vladfrangu\async_event_emitter\dist\index.js:282:31)

Node.js v18.16.0```
grizzled lily
#

Oui d'accord mais comment je le definie...

tired steppe
grizzled lily
#

oui d'accord mais comment je le definie ??

tired steppe
#

tu as quelque chose pour récupérer le nombre de joueur sur le serveur en question ?

grizzled lily
#

bah sa c'est le code en entier mais il est pas a moi:

const Discord = require("discord.js");
const Gamedig = require("gamedig");

module.exports = {
  name: "status",
  description: "Permet d'envoyer les status du serveur.",

  async run(bot, message) {
    const ip = "141.94.98.193";
    const port = "27040";

    const embed1 = new Discord.EmbedBuilder()
      .setColor(bot.color)
      .setTitle("📊 | Status du serveur`")
      .setThumbnail("https://cdn.discordapp.com/emojis/1130878395685810177.webp?size=96&quality=lossless", ({dynamic: true}))
      .setDescription(`**⚡ - Nom du serveur:**\n\`Radium RP | Exclusivité | Semi - Serious\`\n\n🗺️ - **Map:** \`rp_rockford_mk_v2\`\n\n**:person_red_hair: - Joueur(s)**: ${state.players.length}/${state.maxplayers}`)
      .setTimestamp()
      .setFooter({ text: 'Radium | Bot', iconURL: 'https://cdn.discordapp.com/emojis/1130878395685810177.webp?size=96&quality=lossless'});
      message.channel.send({ embeds: [embed1] });   

    setInterval(() => {
      Gamedig.query({
        type: 'garrysmod',
        host: "141.94.98.193",
        port: "27040",
      }).then((state) => {
        embed.spliceFields(2, 1, {
          name: `Joueurs connectés :busts_in_silhouette:`,
          value: `${state.players.length}/${state.maxplayers}`,
          inline: true,
        });

        sentMessage.edit({ embeds: [embed] });
      }).catch((error) => {
        const embed2 = new Discord.EmbedBuilder()
          .setColor(bot.color)
          .setTitle(`Voici le statut du Serveur de Naria Roleplay !`)
          .setTimestamp()
          .addFields(
            {
              name: `:bar_chart: Statut du Serveur`,
              value: `🔴 Hors Ligne`,
              inline: true,
            }
          );
          message.channel.send({ embeds: [embed2] });
      });
    }, 3000); 
  },
};```
tired steppe
#

tu utilises ça là

#

alors que c'est def là

#

soit tu enlèves les joueurs là ou tu voulais les mettres et tu laisses se faire l'embed

#

soit tu déplace ton .setdescription à la place du spliceFields

grizzled lily
#

oui mais c'est pas mon code je essayer de l'adapter pour que sa ressemble a sa:

tired steppe
#

c'est la première fois que tu fais un bot ?

grizzled lily
tired steppe
#

déplace ton .setDescription à la place de SpliceFields

tired steppe
#

bref tu utilises une variable qui est pas définie

grizzled lily
#

donc ducoup je sup le .setdescription et je le mais a la place sir embed.splicefields

tired steppe
#

faut que tu utilises la variable là où c'est déf c'est tout

#

bah tu mets embed.setDescription(....

grizzled lily
#

donc comme sa

tired steppe
#

comme ce que tu as mis avant

#

oui

#

comme ça

grizzled lily
#

d'accord

tired steppe
#

ça fonctionne ??

grizzled lily
#

mais du-coup maintenant sa affiche juste sa

tired steppe
#

sauf que ton embed il s'appelle pas embed

grizzled lily
#

non embed1

tired steppe
#

bah met embed1

grizzled lily
tired steppe
#

et pareil dans le truc d'edit

grizzled lily
#

comme sa

tired steppe
#

avant ton .setDesc aussi dcp

#

et du coup pas celui du catch

#

faut pas qu'il ait le meme nom

grizzled lily
#
const Discord = require("discord.js");
const Gamedig = require("gamedig");

module.exports = {
  name: "status",
  description: "Permet d'envoyer les status du serveur.",

  async run(bot, message) {
    const ip = "141.94.98.193";
    const port = "27040";

    const embed1 = new Discord.EmbedBuilder()
      .setColor(bot.color)
      .setTitle("`📊 | Status du serveur`")
      .setThumbnail("https://cdn.discordapp.com/emojis/1130878395685810177.webp?size=96&quality=lossless", ({dynamic: true}))
      .setTimestamp()
      .setFooter({ text: 'Radium | Bot', iconURL: 'https://cdn.discordapp.com/emojis/1130878395685810177.webp?size=96&quality=lossless'});
      message.channel.send({ embeds: [embed1] });   

    setInterval(() => {
      Gamedig.query({
        type: 'garrysmod',
        host: "141.94.98.193",
        port: "27040",
      }).then((state) => {
        embed1.setDescription(`**⚡ - Nom du serveur:**\n\`Radium RP | Exclusivité | Semi - Serious\`\n\n🗺️ - **Map:** \`rp_rockford_mk_v2\`\n\n**:person_red_hair: - Joueur(s)**: ${state.players.length}/${state.maxplayers}`)

        sentMessage.edit({ embeds: [embed1] });
      }).catch((error) => {
        const embed2 = new Discord.EmbedBuilder()
          .setColor(bot.color)
          .setTitle(`Voici le statut du Serveur de radium rp !`)
          .setTimestamp()
          .addFields(
            {
              name: `:bar_chart: Statut du Serveur`,
              value: `🔴 Hors Ligne`,
              inline: true,
            }
          );
          message.channel.send({ embeds: [embed2] });
      });
    }, 3000); 
  },
};```
comme sa
tired steppe
#

ouais essaye ça

#

ça va pas fonctionner

grizzled lily
#

non sa fonctione pas

#

mais en meme temp sa m'affiche sa

tired steppe
#

ça tu mets devant let sentMessage =

#

il est on ton serv ?

grizzled lily
#

pas comme sa

tired steppe
#

non du tout

grizzled lily
tired steppe
#

fallait laisser comme c'était

grizzled lily
#

d'accord mais donc ducoup je les ou alors ?

tired steppe
#

tu prends la ligne ou tu as ça avant le setInterval

tired steppe
grizzled lily
#

comme sa ??

tired steppe
#

non tu es pas au bon endroit

#

faut laisser le edit là

grizzled lily
#

d'accord

tired steppe
#

envoie ton code je vais le faire

grizzled lily
#

comme tu veux

#
const Discord = require("discord.js");
const Gamedig = require("gamedig");

module.exports = {
  name: "status",
  description: "Permet d'envoyer les status du serveur.",

  async run(bot, message) {
    const ip = "141.94.98.193";
    const port = "27040";

    const embed1 = new Discord.EmbedBuilder()
      .setColor(bot.color)
      .setTitle("`📊 | Status du serveur`")
      .setThumbnail("https://cdn.discordapp.com/emojis/1130878395685810177.webp?size=96&quality=lossless", ({dynamic: true}))
      .setTimestamp()
      .setFooter({ text: 'Radium | Bot', iconURL: 'https://cdn.discordapp.com/emojis/1130878395685810177.webp?size=96&quality=lossless'});
      message.channel.send({ embeds: [embed1] });   

    setInterval(() => {
      Gamedig.query({
        type: 'garrysmod',
        host: "141.94.98.193",
        port: "27040",
      }).then((state) => {
        embed1.setDescription(`**⚡ - Nom du serveur:**\n\`Radium RP | Exclusivité | Semi - Serious\`\n\n🗺️ - **Map:** \`rp_rockford_mk_v2\`\n\n**:person_red_hair: - Joueur(s)**: ${state.players.length}/${state.maxplayers}`)

        message.channel.send({ embeds: [embed1] });  
        sentMessage.edit({ embeds: [embed1] });
      }).catch((error) => {
        const embed2 = new Discord.EmbedBuilder()
          .setColor(bot.color)
          .setTitle(`Voici le statut du Serveur de radium rp !`)
          .setTimestamp()
          .addFields(
            {
              name: `:bar_chart: Statut du Serveur`,
              value: `🔴 Hors Ligne`,
              inline: true,
            }
          );
          message.channel.send({ embeds: [embed2] });
      });
    }, 3000); 
  },
};```
tired steppe
#
const Discord = require("discord.js");
const Gamedig = require("gamedig");

module.exports = {
  name: "status",
  description: "Permet d'envoyer les status du serveur.",

  async run(bot, message) {
    const ip = "141.94.98.193";
    const port = "27040";

    const embed1 = new Discord.EmbedBuilder()
      .setColor(bot.color)
      .setTitle("`📊 | Status du serveur`")
      .setThumbnail("https://cdn.discordapp.com/emojis/1130878395685810177.webp?size=96&quality=lossless", ({dynamic: true}))
      .setTimestamp()
      .setDescription(`**⚡ - Nom du serveur:**\n\`Radium RP | Exclusivité | Semi - Serious\`\n\n🗺️ - **Map:** \`rp_rockford_mk_v2\`\n\n**:person_red_hair: - Joueur(s)**: -/-`)
      .setFooter({ text: 'Radium | Bot', iconURL: 'https://cdn.discordapp.com/emojis/1130878395685810177.webp?size=96&quality=lossless'});
      let sentMessage = message.channel.send({ embeds: [embed1] });   

    setInterval(() => {
      Gamedig.query({
        type: 'garrysmod',
        host: "141.94.98.193",
        port: "27040",
      }).then((state) => {
        embed1.setDescription(`**⚡ - Nom du serveur:**\n\`Radium RP | Exclusivité | Semi - Serious\`\n\n🗺️ - **Map:** \`rp_rockford_mk_v2\`\n\n**:person_red_hair: - Joueur(s)**: ${state.players.length}/${state.maxplayers}`)

        sentMessage.edit({ embeds: [embed1] });
      }).catch((error) => {
        const embed2 = new Discord.EmbedBuilder()
          .setColor(bot.color)
          .setTitle(`Voici le statut du Serveur de radium rp !`)
          .setTimestamp()
          .addFields(
            {
              name: `:bar_chart: Statut du Serveur`,
              value: `🔴 Hors Ligne`,
              inline: true,
            }
          );
          sentMessage.edit({ embeds: [embed2] });
      });
    }, 3000); 
  },
};
#

test ça

grizzled lily
#
C:\Users\Utilisateur\Desktop\Radium Bot\Commandes\status.js:42
          sentMessage.edit({ embeds: [embed2] });
                      ^

TypeError: sentMessage.edit is not a function
    at C:\Users\Utilisateur\Desktop\Radium Bot\Commandes\status.js:42:23```
tired steppe
#

quelle version de djs ?

grizzled lily
#

v14

tired steppe
#

ça se met à jour 1 fois ou meme pas

grizzled lily
#

oui

floral bolt
#
const Discord = require("discord.js");
const Gamedig = require("gamedig");

module.exports = {
    name: "status",
    description: "Permet d'envoyer les status du serveur.",

    async run(bot, message) {
        const ip = "141.94.98.193";
        const port = "27040";

        const embedServeur = new Discord.EmbedBuilder()


        setInterval(() => {
            Gamedig.query({
                type: 'garrysmod',
                host: "141.94.98.193",
                port: "27040",
            }).then((state) => {
                embedServeur.setColor(bot.color)
                embedServeur.setTitle("`📊 | Status du serveur`")
                embedServeur.setThumbnail("https://cdn.discordapp.com/emojis/1130878395685810177.webp?size=96&quality=lossless", ({dynamic: true}))
                embedServeur.setTimestamp()
                embedServeur.setFooter({
                    text: 'Radium | Bot',
                    iconURL: 'https://cdn.discordapp.com/emojis/1130878395685810177.webp?size=96&quality=lossless'
                });
                embedServeur.setDescription(`**⚡ - Nom du serveur:**\n\`Radium RP | Exclusivité | Semi - Serious\`\n\n🗺️ - **Map:** \`rp_rockford_mk_v2\`\n\n**:person_red_hair: - Joueur(s)**: ${state.players.length}/${state.maxplayers}`)


                sentMessage.edit({embeds: [embed1]});
            }).catch((error) => {
                embedServeur.setColor(bot.color)
                embedServeur.setTitle(`Voici le statut du Serveur de radium rp !`)
                embedServeur.setTimestamp()
                embedServeur.addFields(
                    {
                        name: `:bar_chart: Statut du Serveur`,
                        value: `🔴 Hors Ligne`,
                        inline: true,
                    }
                );
                message.channel.send({embeds: [embed2]});
            });
        }, 3000);
        const sentMessage = message.channel.send({embeds: [embed1]});

    },
};
grizzled lily
#

sa se mais 1 seule fois

tired steppe
grizzled lily
#

donc je prend son code a lieu ?

tired steppe
#

ouais essaye

#

ça va pas fonctionner

#

notamment car il envoie embed 1 et embed 2

grizzled lily
#

oui sa fonctione pas

tired steppe
#

envoie embedServeur au lieu de embed1 et embed2

grizzled lily
#

qui ? moi ?

floral bolt
#

oui j'ai oublier

tired steppe
floral bolt
#
const Discord = require("discord.js");
const Gamedig = require("gamedig");

module.exports = {
    name: "status",
    description: "Permet d'envoyer les status du serveur.",

    async run(bot, message) {
        const ip = "141.94.98.193";
        const port = "27040";

        const embedServeur = new Discord.EmbedBuilder()


        setInterval(() => {
            Gamedig.query({
                type: 'garrysmod',
                host: "141.94.98.193",
                port: "27040",
            }).then((state) => {
                embedServeur.setColor(bot.color)
                embedServeur.setTitle("`📊 | Status du serveur`")
                embedServeur.setThumbnail("https://cdn.discordapp.com/emojis/1130878395685810177.webp?size=96&quality=lossless", ({dynamic: true}))
                embedServeur.setTimestamp()
                embedServeur.setFooter({
                    text: 'Radium | Bot',
                    iconURL: 'https://cdn.discordapp.com/emojis/1130878395685810177.webp?size=96&quality=lossless'
                });
                embedServeur.setDescription(`**⚡ - Nom du serveur:**\n\`Radium RP | Exclusivité | Semi - Serious\`\n\n🗺️ - **Map:** \`rp_rockford_mk_v2\`\n\n**:person_red_hair: - Joueur(s)**: ${state.players.length}/${state.maxplayers}`)


                sentMessage.edit({embeds: [embedServeur]});
            }).catch((error) => {
                embedServeur.setColor(bot.color)
                embedServeur.setTitle(`Voici le statut du Serveur de radium rp !`)
                embedServeur.setTimestamp()
                embedServeur.addFields(
                    {
                        name: `:bar_chart: Statut du Serveur`,
                        value: `🔴 Hors Ligne`,
                        inline: true,
                    }
                );
                sentMessage.edit({embeds: [embedServeur]});
            });
        }, 3000);
        const sentMessage = message.channel.send({embeds: [embedServeur]});

    },
};```
tired steppe
#

Tu pourras maj le nom du serv aussi

grizzled lily
#
C:\Users\Utilisateur\Desktop\Radium Bot\node_modules\@discordjs\rest\dist\index.js:640
      throw new DiscordAPIError(data, "code" in data ? data.code : data.error, status, method, url, requestData);
            ^

DiscordAPIError[50035]: Invalid Form Body
embeds[0][LIST_ITEM_VALUE_REQUIRED]: List item values of ModelType are required
    at handleErrors (C:\Users\Utilisateur\Desktop\Radium Bot\node_modules\@discordjs\rest\dist\index.js:640:13)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async SequentialHandler.runRequest (C:\Users\Utilisateur\Desktop\Radium Bot\node_modules\@discordjs\rest\dist\index.js:1021:23)
    at async SequentialHandler.queueRequest (C:\Users\Utilisateur\Desktop\Radium Bot\node_modules\@discordjs\rest\dist\index.js:862:14)
    at async REST.request (C:\Users\Utilisateur\Desktop\Radium Bot\node_modules\@discordjs\rest\dist\index.js:1387:22)
    at async TextChannel.send (C:\Users\Utilisateur\Desktop\Radium Bot\node_modules\discord.js\src\structures\interfaces\TextBasedChannel.js:162:15) {
  requestBody: {
    files: [],
    json: {
      content: undefined,
      tts: false,
      nonce: undefined,
      embeds: [ {} ],
      components: undefined,
      username: undefined,
      avatar_url: undefined,
      allowed_mentions: undefined,
      flags: undefined,
      message_reference: undefined,
      attachments: undefined,
      sticker_ids: undefined,
      thread_name: undefined
    }
  },
  rawError: {
    message: 'Invalid Form Body',
    code: 50035,
    errors: {
      embeds: { '0': { _errors: [ [Object] ] } }
    }
  },
  code: 50035,
  status: 400,
  method: 'POST',
  url: 'https://discord.com/api/v10/channels/1053035169990320228/messages'
}

Node.js v18.16.0```
grizzled lily
floral bolt
#


const Discord = require("discord.js");
const Gamedig = require("gamedig");

module.exports = {
    name: "status",
    description: "Permet d'envoyer les status du serveur.",

    async run(bot, message) {
        const ip = "141.94.98.193";
        const port = "27040";
        let sentMessage= message.channel.send("En cours de chargement...")

        const sendOnlineEmbed = (state) => {
            const embedServeur = new Discord.EmbedBuilder()
                .setColor(bot.color)
                .setTitle("`📊 | Status du serveur`")
                .setThumbnail("https://cdn.discordapp.com/emojis/1130878395685810177.webp?size=96&quality=lossless", ({dynamic: true}))
                .setTimestamp()
                .setFooter({
                    text: 'Radium | Bot',
                    iconURL: 'https://cdn.discordapp.com/emojis/1130878395685810177.webp?size=96&quality=lossless'
                })
                .setDescription(`**⚡ - Nom du serveur:**\n\`Radium RP | Exclusivité | Semi - Serious\`\n\n🗺️ - **Map:** \`rp_rockford_mk_v2\`\n\n**:person_red_hair: - Joueur(s)**: ${state.players.length}/${state.maxplayers}`)

            sentMessage.edit({embeds: [embedServeur]});
        }

        const sendOfflineEmbed = () => {
            const embedServeur = new Discord.EmbedBuilder()
                .setColor(bot.color)
                .setTitle(`Voici le statut du Serveur de radium rp !`)
                .setTimestamp()
                .addFields(
                    {
                        name: `:bar_chart: Statut du Serveur`,
                        value: `🔴 Hors Ligne`,
                        inline: true,
                    }
                );
            sentMessage.edit({embeds: [embedServeur]});
        }


        setInterval(() => {
            Gamedig.query({
                type: 'garrysmod',
                host: "141.94.98.193",
                port: "27040",
            }).then((state) => {
                sendOnlineEmbed(state)
            }).catch((error) => {
                sendOfflineEmbed()
            });
        }, 3000);
    },
};```
grizzled lily
floral bolt
#

j'ai edit le code ...

#

désolé j'essaye de faire ca vite 😉

grizzled lily
#

ne tinquete deja c'est ULTRA sympa que tu m'aid

#

m'aide

tired steppe
#

C'est pas facile de se mettre dans le code de qqun dautre

floral bolt
#

bah la c'est pas compliqué c'est juste que je fait pas gaffe

grizzled lily
#

pas

tired steppe
floral bolt
#

essaye d'ajouter await devant message.channel.send("En cours de chargement...")

grizzled lily
#

c'est sa marche bg mais pass possible une fois mis sa enleve en cours de chargement

floral bolt
#

modifie les ligne de sentmessage par : sentMessage.edit({content: null, embeds: [embedServeur]});

grizzled lily
#

est dit dernier êtit questio, parce que c'est ultra simpa que tu ma aide comment je peux m'aitre les jouer comme en noir comme sur les autre truc

floral bolt
#

la c'est clairement pas compliqué je pense que tu peux le faire tout seul

grizzled lily
#

oui j'ai essayer comme sa

#

j'ai modif le truc

#

oui j'ai essayer comme sa

.setDescription("**⚡ - Nom du serveur:**\n\`Radium RP | Exclusivité | Semi - Serious\`\n\n🗺️ - **Map:** \`rp_rockford_mk_v2\`\n\n**:person_red_hair: - Joueur(s)**:" `${state.players.length}/${state.maxplayers}`)```
grizzled lily
#

dit vous savre comment je pex ajouter des espace entre les 2

#

sa marche pas

#
.setDescription(`**⚡ - Nom du serveur:**\n\`Radium RP | Exclusivité | Semi - Serious\`\n\n🗺️ - **Map:** \`rp_rockford_mk_v2\` **:person_red_hair: - Joueur(s)**: ${state.players.length}/${state.maxplayers}`)```
proper loom
floral bolt
#

Bon allez je suis sympa : .setDescription(`**⚡ - Nom du serveur:**\n\`Radium RP | Exclusivité | Semi - Serious\`\n\n🗺️ - **Map:** \`rp_rockford_mk_v2\` \n\n**:person_red_hair: - Joueur(s)**: \` ${state.players.length}/${state.maxplayers}\``)

sharp star
#

Bonjour 👋, j ai un amis qui développe une application en react native et qui utilise du java script. Il créer une messagerie similaire a discord ou insta, mais il galère. Quelq'un saurais l'aider un peu? J demande pas de lui faire le taff, mais juste le conseiller et lui dire ce qui va pas. Ce serait vraiment sympa 🙏( svp supprimer pas le message, j suis pas un bot 🙃)

sterile lark
#

Salut j'ai un soucis avec mongodb qui est pas tant un soucis que sa mais mon problème c'est que pour envoyer les messages avec socket.io j'utilise le système de room et j'ai donc fait en sorte que quand deux personnes s'ajoute sa créer un id unique qui est contenue dans un tableau rooms chez les deux utilisateurs

#

et j'aimerais savoir comment faire une requête à mongodb juste pour avoir ce tableau et pas toute les informations j'ai essayer la méthode populate mais comme c'est pas un object id sa marche pas

sharp star
#

@primal portal tu saurais aider ?

modern skiff
#

Hey, ca fait quelques temps que j'ai commencé react et je rencontre un problème sur lequel je ne m'étais jamais penché... C'est à propos de comment heberger un projet react et à quoi sert de build son app react, et comment ca marche etc... Si quelqu'un pourrait m'éclairer sa serait gentil merci 🙂

dusk berry
modern skiff
dusk berry
#
  • Oui normalement
  • Je ne sais pas
  • Normalement oui si tu ouvres le HTML ça fonctionne