#javascript-typescript
1 messages · Page 23 of 1
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
Tu peux passé des fonctions en props si jamais
j'ai essayé, avec les interfaces etc mais a mon avis je suis pas encore assez doué
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} />
)
}
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 ?
bah du coup dans ton parent check juste que la value existe
et dans ton composant tu émit uniquement si la value est bonne
tu peux développer ou pas ? stp
si elle est pas bonne tu reset comme ça ton parent ne l’a pas
et ton composant lui affiche l’erreur
et comment j'exporte ma value ?
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
dans ton cas <DateInput onChange={maFonction}/>
export const DateInput: React.FC = ({onChange}) => {
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
je peux console log onchange dans le parent, pour savoir si c'est 'connecté'
et l'interface je la crée ou ?
ç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
vs code me dit
Property 'onChange' does not exist on type '{}'.ts(2339)
(parameter) onChange: any
oh ok
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....
</>
);
};
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
mais du coup : <DateInput onChange={maFonction}/>
ma fonction vaut quoi ?
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
<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"
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
donc dans mon interface je dis que onChange c'est une string ?
que dans onChange le paramètre que tu reçois c’est une string
comme ça :
interface Props {
onChange: (e: ChangeEvent<HTMLInputElement>) => string;
}```
Enfaite dans le handledatechange console log « e »
non la tu dis que tu return une string
Parceque je pense que tu renvois directement la value
je suis désolé mais je commence à être perdu :(
Oui il renvois directement e.target.value
c moi qui suit désolé
je suis sur tel trop galère on peut check après
je dois bien crée une interface ? si oui laquelle ?
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 »
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"
je viens de comprendre mon erreur, merci à toi
Du coup ton dernier message c’est bon ?
non non
j'ai toujours le souligne en rouge quand j'appelle la fonction onChange du composant
Le handledatechange met juste « e »
setBirthDate(e)
En vrai je reviens dans 45 minutes je pourrais mieux t’aider
pas de soucis
Ça fait quoi si tu console log « e » ?
quand j'écris dans mon input
MM / DD / YYYY3
ah merci
autant pour moi
je crois c'est un truc tout bete ça
mais sinon plus d'erreur
Perso j’ai jamais joué avec les dates donc je pourrais pas t’aider là dessus 🙂
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
renvois ton code 😉
d'accord, je fais ça
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...
</>
);
};
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
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 :
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
tu as une idée ? @slim anvil
sois ici tu recheck que ta date soit au bon format, sois tu le fais dans ton composant
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
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
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
personne pour voc, ça irait plus vite je pense
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
je pense avoir réussi, merci quand même
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
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 😅
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
A flexible and beautiful Select Input control for ReactJS with multiselect, autocomplete and ajax support.
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
j'ai un client exigeant ...
pas tant que ça je trouve, sinon il voudrait le systeme le plus simple pour un datepicker mais bon
svp
Qu'apport le V14 de discord.js par apport à la v13 svp ?
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
quelqun svp
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.
T'a musique vient d'où ?
Lien YouTube ou titre YouTube. En gros elle vient de YouTube
C'est possible que le soucis vienne du côté de YouTube
Je crois juste que c'est normal

ça marche pareil sur discord classique genre sans bot si tu streams du son ça te coupe la diffusion
J'ai tester plusieurs musique et rien ne change
Je parle de la plateforme
Ils en ont eu marre de porter plainte contre les bots de musique 
Il a un autre bot de musique qui fonctionne
Ouais mais si faut lui il fonctionne car il paye les services de YouTube
Ah, comment je pourrais réglé le problème ?
Payé
quelqun peu m'aider pour ça svp
Il a pas une autre façon ?
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
faut simplement mettre tes states + haut dans le component tree mdr
Tu peux utiliser le hook useContext
mais sinon tes step tu les geres sur la meme page
je vais me renseigner sur les context
svp
L'erreur est flagrante
@empty mauve As tu bien compris ce que fait ce bout de code ?
pas vraiment (mais ya un truc déja que j'ais fait c que je suis en train de suivre la playlist que tu m'a donné et c super bien expliqué en vrais ducoup je fait des fichier HTML comme lui et je prend des notes)
ah
mais je suis que a la vidéo 2 donc...
@cyan iron tu va pouvoir dev ton programme qui allume une led quand ont te ping en TS : https://microsoft.github.io/devicescript/
TypeScript for Tiny IoT Devices
mdr
carrément tu va faire ça
Nan
y a un CLI
et tu l'installe définitivement sur ton rpi à la fin du dev mdr
ah rip mdrr
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
(il me manque plus que ce truc pour finir mon projet) 😅
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
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
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
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 ^^
ca n'existe pas
Donc je ne peux pas recup les derniers articles qui sont ajoutés ?
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
tu veux un datepicker sur un bot discord, ou sur une page web?
sur un bot
car j'avais regarder mais ya aucun module connu...
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
donc je voulais savoir si le seul moyen etait d'en faire un sois meme
mais bon tu vas etre limité par le nb. d'options
effectivement...
ok ok thx
peut-être d'autres auront de meilleurs idées il est un peu tard là
Il est pas tard au QC :KaPOP:
oui pareil mais pour les autres 
pov : les mois avec max 25 jours
Faut que tu fasse une boucle qui récupère les derniers articles publiés pour une recherche donnée et que tu compare quelle est le dernier :)
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
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 👀
Jsp mais leur api est aux yeux de tout le monde
Logique, t'as pas besoin d'être connecté pour l'utiliser par l'intermédiaire de leur site
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
Même pour du privé ?
à voir ce qu'ils disent dans leurs ToS
Je vais voir ça, sinon merci ^^
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 ?
Prisma c’est insane
Trop jeune pour un vrai projet
C’est la v5 hein
Prisma trop jeune ? Bon
Le nbr de version ne veut rien dire 🤫
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
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
Absolument pas d’accord avec toi
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
Tu confonds tout
Non non
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
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.
ç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
tu peux aussi scale grace a docker & https://nodejs.org/api/cluster.html si il a besoin (si je ne me trompe pas).
https://www.digitalocean.com/community/tutorials/how-to-scale-node-js-applications-with-clustering
Oui bien sur pour Docker, peu importe la techno il faut pouvoir scale
Cluster pour des tâches oui, à la limite
ç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
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
A la place de 'GUILD_CATEGORY' mets 4 (J'ai trouvé la réponse ici)
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"/>
salut!
le problème c'est qu'actuellement ce n'est pas un circle que tu as mais une path
donc le recalculer bon courage
Il faudrait revoir ton SVG de base pour essayer d'avoir un circle avec un mask a l'intérieur
Sinon en HTML/CSS ce serait pas possible de ton côté ? Ce serait plus simple à manipuler
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)
Salut ! Merci pour ta réponse ! En html/css galère un peu car ce n'est pas le seum demi-circle que j'ai (j'ai plusieurs autres éléments en svg autours etc) donc ce serait une galère pas possible ^^
Et même si je met un mask, mon svg se transorme en path... et ne reste pas en circle 😢
La par exemple, j'ai mis un mask d'un autre cercle à l'intérieur, mais le rond s'est mit en path ^^
hey est ce que quelqun purait m'aider svp
je pense que sa vient du module firebaseui
Docker
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..
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>
Bonour quelqu'un sait à quoi est du cette erreur ?

J’veux pas faire mon relou, mais vscode te dit quand même "t’aurais pas oublié de mettre ta fonction en asynchrone?"
C’est juste de la flemme à ce stade 
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
hello https://www.w3schools.com/tags/av_met_play.asp tu as tout ce qu'il te faut ici 👌
salut merci pour ton aide mais je pense que tu as mal compris mon problème n'es pas le fait de mettre la video avec les controles car en html il y es. Ce que je souhaite c'est que mon image disparaisse au moment du clic que le logo play et que dans mon html la vidéo prend la place de l'image et se lance.
je pense qu'au contraire c'est extrêmement proche de ce que tu recherches
d'accord merci je vais me penché vers cette fonctionnalité merc à vous 2 🙂
bon courage à toi c'est pas si compliqué je pense 👌
merci beaucoup ^^ si jamais j'ai besoin je reviendrais vers vous
pas de problème n'hésite pas
du coup j'ai réaliser ceci dit moi si il y a des choses qui vont pas 😉
Salut !
Est ce que vous pourriez m'aidez. Je cherche a automatiser le clique sur un bouton avec une class.
explique exactement
En gros je voudrais automatiser le click sur un bouton avec un script javascript
Je voudrais automatiser le clique de ce bouton
ç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
Toutes les X secondes
Je veux un script que je puisse soit lancer dans un terminal, ou alors dans le F12
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
c'est ou ?
suffit de faire un setInterval dans la console xd
Sur Bumble
https://pptr.dev/ tu as toute la doc aussi, ça te permet de controller une instance chrome via ton navigateur
Build status
et donc de créer des actions client via le serveur
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
?
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
Je l'avais fait pour tinder perso
<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
T'as fais comment ? Juste avec un setInterval ?
Yep
Mias pour le setIterval il te faut un argument a mettre dedans ?
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 ..
Sur cette div je peux ? Je vois pas comment enfaite
tu select pas bien la div j'imagine
J'ai essayer avec une class, le role, la data-qa-role mais sa marche pas
Le F12 me répond "undefined"
Pour selectionner la div tu ferais comment ?
document.querySelectors(".encounters-action .tooltip-activator .encounters-action--like")[0]
Il me répond qu'il ne trouve pas la div
Le "s" c'est une faute de frappe ou c'est normale ? parce que il me répond "is not a function"
j'ai oublié le nom exact
querySelectorAll
Il trouve pas non plus ...
je sais pas alors
Sur tinder tu avais fais comme sa ?
Il me donne rien l'inspecteur
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
non mais génial, mais j'ai dit je sais pas ça sert à rien de me ping
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
Est-ce que ça serait pas comme sur vscode, y’aurait pas une whitelist ?
Umh ... franchement je ne sais pas du tout
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);
}
});
});
};
Oui mais python est peut-être un programme "reconnu"
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)
Ex avec vscode: tu peux utiliser les commandes npm, node, mais pas tsc, vue, etc
Yep
Faut add à la whitelist de vscode
Peut-être qu’il y a la même protection sur childprocess
Uhm ... et je n'ai pas moyen de choisir le shell dans lequel j'exec avec ChildProcess ?
Je fais les tests
Ça fonctionne 🥳
Merci 🙏
C'est beau ce qu'on peut faire en alliant Python et ElectronJS
(Normalement on entre une Email, mais je l'ai mis en dure dans le code pour tester)
ç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
ah c'est cool ça faudrait que j'vois avec Rust ce qui serait possible de faire avec JS
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);
}
});
});
};
Aha 🤣
parce que là c'est éthique à ton niveau mais l'utilisation derrière ne l'est pas x)
Malheureusement, sa je ne peux pas le gérer :/
Il y a toujours des détraqués quoi que tu fasse
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
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
l'erreur saute aux yeux là
c'est comme si sur minecraft tu pouvais faire une commande avec un espace
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"
Ton tuto doit être périmé..
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:
- Source Code: https://github.com/Kajgit/v14_tutorial
- Our Discord: https://discord.gg/nyBw3vrMnM
- Node.js: https://bit.ly/3AsxH5U
- Visua...
merci
après vérification le tuto date d’avant hier donc ça vient sûrement de moi
je recommande aussi
Je n'ai pas regardé la vidéo mais en v14 ça n'est pas comme ça qu'on importe les intents mais plutôt comme dans le guide :
https://discordjs.guide/creating-your-bot/main-file.html#running-your-application
Les deux sont valables, il fait juste une décomposition des classes avant mais sinon en sois c'est équivalent
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 !
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
Hein
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
J'y connais rien mais c'est pas sensé être juste le nombre ?
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
moi je lis que le role n'est pas une boule de neige
^_^
...
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
bah pk ça ma crée ça comme ça dans ma BDD?
parce que tu l'enregistres comme ça
ah donc au lieu de mentioner le role dans ma commande de setup je doit coller l'id
?
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
ok en gros dans me BDD j'enlève juste <,@,& et >
tu enregistres uniquement l'id oui
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
oui tu peux
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
faut je je crée les truc un part un?
ou ya un moyen plus rapide
Ça dépend de ton écran :)

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 ! )
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
est ce que tu connaîtrais une lib qui aurait un fonctionnement similaire ?
Oui y'a https://www.npmjs.com/package/steam-server-query par exemple
je vais essayer ça alors, je vous remercie ^^
Np, dis moi si ça fonctionne 😉
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
avec le code c'est mieux
oe le screen il c'est effacer je suis partie en refaire un
mon index
mon loadcomands
l'erreur vient du loadcommands alors
après y'a une personne qui m'a dit que sa peut venir des commandes que j'ai fait dans le dossier command
console.log(fileCommande.data.name) et montre le résultat
je met sa ou ?
en dessous de fileCommande
tjr la même erreur
envoie l'erreur
t'as pas un undefined qui a pop dans ta console ?
Pour moi c'est le require(...) qui te pose problème
je vais envoyez l'erreur
tu as vérifié si ton chemin d'accès était bon ?
quand tu fais ../ tu as pas une auto complétion ?
oe c'était bon
attend pourquoi tu définis deux fois ton chemin vers commands ?
c'est normal ../Commands/Commands ?
jsp j'ai juste suivie un tuto moi persos
vérifie si tu as tout bien fait comme le mec
car c'est bizarre
azy je retourne vérifie
att mais ta vue sa ou enfaite moi je le voie pas ?
ligne 8 à 17
Oe j’ai fait pareil que lui. Juste moi j’ai mis fichier et dossier en anglais
La j’ai mis en français et y’a tjr l’erreur
envoie ton code en copier coller formater
Azy
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 };
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 };
y'a sa aussi qui est apparu
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
Azy
l'erreur rouge est partir mtn y'a sa
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
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 };
je suis dsl de te faire perdre du temps
si tu me faisais perdre mon temps je serais pas en train de t'aider
Le serveur est là pour ça
👉 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...
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
Ok ok mais ducoup si je suis ce tuto je dois changer mon index.Js aussi ?
possiblement
Ok ok je vais allez voir si sava marcher merci de ton aide
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
j’ai oublié de te répondre, mais ça fonctionne clairement mieux que gamedig, merci!
j’ai pas mis le nez dans des handlers depuis longtemps, inverse la ligne 13 et 14 et ça devrait être bon
Oe c’est bon j’ai réussi mais j’ai une autre galère
Azy att
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)
non je veux juste faire un handlers des loadslashcommands
mais wesh
et j'ai refuser les messages en D²M
tiaaa enfin
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 🙂
salut savez vous comment récupérer l'id du message d'un thread
genre l'id de ce message
const thread = channel.threads.cache.find(x => x.name === 'food-talk');
await thread.delete();
sur chaque msg tu as une propriété thread
aç vient de la doc
Okay merci mais j'ai trouver ca qui fonctionne bien
const InitialMessage = await thread?.fetchStarterMessage();
Merci de la vidéo, mais je voudrais en slash command
@devout flume c'est la même chose tu dois juste remplacer la variable "message" de sont code par "interaction"
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
Quelqu’un a déjà use nextjs et capacitor ?
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');
});
});
Problème qui est....
Erreur de synthaxe ligne 2 caractere 31
const pas Const ;)
Oui cest const le Const cest discord qui fais ca
Je vois pas de problème 🤷♂️
Tu peux voc ?
??
Bah c’est pas un problème c’est juste pour savoir 😄
c'est quoi le meilleur hebergeur pour un bot discord avec database ?
Ca dépend surtout de ce que fais ton bot, pour commencer, un VPS suffit !
Ici par exemple : http://aklam.io/2U9bld 👀
Oui mais tu as une question en rapport avec nextjs et capacitor non ? Donc pourquoi tu demande "qui a déjà utilisé nextjs et capacitor?" plutôt que de directement poser y’a question ?
Il est malin le type 
Parce que c'est pas commun les gens qui utilises Capacitor ?
Non, ce que je veux dire c’est que c’est plus rapide qu’il pose directement sa question plutôt que de demander si des gens pourraient être capable d’y répondre non ?
Pourquoi il posserais la question si 98% du discord connait déjà pas l'existance de Capacitor ?
Perso je viens de découvrir

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
Mais faut de prendre ça mal 
Je le prend pas mal hein c’est juste que t’es 3 derniers message me force presque à poser une question 😄
C’est vrai que c’est mieux de poser la question direct c’est moins long si quelqu’un peut t’aider
ahhhhh
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
Le meilleur moyen d'apprendre c'est de s'exercer peut importe les tutos
D'accord je vois
Merci bien
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:
- Source Code: https://github.com/Kajgit/v14_tutorial
- Our Discord: https://discord.gg/nyBw3vrMnM
Credits: https://youtube.com/c/Lyxcode
Discord.js is a powerful Node.js module to interact with the ...
(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,
};
});
Log ton dir pour voir
console.log(dir)
je fais ça quand je rentre
je met ça ou ? J'ai testé dans mon fichier mais ça me dit que dir n'est pas définie
désolé je m'y connais pas énorme dans ce langage
Tu peux mettre ça juste avant le dernier return
je l'ai fais mais rien en console quand j'execute la commande (toujours l'erreur)
Déjà y'a un souci, il manque des }
Send me all
Commence par remplacer ça :
const formatString = (str) =>
`${str[0].toUpperCase()}${str.slice(1).toLowerCase()}`;```
par :
```js
const formatString = (str) => {
console.log(str)
return `${str[0].toUpperCase()}${str.slice(1).toLowerCase()}`;
} ```
Et dis-moi ce que ça te log
ça dit que mon bot est en ligne c'est tout, l'erreur commence là
C'est le console.log(str) qui a retourné 'undefined' donc ça veut dire qu'en gros ta variable dir = undefined
ah je l'ai enlevé je crois
?
Ah non rien
Tu as enlevé quoi ?
nn nn rien j'ai rien dit
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,
};
});
dac vasy
Et après tu reload ton bot et tu me dis ce que ça retourne
ok oui ça marque qu'elle n'est pas définie
Fait moi une capture
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};
Et l'architecture de ton dossier ?
tout
dans commande :
et info :
le reste on s'en fou non ?
le commandHandler se trouve dans le dossier handlers
pas de sous dossier
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
a
Essaie de mettre un console.log(directories) juste après la déclaration de cette variable pour voir
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 
fait voir ton index.js
je viens de trouver le bot : https://github.com/Kajgit/kajdev-bot/
bonne soirée 😉
ah merci je test ça demain !
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)
Avec https://old.discordjs.dev/#/docs/discord.js/main/class/TextChannel?scrollTo=awaitMessages tu peux attendre un nouveau msg
Donc quand tu envoies ton embed, tu awaitMessages pour récup la réponse puis tu edit l'embed
Ok ok bien vue merci
Quelqu’un a une doc pour faire comme blox link genre tu connecte ton compte Roblox a Discord
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
tu as la durée en minutes dans ton embed, ce que tu peux faire c'est quand la musique commence, tu init un timer en secondes
si ta musique fait 2 minutes tu l'as convertis en secondes, donc 120
puis ensuite tu calcules sur 100, ca pourrait donner quelque chose comme:
(100 * timer) / durée totale en secondes
puis quand tu changes de musique tu recommences
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
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]}`;
}
}
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
Bon au moins la sa s'actualise x)
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
Essaie de mettre ce que tu as entouré en rouge avant la déclaration de la variable "embeds"
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
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
Il est où ton interval
Dans ma function
Regarde
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
Envoie moi le screen le code est trop long
bah logique
c'est == ou ===
pas =
= c'est pour attribuer une valeur à la variable
Aucune idée je l'ai pas testé
Et bien mon embed m'affiche ma musique précédente ainsi la nouvelle
c'est à dire ?
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 *
C'est toi qui a tout codé ?
Non c'est une reprise d'un code que j'ai re modifié justement
Tu comptes en faire un bot public ou privé ?
J'ai pas bien compris ça
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
Elle est où la variable player
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
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
Y a des sites pour auto générer du regex j’crois
Ouais mais honnêtement j’ai 0 compris
Regarde des tutos peut être
Parce que j’crois que personne ne maîtrise vraiment le regex
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
Bonjour possible de m'aide sur des probleme sur un bot discord relier a pterodactyl si possible de vocal
voici mon eureur au complet
Yep j’ai fait sa merci bg
Att je peux t’aider en fin de semaine
Salut merci de la proposition mais actuellement cela fonctionne très actuellement je prefaire pas le touchée 😉
Alright
Mais merci quand même 😉
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 ?
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.
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
Tu peux passer par pm2 si il est sur un serveur dedié ou vps
ah mais non ca passe par github
D’acc jvais voir pour faire ça merci 🙏
Je vais voir pour le coder si j’ai une erreur je peux vous contactez ?
bien sur !
Merci 🫶
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 😅
Je peux t’aider vers 20 heure 30 si tu veux
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
bouh
montre le design pour voir
comment ça le design
il resemble a quoi le launcher ?
okay ^^
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 😄
nop
Et si tu utilise install direct de xmcl ?
Hmm je pourrais pas mettre de callback pour la progression du téléchargement mais je test ça demain
Et si tu utilise install direct de xmcl
Si tu utilises Next13, tes pages ne peuvent avoir d’autres noms que « page.tsx » ou « page.jsx » c’est ensuite la structure de tes dossier qui définit les routes.
Par exemple :
.
├ app
├ page.tsx # Ta page d’accueil
├ reglement
└ page.tsx # Page à laquelle tu accède depuis /reglement
└ …
└…
Ahh d’accord je vois, je vous remercie ^^
Merci pour ça Next
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.
Explique ton soucis, c'est plus simple
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 😂
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'
}
"Valid intents must be provided for the client"
?
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
ok
ces quoi des intentions
"Des intentions valides doivent être fournies pour le client"
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 !
possible d'avoir ta structure HTML
Je viens de trouver erreur de class, merci quand même de la réponse rapide !
Salut j'ai une question comme je peut faire pour que quand on clique sur un boutton sa ouvre un modal ?
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
Hi, i have a issue with the Nui on the client side. If i add a simple css hover, i will get only the hover when i move the cursor to left and top. For solved it, i added (not normal) a css : position absolute on the tag BUT, at this time, i will get everything in twice action (javascript, event) So to explain you easily, i has do a video 🙂 ...
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 });
},
};```
Salut, aucune erreur en console ?
Bah jsp dans le terminal c marqué aucun problème
Tu parles du console de débogage ?
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
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
Mais même j'avais essayé comme ça aussi au début sa a pas marché c pour ça que j'ai fait sans que la personne a un rôle car j'avais peur que sa soit à cause de sa que sa ne marche pas si tu veux je peux aussi t'envoyer le code avec le rôle juste
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 });
},
};```
Et ça ne marchait pas ça ?
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
Déjà ta vérification de permissions est mauvaise
C’est pas mute members mais manage members
Tu parles de cette ligne ?
if (!interaction.member.permissions.has('MUTE_MEMBERS')) {
Yep
Ah baah sa marche tjr pas
Mais t’as aucune erreur qui s’affiche dans la console ou tu as exécuté ton bot ?
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
Tu as un handler de slash command au moins ?
Normal c’est plus ça
Ça c’est discord.js v13
Ah bah oui là ça va être compliqué 
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
J'ai que un commandHandler et un eventHandler enfaite
Enfaite j'ai suivi un tuto qui m'a pris toute ma journée hein mais le gars il a arrêté au moment où on allait passé au commande mdrrr donc c vrai que j'ai regardé sur internet
Désolé pour le dérangement et merci pour votre aide
Tu devrais regarder d’autre tuto y a pleins de séries qui voient beaucoup de chose
J’ai pas les noms sous la main mais si j’y retrouve je t’y envoie
Bonjour tt le monde
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 ...
je ne comprend pas trop ton problème, possible d'avoir le code ?
tout le code non je vais pas pouvoir .. j'essaie d'isoler le probleme
👍
<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
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');
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
comment ça ?
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
passe ta/tes fonction qui lis le fichier et qui affiche les données
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);
};
}
}
d'après la doc, le résulta n'est pas dans la class principale mais dans l'évent
https://developer.mozilla.org/fr/docs/Web/API/FileReader/FileReader
fichier = entree.files[0];
fr = new FileReader();
fr.readAsText(fichier);
fr.onload = (readEvent) => document.getElementById(idSortie).value = csvJSON(readEvent.target.result)
fr.onerror = () => console.log(fr.error);
merci infiniment 🙂 je regarde ca ... je suis appelé sur un autre soucis 🙏
pas de problème
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.
bonjour, je aurait besoin d'aide si possible pour adapter un code d'un bot sur un autre merci
Tu ne lance pas ta function là ...
Modifie ta ligne 15 par : }();
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
La console me renvoie une erreur maintenant
}();
^
SyntaxError: Unexpected token '('
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
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
d'accord
Quelqu’un aurait une idée ?
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 ?
essaye de log un truc ligne 3
ligne 17 c'est : })()
c'est ce que j'avais dit au dessus mdr
il est vrai
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```
State n’est pas défini
Oui d'accord mais comment je le definie...
oui d'accord mais comment je le definie ??
tu as quelque chose pour récupérer le nombre de joueur sur le serveur en question ?
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);
},
};```
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
oui mais c'est pas mon code je essayer de l'adapter pour que sa ressemble a sa:
c'est la première fois que tu fais un bot ?
oui et non mais juste le system de gamedig j"aipetit peux de mal
déplace ton .setDescription à la place de SpliceFields
après là c'est juste du javascript hein c'est pas un soucis de gamedig
bref tu utilises une variable qui est pas définie
donc ducoup je sup le .setdescription et je le mais a la place sir embed.splicefields
faut que tu utilises la variable là où c'est déf c'est tout
bah tu mets embed.setDescription(....
d'accord
ça fonctionne ??
mais du-coup maintenant sa affiche juste sa
sauf que ton embed il s'appelle pas embed
non embed1
bah met embed1
et pareil dans le truc d'edit
avant ton .setDesc aussi dcp
et du coup pas celui du catch
faut pas qu'il ait le meme nom
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
non du tout
non c'est pas le mien c'est un serveur que j'ai prix sur google mais qui et on pour les test
fallait laisser comme c'était
d'accord mais donc ducoup je les ou alors ?
tu prends la ligne ou tu as ça avant le setInterval
.
envoie ton code je vais le faire
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);
},
};```
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
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```
quelle version de djs ?
v14
ça se met à jour 1 fois ou meme pas
oui
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]});
},
};
sa se mais 1 seule fois
??
c'est clairement le mieux à faire oui mais je voulais rester sur sa base de code
donc je prend son code a lieu ?
envoie embedServeur au lieu de embed1 et embed2
qui ? moi ?
oui j'ai oublier
Oui
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]});
},
};```
Tu pourras maj le nom du serv aussi
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```
j'ai pas
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);
},
};```
C'est pas facile de se mettre dans le code de qqun dautre
bah la c'est pas compliqué c'est juste que je fait pas gaffe
mais ne t'inquiète
pas
Non mais justement tu fais plus gaffe quand c'est ton code car tu sais où tu utilises quoi
essaye d'ajouter await devant message.channel.send("En cours de chargement...")
c'est sa marche bg mais pass possible une fois mis sa enleve en cours de chargement
modifie les ligne de sentmessage par : sentMessage.edit({content: null, embeds: [embedServeur]});
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
la c'est clairement pas compliqué je pense que tu peux le faire tout seul
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}`)```
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}`)```
.setDescription(`**⚡ - Nom du serveur:**\n\`Radium RP | Exclusivité | Semi - Serious\`\n\n🗺️ - **Map:** \`rp_rockford_mk_v2\` **\n:person_red_hair: - Joueur(s)**: ${state.players.length}/${state.maxplayers}`)```
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}\``)
merciii
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 🙃)
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
@primal portal tu saurais aider ?
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 🙂
Coucou, justement build son app, ça va permettre de sortir un fichier HTML, css et JS qui contient tout ton code, compilé, minimifié, et optimisé, ça permet d'héberger plus simplement la chose (vu que ya que 3-4 fichiers) et ça permet de rendre le code illisible et plus rapide
Et donc ducoup dans le dossier build se trouve un site normal avec un html css et js ? Uniquement le dossier build permet l'hébergement de l'app react ? Il y a besoin de rien de plus c'est comme un site normal (par exemple si j'ouvre le html ca fonctionne pareil)?
- Oui normalement
- Je ne sais pas
- Normalement oui si tu ouvres le HTML ça fonctionne
quelqun à une solution ?
