#javascript-typescript
1 messages · Page 79 of 1
Celui des pays car je n'ai fais que lui mais c'est le mĂȘme principe pour les autres đ
Ah bah ça marche pas
Quoi ça marche pas je viens de te le faire en vidéo
G copier la partie du script mais ça marche toujours pas
Alors ça vient de ton coté, je n'y peux rien, télécharge ce que je viens de faire et test
Tu dois avoir autre chose qui obstrue ce que je viens de te faire đ
Bah aprÚs comme je t'ai dit au moins 3 fois je modifie la page avec des sections et ça retourne sur la toutes premiÚre section et moi je voudrai que ça reste sur la section du questionnaire
J'ai peut ĂȘtre trouvĂ© une solution
Comment tu fais Ă passer d'une section Ă l'autre @copper pagoda ?
Avec le JS je change juste le style du display
Tu peux voc @copper pagoda ?
Ouais stv
Hop nouveau bot pour vous aidez 
il y est plus ? 
:djs: User (extends Base) (implements TextBasedChannel)
Represents a user on Discord.
bah si
je sais pas du tout ce que sont les slash commands et je le vois pas en serveur en commun
j'dois ĂȘtre fou
Oh cool il vient d'oĂč lui ?
Bonsoir ! Je me suis lancĂ© depuis peu dans l'apprentissage de la crĂ©ation d'un bot discord et en faisant le miens j'ai une petit erreur que je ne comprend pas si quelqu'un peut m'aider đ
Bonsoir, sans code on peux pas t'aider
||On et pas devin ? đ ||
Pas de soucis le seul problĂšme câest que ça dit pas dans quel fichier est le problĂšme je vous envoie tout le bot ?
Mais je n'ai pas installé de package prism-media aprÚs en suivant la ligne il y a opus et ça c'est un package que j'utilise mais je n'y ai rien changé
.rar alors que depuis 2007 Windows gÚre nativement les zips https://support.microsoft.com/fr-fr/windows/compresser-et-décompresser-des-fichiers-f6dde0a7-0fec-8294-e1d3-703ed85e7ebc
hihi
Cet article explique comment compresser et décompresser des fichiers.
ça m'aide pas ^^'
@jovial lionEngros si j'ai comprit tu aurais du le mettre en zips pour facilité la download
apres je peux dire de la merde mais je sais pas j'ai pas compris nn plus đ
ok alors je viens d'arrivé dans le channel
je vais voir
c quoi le prob
@jovial lion
alors si j'ai comprit ta pas d'event definit
il et definit ou ?
l'autre il screen son token..... 
@slim anvil:(
C'est le token d'un bot test
ça n'influe pas
client.on('error', (error) => console.error(error));
le error n'est pas deff
@jovial lionJe vais tester un truc si sa marche pas je t'aide demain
^^
sauf si qq'un viens
mais att je test un truc
Pas de soucis merci đ
@jovial lionj'ai trouver en haut de ton code
en dessous de path
tu met sa
const error = console.log("y'a une erreur Zebi")
tente de faire sa
en attendant
je re demain stv
Mes dm sont ouvert pour de l'aide pas des trucs chelou genre ahah DM OUVERT
đ
Le bot ce start pour moi aucun soucis bon a demain des bizu !
et Bonne soirée
qu'est ce que tu racontes ?
C'est pas ça xD
ah non c'est pas ça je te confirme il te raconte des cracks la
Bah ouais c'est ce que je me disais aussi j'ai testĂ© au cas oĂč mais bon xD
Vous savez oĂč je pourrai stocker des vidĂ©os en grande quantitĂ© ? Et gratuitement ? Autre que mega qui met leur quota chaque jour
YouTube 
A part youtube
De maniĂšre gratuite sans rate limit journalier honnĂȘtement j'en connais aucun, t'as vraiment besoin d'upload "a l'infini" chaque jour ?
Vidéo en grande quantité et gratuit ça n'existe pas monsieur
https://vimeo.com/fr/upgrade en plateforme pro mais Have fun sur les prix
Tu as toujours Dailymotion
Sinon tu peux créer un bucket AWS, tu as 75GO offerts, et ça coûte pas grand chose au To/mois.
TU les upload sur le bucket et tu les affiche dans un player tout simplement
Je parlai pour regarder les vidéos
Je veut un truc gratuit pas payant đ
Et moi je voudrais pouvoir stocker mes dizaine et dizaine de films que j'ai sur mon serveur chez moi gratuitement dans le cloud.... Si seulement. Réfléchis à ce que tu veux réellement sinon va sur youtube ou dailymotion ^^
C'est trop simple de tout vouloir gratuitement, les services et le stockage ont un prix
Si c'est gratuit c'est toi le produit 
Mega est gratuit đ€ Drive est gratuit đ€
Mais ouais, je dois ĂȘtre aveugle pour voir que c'Ă©tait gratuit đ€·ââïž
Je veut juste contourner le systĂšme de quota de mega
Donc câest bien ce quâil dit ce qui est gratuit est rate limited
donc câest du faux gratuit, câest pour te laisser lâutiliser et te pousser Ă payer quand câest arrivĂ© au max
đ
^^
Drive pareille câest pas gratuit tâas une limite de taille
mais tâauras 0 service qui te laissera pomper leurs stockage sans payer ou sans retour en tout cas
(En dehors de la version free)
Ah, c'est juste le quota de merde qui fais chier, dommage đ
Merci quand mĂȘme @slim anvil
Tu peux sinon le faire sur 2 services avec ratelimit et quand tâes bloquĂ© sur 1 tu passes Ă lâautre 
Ouais aussi
Bonjour.
J'aimerais faire en sorte que lorsque je créer un array, les valeurs à l'intérieur doivent correspondre à un autre Array, je m'explique, j'aimerais que l'array soit de type d'un array ( Pour gérer les permissions d'un membre )
PS: j'utilise TS
pas compris ?? đ€
Mince ...
tu veux copier les valeurs d'un array dans un autre?
En fait, j'aimerais que dans mon command constructor, il y ait un array de permissions à mettre en option, pour le bot et le membre, j'aimerais que les valeurs mises à l'intérieur soit obligatoirement des valeurs disponibles dans un array déjà définie
A titre de comparaison, pour les intents, le type IntentsFlags
un enum alors
ouais c'est le mieux
How TypeScript enums work
et tu fais un validator dessus pour vérifier que ca existe
alternativement tu peux faire comme ils le font eux-mĂȘme https://github.com/discordjs/discord.js/blob/stable/src/util/Intents.js#L46
dans leur cas c'est un bitfield c'est pour ça qu'ils mettent les 1 << devant chaque valeur
D'accord, à vue d'oeil comme ça, ça me paraßt un peu "complexe"
Je me trompe sûrement !
mais si tu es sur du ts l'idéal c'est les enums
Donc les enums ok, déjà merci pour le lien
les bitfields c'est pas nécessairement compliqué non, tu vérifies juste qu'un bit soit à 1 ou 0
nan mais tu peux valider comme l'a dit enzo
une solution moins complexe c'est justement les bitfields parce que tu vas juste vérifier les valeurs de chaque bit
aux positions que tu auras prédéfinies
Donc faire comme ce qu'on fait Discordjs ?
Oui, c'est une possibilité
yep
leur classe est trĂšs pratique d'ailleurs pour en faire : https://github.com/discordjs/discord.js/blob/stable/src/util/BitField.js
Bah écoute, je vais essayer avec les enums pour commencer, ça me fera découvrir ce constructeur
Btw, leur classe est super bien foutue
J'avoue
yep c'est plus logique de faire ça dans un contexte oĂč tu utilise le typescript
Ensuite pour le "validator" j'aurais plus qu'Ă faire une comparaison des arrays en quelque sorte ?
Euh, c'est pas un array
xD
je vais me renseigner sur ce constructeur
la page de la doc de typescript te sera plus utile que mes messages pour faire un validator
Il y a des exemples de validators dessus ? ( Je fais un autre truc à cÎté j'ai pas pu voir totalement )
ils mentionnent comment ça fonctionne et tu pourras voir comment valider ça
globalement tu vérifies juste que la clé existe
Et ce validator sera donc en temps réel ?
Si j'ai bien compris
Puisqu'il vérifie chaque clé
bah vu que le but est de vérifier que c'est bien dedans à l'exécution oui c'est en "temps réel"
lĂ tu m'as perdu
ouais
Quand je crĂ©er l'array, il devra ĂȘtre du type de l'enum, donc les valeurs seront quelque part ( DĂ©finies )
Si je mets par exemple BAN_Mbmrs, ça me dise qu'il existe pas dans ce type lĂ
Sans éxecuter, c'est mieux lol ? ^^
du coup effectivement ça aura un type, et ce sera un objet utilisable à l'exécution
Exactement comme pour les intents flags
How TypeScript enums work
Et pour ĂȘtre sur que tu comprennes ce que je veux, en voici l'exemple :
Une image vaut mieux que mille mots lol
Bon dans tous les cas, je vais faire ça et je te redis si ça fonctionne bien comme je le souhaite, parce que bon le but de TS c'est de savoir avant d'exécuter
J'attends juste la réponse d'Enzo puisque tu l'as mentionné
ça c'est sûr que ça aura un type
Tient bah j'en profite, j'ai une derniĂšre question
Haha, en gros je veux savoir si le constrcuteur enum à l'aide du validator me permettrait d'avoir une correction en temps réel comme sur le screen ici #javascript-typescript message
Cliquez sur [đ](#javascript-typescript message) pour accĂ©der au message
Et pour ĂȘtre sur que tu comprennes ce que je veux, en voici l'exemple :
Que si j'écrive BAN_Mbmr, ça me dise que ça n'existe pas avant d'éxecuter le programme
Je comprend pas trop ce que tu cherches Ă faire enfaite du coup
tu peux m'expliquer le but du truc sans me parler de ce que tu fais au niveau code
Je veux que dans mon constructeur de commandes, il y a 2 props, les perms du bot et les perms du membre
Je veux faire en sorte que les valeurs présentes dans ces 2 tableaux, soient des valeurs déjà définies
En gros que ces 2 props, soient typĂ©es de sorte Ă ce que si je me trompe en Ă©crivant une permission FLAGS, ça me dise que ça n'existe pas avant mĂȘme d'Ă©xecuter le code
Comme pour les Intents, tu as vu sur le screen que si je me trompe dans la casse, ça me dit que ce n'est pas possible d'assigner un autre type.
Est-ce que c'est mieux ?
j'espĂšre que oui
ah oui okay, bah du coup je pense que le truc de taink ca devrait etre ok, enfin j'imagine que ca devrait l'ĂȘtre đ€ aprĂšs sans avoir tester avant je peux pas te l'assurer a 100%
Bonjour
une personne peut m'aider s'il vous plaĂźt, cela fait depuis 6 jours que je suis sur ce problĂšme..
tu devrais vérifier que channel est bien défini avant d'accéder à une de ses méthodes
Je vais tester ça je vous redit, merci les gars
Comment sa ?
désoler mention
if (channel)
VĂ©rifie si ton salon existe ou n'existe pas đ
c'est une Catégorie, justement le bot crée le salon
Nan tout t'est cassé
alors "channel" ici c'est la variable qui correspond à ce que tu récupÚre depuis le cache
avant de fetchWebhooks tu devrais juste vérifier que ça existe
que ce soit créé par le bot ou non tu devrais le faire
et pour vérifier je met juste if(channel) ?
ouais
@keen narwhal
bah lĂ oĂč c'est utile quoi
-__- Relis mdr
alors
tu ne veux exécuter ton code lié aux webhooks que si ton channel est défini
tu devrais juste faire une condition quoi c'est pas compliqué
pas seulement sur la premiÚre ligne liée
if(!channel)
{
// fait quelque chose
}
un .send fonctionne ?
pour la conditions
Sa te dérangerait de venir vocal, car je comprend rien.. désoler
je peux pas ĂȘtre plus clair que je le suis maintenant
fais un if quoi
t'en as fait un juste au-dessus manifestement vu qu'il y a un else donc tu sais ce que c'est
oui
Sinon sur https://g-ca.fr/offres y a des offres de personne qui peuvent vous faire des bots fonctionnels 
payant...
ton if doit englober toute la partie webhooks
malheureusement, je suis mineur, je n'ai pas les moyen.
.., je suis perdu..
se code c'est pas moi qu'il l'ai fait..
c'est mon dev qui est partit et qui refuse de le réparer.
ok donc tu sais pas ce que ça veut dire
dans ce cas rajoute juste if(!channel) return Ă la ligne 216
d'accord
il crash plus
tu peux m'expliquer ?
se que tu a fait la en gros please
Par contre x)
Mtn quand je lui envoi un mp, il m'en voi l'id mais dans la console x)
je sais pas ce qu'il fait ton bot (et je vais pas le faire Ă ta place) donc je peux pas t'aider davantage
informe toi sur le javascript avant de continuer
ce que tu fais c'est comme vouloir réparer une voiture sans comprendre le fonctionnement d'un moteur
apprends le fonctionnement du moteur et tu pourras réparer la voiture
ça sert à rien de sauter les étapes
@timid loom ( désolé de la mention )
J'ai trouvé un module qui vérifie les enums
Mais je sais pas si ça correspond au validator dont tu me parlais
Sur leurs github, j'ai trouvé cette fonction js export function checkValidValues(object: { someProperty: any }, values: any[], done: Function, validatorOptions?: ValidatorOptions) { const validator = new Validator(); const promises = values.map(value => { object.someProperty = value; return validator .validate(object, validatorOptions) .then(errors => errors.length.should.be.equal(0)); }); Promise.all(promises).then(() => done(), err => done(err)); }
Y'a pas une gentil personne qui peux allez look ma demande de dev x) #demande-de-dev 
Il faut attendre
Câest quoi ta demande ?
Juste de l'aide pour mon code
Cliquez sur [đ](#demande-de-dev message) pour accĂ©der au message
Evite de mettre à définir si tu ne peux pas
đ
(Rémunérer)
Ha, je me suis sûrement trompé désolé
Hey
,
Est-ce que quelqu'un sait comment extraire chaque frame d'un gif et que cette frame soit utilisable par canvas (NodeJs)?
tu veux le faire a la main ou avec une petite lib
Le plus simple xd
A la fin je pense rendre open source le mini projet que je fais
Donc v'la
https://github.com/benwiley4000/gif-frames car y a lui fonctionne autant coté serveur que client
Bah....Ptet...Tu pourrais dire... PHP Man
Je l'ai aussi déjà use...Mais j'avais r capté mdr
T'as pas un bou de code? Flemme de trop réflechir
Bah nan vu que j'utilise pas ce module et j'ai pas mon pc đ
Bah...
Non
xd
Lui
Il return les pixels
Moi je veux l'image en mode canvas xd....
Mais mec đ
Il te retourne le fichier
Et le fichier retournĂ© c'est Ă partir de lĂ oĂč est lancĂ© le code
Si c'est dans root
Il enregistrera dans root
đ„ł
Il m'a foutu un vent
Je vais lui demander
Bah il utilise gif frame
đ
Et tu as juste pas besoin de la fonction loadImage
Vu qu'il fait exactement createReadStream
@deep torrent
J'vais voir
Hello
Dites-moi, on peut faire un Array Constructor en spécifiant qu'il doit respecter un type ?
( Typescript )
j'aimerais faire quelque chose de ce genre :
PermissionsHandler[]
Sauf que PermissionsHandler est un type, si je l'utlise ça me mettra une erreur
tu devrais jamais utiliser le constructeur Array
dans ce cas déclare un tableau vide
t'es pas obligé de passer par l'inférence
tu peux dire par exemple const botPermissions: PermissionsHandler[] = []
bah oui tu peux évidemment définir un type sur une variable
teste au pire tu verras bien
j'aurais mĂȘme tendance Ă te dire qu'en typescript t'as pas besoin de dĂ©clarer tes variables dans un constructor en soi
mais un constructor ça reste une fonction comme une autre
envoie le code complet
je t'envoie le constructor
ah t'es dans les paramĂštres d'une fonction
Yep
pour moi tu ferais déjà mieux de passer par un typedef sur les options du constructeur
pourquoi tu fais des new partout par contre?
les array et les objets tu les définis via [] et {} respectivement
Yep
Comment ça ?
Avec les décorateurs ça passe tu penses ?
att je vais essayer de te trouver un exemple
Aussi oui pourquoi pas x)
nan mais déjà un truc que tu peux faire
c'est déclarer le type plutÎt que faire de la déconstruction
genre
class MyClass {
public name: string;
public flags: string[];
constructor(opts: {name: string, desc: string, guildOnly: boolean}) {
opts.name; // string
opts.desc; // string
opts.guildOnly; // boolean
}
Je vois ce que tu veux dire.
aprÚs pour rendre le truc plus lisible tu peux déclarer le type avant
et ça c'est un typedef
Genre typiquement tâappelleras ça "MyClassOptions"
Hum là tu me dis de créer une autre classe en guise de typedef ?
Okay ça marche, je fais faire ça
Je vais faire en sorte d'avoir maClass { clientoptions, mes options }
Ouais j'vais déclarer un type, ça sera plus rapide
Que d'étendre tout le temps x)
le plus simple c'est de faire une interface avant et d'utiliser ça comme type
Ouais voilĂ par exemple
pour t'y retrouver cela dit je te conseille de mettre TaClasseOptions plutĂŽt
Bonjour une personne peut vocal, pour m'expliquer un truc sur mon bot, s'il vous plait, sa fait 7 jour que je suis dessus, je comprend rien.. car il faut que je modif un fichier pour qu'il fonctionne mais je ne comprend pas comment fonctionne le fichier
mentionnez moi si vous voulez bien
Bonsoir est ce que quelqu'un aurait un code pour mettre du css a un margin-top choisi et quand on arrive en srcollant a ce moment tu margin ca nous rajoute le css choisi. Je ne connais casiment rien au js donc merci a ceux qui pourront m'aider đ
Tu vérifies quand l'utilisateur arrive à un certain px de la page, arrivé à ce px, tu ajoutes une classe
@timid loom dans le super(), il demande un argument, lequel ?
je sais pas faire de javascript đ
On le fera pas pour toi ^^
Renseignes-toi, tu peux le faire en js, ou plus simplement avec jQuery
ça dépend du constructeur de ce que tu étends
Options
Le plus évident, pourtant ça ne fontionne pas
Code + erreur pls

forcĂ©ment regarde oĂč tu met ton objet
et je pense pas que le this.name et this.dirname ce soit souhaité
si?
Si
bah du coup met juste ton objet entre les parenthĂšses de super();
Pourquoi tâessaye de dĂ©finir plusieurs fois le nom ?
C'était pour montrer que ça fonctionnerait pas dans super
Ce n'est pas prévu que je le déclare plusieurs fois
Tâessaies de faire quoi ?
Si tu mets ta souris entre les parenthÚses ou sur le super ou un truc du genre, ça te le dis
Ăa te marques un petit message
Je sais
Mais l'argument qu'il attends par principe, il le refuse
C'est moi qui ait créé son argument
Donc je sais ce qu'il attends
Oui
Faut juste que tu mette les autres éléments que ta dans ton interface CommandsOptions
et t'aura plus l'erreur
et si ta des éléments pas obligatoire, tu peux mettre key**?**: type
dans ton interface
et du coup pour te répondre, .ts corresponds à du typescript
et js bah javascript
c'est de l'aide ici ?
oui
ok
j'ai programé mon bot pour qu'il fasse du reaction role
et ca ne marche pas et je ne trouve pas l'erreur ;-;
Sans le code, je pense qu'on va avoir du mal Ă t'aider đ
oui y'en a une sur la ligne 46 mais j'arrive pas a la trouvé
C'est quoi l'erreur ? Et ca correspond Ă quoi config.reactionRole ?
pour l'instant je suis débutant dans le codage(genre y'as mm pas 1 semaine et dcp je suis des tutos en écoutant en refaisant pour ensuite apprendre ) :/
Tu sais comment trouver l'erreur ou pas ?
tu peux me dire Ă quoi correspond config.reactionRole ?
Dans ton fichier config.js, il y a écrit reactionrole et non reactionRole, il faut donc que tu remplaces config.reactionRole par config.reactionrole dans ton fichier princiapl
ok
je vais tester merci
a ben
mtn mon pote click mais ca enleve direct ;-;
ca enlĂšve la reaction direct
et cette fois pas de message d'erreur ;-;
ça enlÚve la réaction direct ?
oui
reactionRoleElem te retourne quoi ?
?
fait un console.log(reactionRoleElem) et dit moi ce que ca te met dans la console
jpp ecrire dans la console ;-;
non mais écrit le pas dans la console
c'est pas pour rien que j'ai prĂ©cisĂ© que je suis un dĂ©butant đ
dans ton code, juste aprĂšs ton const reactionRoleElem = ..., tu mets console.log(reactionRoleElem)
apres ou avant le egal ?
Je te conseille d'apprendre Ă utiliser le langage avant de commencer Ă faire des projets comme ceci, ça te permettra de comprendre comment ton code marche et d'ĂȘtre + autonome (sans regarder des tutos en gros)
aprĂšs la ligne
tu sautes une ligne et tu mets ce que je t'ai dit
Tu peux nous montrer ton code modifié
modification master 
on a rien vu 
ca te return rien dans la console lĂ ?
nop
Au pire, tu peux faire comme je fais, tu rajoutes des console.log Ă chaque ligne en changeant le contenu comme ça tu vois oĂč ça bloque 
okkkkk
Ă chaque ligne
?
la ca ma mis ca
J'aurais plutĂŽt du dire Ă chaque condition, c'est vrai
Mais j'avais eu un problĂšme oĂč postgres voulait pas marcher et me mettait pas d'erreur, du coup j'avais fait simple et j'avais fait ça
du coup oui le else marche plus mais le problĂšme vient d'avant donc pas besoin d'en mettre ici
sinon ca me met rien ;-;
Tu peux me montrer ton code modifié en entier stp ?
pt1
(seulement les deux évÚnements au final)
pt2 (final)
;-;
Avant de continuer, je te conseille de consulter ce site qui va pouvoir t'expliquer comment marche console.log():
-> https://developer.mozilla.org/fr/docs/Web/API/Console/log
ok
Ensuite, pour ton problĂšme, je pense qu'il vient de la premiĂšre condition.
Essaye de rajouter ; aprĂšs le return, Ă la ligne 45
(je viens de me rendre compte que le lien que je t'ai envoyé, malgré qu'il soit bien, va pas beaucoup t'aider je pense)
pas besoin en js
(J'étais pas sûr sur le moment)
AprĂšs le return Ă la ligne 45, rajoute un console.log('test1')
c'est fait
Essaye de rajouter une réaction et dit moi si dans ta console, tu as test1 qui s'affiche
Laquelle ?
toute à l'heure, tu m'as pas montré le fichier config.json, tu peux me le montrer en entier ?
d'acc
regénÚre le car on a ton image dans le cache
et y a des gens qui utilisent betterdiscord pour voir les messages supprimés
a
pour l'erreur, t'as fait une faute à la ligne 61, t'as écrit config.reactionole, tu as oublié une lettre
aprĂšs ton const emoji = reactionRoleElem.emojis..., Ă la ligne en dessous, tu peux mettre un console.log(emoji) (et aussi, supprimer les console.log inutiles)
c'est ce que te retourne console.log(emoji) ?
Tâes au courant, en tous cas avant, je sais pas maintenant, que pour les rĂ©actions faut mettre des emojis graphique et pas textuel
Windows + .
Ăa tâouvres une fenĂȘtre
En tous cas avant tu pouvais pas
Utiliser les noms textuels
CâĂ©tait obligatoirement graphique
Je sais pas s'il y a des gens haha
Mais j'ai une erreur js UnhandledPromiseRejectionWarning: Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only file and data URLs are supported by the default ESM loader. On Windows, absolute paths must be valid file:// URLs. Received protocol 'e:'
J'ai cherché un peu, apparement il faut ajouter file:/// ou quelque chose comme ça
Mais par exemple ici, js path.resolve( path.join( path.dirname( fileURLToPath( import.meta.url ) ), commandPath) ) )
Je le mets oĂč ? ^^
@sand quail quand tu dis avant, c'Ă©tait quand ? đ€
Début 2021
Yâa quelque mois
On pouvait le faire dans ce cas lĂ đ
La derniĂšre fois que jâai touchĂ© Ă mes bots quoi
T'es pas Ă jour
Bon jâai pas trop cherchĂ©, il est tĂŽt, maintenant on peut, mais de ce que jâai vu toujours pas naturellement
Ba si đ€
Vous désirez apprendre à coder un bot Discord sans aucune connaissance ? Dans cette vidéo, nous allons simplement voir comment ajouter des rÎles avec une reaction discordjs! Visionnez notre vidéo pour en savoir plus!
Discordjs: https://discord.js.org/#/
[23/??] Comment ajouter des rÎles avec une reaction discordjs | Développeme...
Je te conseille ceci @sand quail
Je sais dĂ©jĂ comment faire, jâai pas le temps
Bah fait le et viens pas ici alors
Jâai pas besoin de le faire mdrrr
Ăa a aucun rapport avec la situation
Yop, j'ai un sushis : js Uncaught SyntaxError: e:\Turty\dist\util\emojis.json: Unexpected end of JSON input
j'ai ajouté le parser car avec des recherches, j'ai vu que ça aidait
Mais bon ...
Normal ce n'est pas du json lĂ que t'a mis @bold sparrow
Il faut d'abord lire le contenu de ton fichier json
const fs = require('fs');
public fileemojis = fs.readFileSync('../util/emojis.json');
public customEmojis = require(JSON.parse(fileemojis));
PlutÎt comme ça @bold sparrow
Merci pour ton message
Mais cette fois ci j'ai une erreur de typage {
"resource": "/e:/Turty/src/Base/turty.ts",
"owner": "typescript",
"code": "2345",
"severity": 8,
"message": "L'argument de type 'Buffer' n'est pas attribuable au paramĂštre de type 'string'.",
"source": "ts",
"startLineNumber": 14,
"startColumn": 46,
"endLineNumber": 14,
"endColumn": 62
}
de typage ?
Pourquoi j'ai écris ça
"message": "L'argument de type 'Buffer' n'est pas attribuable au paramĂštre de type 'string'.",
TypeError quoi ^^
Bah normal il lui faut un int
donc quand tu lui attribue la valeur tu lui met direct les chiffres pas de " entre
J'ai peur de pas comprendre
AH
Ă oui c'est psk customEmojisFile return deux valeurs
PremiĂšre valeur le string et la deuxiĂšme c'est le Buffer
const fs = require('fs');
public {fileemojis_string, fileemojis_buffer} = fs.readFileSync('../util/emojis.json');
public customEmojis = require(JSON.parse(fileemojis_string));
essaye ça @bold sparrow
T'a essayé ?
la propriété string n'existe pas sur le type buffer
mĂȘme avec le nouveau code ça te dit ça ?
c'est psk t'a pas fait ce que j'ai écris
Typescript n'aime pas les constantes non utilisées
essaye quand mĂȘme x)
Ca ne fonctionne pas
aaaaah
Je veux récupérer des fichier json comme sur le screen mais malheureusement ça me donne une erreur
Tu peux juste readFileSync() et JSON.parse
un require sur un fichier JSON le parse tout seul d'ailleurs
Sans le parse, ça ne fonctionne pas
Avec import ça fonctionne pas
Avec une création de require pour l'ecma ça ne fonctionne pas
go tester ça https://nono.ma/load-a-json-file-with-typescript
sinon tu fais le readFileSync et json.parse
Tu peux juste sort en faisant b.experience-a.experience
nan mais ta fonction de sort
plutĂŽt que de faire une ternaire
pourquoi le await sinon? vu que tu fais un .then
J'ai testé et, pas besoin de fichiers typedef
Ca fonctionne trĂšs bien sans
J'aurais du y pensé avant lol
Merci pour le lien ! ^^
Ah non j'ai crié victoire pour rien
Au pire j'vais travailler avec autre chose
Vous savez si c'est possible d'envoyer des fichiers sur un autre serveurs que celui de son bot ?
oui

non
ou d'un serveur genre un vps
ah bah ou itu peux
soit tu peux utiliser ça https://www.npmjs.com/package/ftp
soit tu peux avoir une api sur l'autre serveur sur laquelle tu va faire une requĂȘte pour upload ton fichier sur l'autre serveur
Ok, je vosi
vois*
hello #présente-ta-création
Yop merci, je move le message
Salut !
Un développeur Js peux m'aider ?
Je m'explique, j'ai crĂ©e un mod mail, donc quand un user envois un message Ă mon bot, mon bot lui envois sa ( image 1 ), c'est un choix avec des rĂ©actions, quand on clique sur l'une des rĂ©actions, mon bot crĂ©e un salon avec un weebook dans mon serveur ( image 2 ), pour le moment c'est ok, mais le problĂšme c'est quand le ticket est ouvert, moi quand jâĂ©cris un truc dans le salon que le bot Ă crĂ©e, il le transmet bien Ă l'user, mais quand l'user envois un message au bot pour qu'il lui transmettent, bas le bot ne lui transmet pas. ( image 3-4 )
Je voudrais savoir si une personne serait disponible pour vocal, et que je stream mon écrans ( vous envoyez le code serait trop longs, et je voudrais aussi comprendre mon erreur. )
En vous remerciant d'avance.
Bonne soirée ( me mentionnez si vous voulez bien ) 
image 2
image 3
image 4
C'est un modmail
Pas grave, merci comme mĂȘme đ
explique moi c'que c'est et je pourrais t'help j'ai jamais entendu ça
Imaginons, tu Ă un bot
tu lui envoi un message privé
et ( je prend exemple sur le mien ) il t'envoi un embed avec des réactions
quand tu clique sur une réaction, le bot crée un salon dans un serveur prédéfini
ah oui ok je vois
et nous somme en contact via le bot
et pour répondre aux admins, le mec send un mp au bot et toi tu le reçois ?
Tout Ă fait
ouais ok je vois
mais la sa marche pas :/
quand moi je veux send un message Ă l'user, sa fonctionne, mais pas l'inverse
déjà fait, il me logs l'id du salon que le bot à crée ou, sa ( l'image arrive )
ouais j'ai capté le truc
Donc @keen narwhal montre ton code
Je vais pouvoir t'aider
Par contre mon autre bot fait des trucs chelous faut mettre des cooldowns partout
Je te l'envoi en mp ?
Non non ici
l'id du channel c'est le dernier truc log ?
C'est fait pour tu sais ^^
238 lignes :/
non mais les lignes concernées
Bah à mon avis ce sont les lignes concernées
Justement je sais pas qu'elle lignes x)
Nan mais montre je vais check
bah lĂ oĂč tu gĂšres le fait que l'user send le mp et qu'il est censĂ© l'envoyer dans le salon du coup

AprÚs t'as ça qui est pratique aussi :)
je t'envoi le fichier entier, y'a d'autre code mais le mod mail se trouve tout en haut
alors la
Envoie ici
good
merci đ
de rien
Fait gaffe quand tu met ton code comme ça enlÚve ton token
Il a un config
ah trkl alors x)
je n'ai pas mon token dans le code x)
Et puis bon je vais rien faire tkt đ
mais merci de lâavertissement
Je prends 0 risques
Nan mais je parle si il y a des self bot qui récupÚre les tokens affiché dans les codes tu vois


Alors attends déjà je relis ton problÚme 
x)
Ok donc c'est quand l'user envoie ça met pas
Tu peux m'envoyer stp le modmails.json
c'est une genre de basse de donée
Alors tu peux faire beaucoup plus simple, mais si ça fonctionne tant mieux
Sa se trouve c'est sa qui fait planté, aprÚs plus simple je connais aps
pas*
Alors est-ce que ça te console log ça ?
Oui effectivement
Mais c'est toi qui a fait tout le systĂšme ?
C'est bien l'ID du channel t'es sûr ?
Nan j'ai était aidé, mais la personne est partis
quand tu fais un return, ici et ici t'as essayé de faire un console log ?
oui si tu souhaite je peux t'inviter sur mon serveur
Pour voir
Nan j'ai pas essayé
En mp ducoup
Nan mais pas le serv tkt
désoler je désactive pas les mentions
je sais pas faire x)
Et du coup on mettrai quoi ('ton message') j'apprend en mĂȘme temps c'est good
Tu créé un webhook qui a pour nom celui du bot
Et quand tu le get tu cherches pas du tout ça
Attends
Oula, c'est tout con enfaĂźte -_-
Ouais voilĂ
remplace la ligne 193
par ça
const webhook = webhooks.find(webh => webh.name == client.user.username)
Et normalement ton problĂšme est fix

d'accord, je te dit sa
Ok, et ça
fetch(webhook.url + "?wait=true", { "method": "POST", "headers": {"content-type": "application/json"}, "body": JSON.stringify(msg) })
tu peux direct le remplacer par
webhook.send(msg)
je te rassure ça revient au mĂȘme mais voilĂ t'as un outil simple Ă disposition autant en profiter
qu'elle ligne ?
x)
attends je viens de voir un truc lĂ mdrrr
c'est pas ça que tu dois send
C'est pas msg mais message.content
donc c'est webhook.send(message.content)
le username est déjà sur le webhook
Exact
okay
Et lĂ normalement tout fonctionne
Dit moi
Je vais manger je reviens plus tard, si ça work pas et que t'es vraiment pressĂ© bah quelqu'un d'autre te rĂ©pondra ( peut ĂȘtre )
d'accord, merci beaucoup en tout cas
Hey, quel est le soucis ? @keen narwhal
AU PTNN
?
@cyan ironJE T'AIME
merci
sa fonctionne
@dire latch désoler, le problÚme est réglé
mais merci đ
Np
j'ai mis 9 fucking jour à trouvé le problÚme est la en 5 minutes il la résolu
Juste merci

De rien 
Yo ! Je suis en train de faire une API et niveau sécurité voilà quoi 
Enzo m'a dit qu'il fallait que je sécurise, et en fait j'ai un problÚme, j'ai des formulaires, et il faudrait que je protÚge mon API de potentielles attaques XSS
Donc j'ai lu un truc lĂ dessus qui me conseille d'installer et d'utiliser le module xss-clean ( https://www.npmjs.com/package/xss-clean?activeTab=readme )
Est-ce que vous pensez que ça suffit ? Si quelqu'un pourrait m'éclairer ce serait cool merci :)
bot.on("message", message => {
if (message.content === "!start") {
const user = message.author;
bot.channels.cache.get('860693969095753728').send("Ton channel et créer");
const channelname = message.author.username;
message.guild.channels.create(channelname)
}
});
comment je
send un message
dans le channel creer
?
svp
tu le crée ou
Non mais dans ton code
si tu veux envoyer un message a la création faut mettre l'envoie au moment de la création ??
.then(M => M. Message. Send("your"))
C'est degeu je suis sur tel mais c'est sa le délire
okok cimer
oui justement dcp le .then
en gros
ah oui j'avais pas vu le code create
Hey, depuis le début de la semaine je suis bloquer avec vue-i18n... et j'ai besoin qu'on m'éclaire sérieusement svp
J'ai crĂ©er mon projet avec la commande **vue create myProject ** ensuite j'ai ajoutĂ© les modules suivant router et i18n avec la commande vue add moduleName jusque lĂ tous va bien, lorsque j'ai fais vue add i18n le CLI pose des questions, j'ai rĂ©pondu aux questions, une fois rĂ©pondu le CLI crĂ©er un fichier i18n.js dans le dossier src dans ce fichier il y a le code qui charge les messages de traduction le problĂšme arrive Ă la vue, lorsque j'essai de rĂ©cupĂ©rer un message avec {{ $t("hello") }} le compiler se relance et je recharge ma page, une fois la page charger bah elle ci devient complĂštement blanche, j'ai plus rien mĂȘme pas le message traduis et dans la console aucune erreur... je suis perdu, j'ai regardĂ© la doc en long et en travers le code est identique Ă la doc que dalle et je Ă©galement regardĂ© sur internet mais la plus part des aides sont foireuses...
Pinger moi, si besoin on peut faire un appel + partage pour que ça soir plus simple. Merci d'avance
Hello dans ta console t'as quoi comme erreur
vue 2 ou vue 3 aussi ?
Tu as l'erreur dans ta console đ€
Ok show me ton fichier main.js
Ou sa n'as rien Ă voir ?
Ah bon ?
Pourtant dans le main.js j'ai rien fais d'extravaguant đ j'ai juste ajoutĂ© axios, header, footer et voilĂ
Le fichier i18n.js a été générer par le CLI aprÚs l'installation c'est pas à moi
Il récupÚre toutes les traductions effectivement
Yes ok pour l'ajouter dynamiquement
mais soit ca vient pas d'ici dans tous les cas
tu peux juste par acquis de conscience dans ton i18n faire
export default createI18n({
legacy: false,
locale: process.env.VUE_APP_I18N_LOCALE || 'en',
fallbackLocale: process.env.VUE_APP_I18N_FALLBACK_LOCALE || 'en',
messages: loadLocaleMessages()
})
en
const i18n = createI18n({
legacy: false,
locale: process.env.VUE_APP_I18N_LOCALE || 'en',
fallbackLocale: process.env.VUE_APP_I18N_FALLBACK_LOCALE || 'en',
messages: loadLocaleMessages()
})
export default i18n
ĂȘtre sur qu'il te return bien par la crĂ©ation mais bien le created
si tu vois ce que je veux dire
J'ai pas de problĂšme ici, j'ai tous console.log() j'ai pas un pĂšte d'erreur lĂ dessus
yes yes
C'est juste que si t'as que du fr / en autant les importer Ă la main, sauf si t'as masse de traduction possible
Si tu veux on se met dans un canaux je te fais un partage Ă©cran ou on s'appel en mp ça sera peut-ĂȘtre plus simple
Essaye déjà ce que je t'ai envoyé pour voir :D
L'un et l'autre fonctionne, ça me retourne " i18n [object Object] --- main.js?56d7:11 "
et t'as tjrs l'erreur sur ta page c'est ça ,
Yes, page complĂštement blanche
La page n'est plus blanche et maintenant j'ai juste " hello " d'écris et dans mon fr.json j'ai bien l'appel "hello" mais elle doit retourner "Bonjour"
screen moi juste ton fichier json please
et console log le retour de loadLocaleMessages() aussi please :-)
Dans la console j'ai un " [intlify] Not found 'hello' key in 'fr' locale messages. " aussi
Le console.log() de loadLocaleMessages()
yes quand il affiche la clé c'est qu"il la trouve pas, du coup je veux bien voir ton loadLocaleMessages
Ouais car du coup c'est fr.default.hello
essaye juste pour voir de mettre default.hello
(dans $t)
default.hello fonctionne..
Je suis perdu... pourquoi dans la doc de vue i18n il en parle pas ....
C'est la maniĂšre donc tu load les langues, mais c'est rien, dans ta fonction load
la ligne
messages[locale] = locales(key)
remplace par
messages[locale] = locales(key).default
pour voir
et remplace le default.hello avec juste hello
ça marche
top
L'argument "globalInjection: true" que tu m'a fais ajouter elle sert juste pour le dev ou le dev et la prod ?
les 2 je crois
les 2
Franchement merci, dans toutes les aides et docs jamais ils ont évoquer cela...
Mais je te conseille de virer la boucle et d'importer tes 2 fichiers directement, c'est pas comme si tu risques d'en rajouter tout les jours, du coup c'est plus de faire ta boucle que juste d'importer tes 2/3 traductions
et tu aurais jamais eu ce soucis
mais sinon avec plaisir et bon courage :-)
bonjour j'ai besoin d'aide avec l'hebergeur heroku ?
Pourquoi tu met un point d'interrogation 
pour voir si quelqu'un peut m'aider đ
Mais je ne te conseilles vraiment pas heroku pour ĂȘtre honnĂȘte
Oui mais ça veut rien dire ptdr
je sais pas mon bot sert juste a dire les nouveau arrivant
Attends laisse moi me renseigner 5min
Je connais quelqu'un qui a un hébergeur gratuit si tu peux vraiment pas investir @analog remnant
Le problÚme c'est que je n'ai jamais testé ses services donc je ne peux pas vraiment dire si c'est fiable ou pas
En tout cas, ça va l'ĂȘtre plus qu'Heroku 
Non justement
Oui
Mais moi je suis chez sapinet
Je paye par contre
Je reviens
wtf pourquoi
go glitch au pire @analog remnant
oe je vais essayer merci
Hey tu as un trÚs bon hébergeur gratuit : Project Heberg. Leurs services sont trÚs bons j'y suis depuis 4 mois environ et j'ai eu aucun soucis
Quelqu'un s'y connais en rethinkdb svp đŠ
Salut, j'essaye de compter le nombre total de membres du Bot sans compter les membres bots mais je n'y parviens pas, j'ai essayé ça mais bot n'est pas défini
const membres = client.guilds.cache.map(guilds => guilds.memberCount) - client.guilds.cache.map(guilds => guilds.member.user.bot)```
Si quelqu'un a la réponse, je prends
const membres = message.guild.members.cache.filter(member => !member.user.bot).size;
@keen narwhal
Par un message je sais le faire, mais je cherche Ă le faire depuis client, car c'est pour le message de statut
"Cannot read property cache" :/
bot.users.cache
@keen narwhal
client.guilds.cache.map(guilds => guilds.memberCount) - client.guilds.cache.map(guild => {
return {
members: guild.members.cache.filter(m => !m.user.bot),
}
}).map(g => g.members.size)```
Merci, c'était bien plus compliqué que ce que je pensais..
je me demande si y'a pas moyen de faire plus simple, mais voilĂ ! bonne continuation :)
On peut juste le faire via ```js
const amnt = client.users.cache.filter((user) => !user.bot).size;
Cela dit ça implique d'avoir mis en cache *tous* les utilisateurs donc ça peut poser problÚme (j'y reviens aprÚs).
La solution passant par les guilds fonctionne techniquement aussi (elle a le mĂȘme problĂšme du point de vue cache), mais ça implique de calculer plusieurs fois un mĂȘme utilisateur si il est sur plusieurs serveurs. Si ce n'est pas grave on peut juste accumuler les compteurs de membres non-bots de chaque serveur : ```js
const amnt = client.guilds.cache.reduce((acc, guild) => acc + guild.members.cache.filter((member) => !member.user.bot).size, 0);
Si il est important d'avoir de l'unicité, il faudrait récupérer tous membres uniques en mappant chaque guild à une collection d'users non bots et en les unifiant dans une seule collection, et enfin en récupérer la taille. C'est un peu plus difficile à faire mais toujours faisable. Cela dit à ce niveau-là autant juste passer par la propriété users du client, qui le fait en quelque sorte à notre place.
Le plus dur est cependant de tout rĂ©cupĂ©rer dans le cache (surtout si on a beaucoup de serveurs sur le bot). Le principe derriĂšre est un peu trop compliquĂ© Ă expliquer pour moi et j'ai vraiment pas envie de faire le code. La base du principe c'est de reprendre la mĂȘme base que ce que j'expliquais pour s'assurer de l'unicitĂ© sur chaque guild, mais en rĂ©cupĂ©rant tous les membres de chaque guild Ă chaque fois avant. Il faut Ă©viter de tout garder dans le cache cela dit parce que ça peut faire un peu lourd.
Mdrrrr je me disais bien que je me plantais quelque part đ€ŠđŒââïž Merci 
Yo ! Je suis en train de faire une API et niveau sécurité voilà quoi...
Enzo m'a dit qu'il fallait que je sécurise, et en fait j'ai un problÚme, j'ai des formulaires, et il faudrait que je protÚge mon API de potentielles attaques XSS
Donc j'ai lu un truc lĂ dessus qui me conseille d'installer et d'utiliser le module xss-clean ( https://www.npmjs.com/package/xss-clean?activeTab=readme )
Est-ce que vous pensez que ça suffit ? Si quelqu'un pourrait m'éclairer ce serait cool merci :)
ah nan en fin de compte c'est pas le mĂȘme truc
du coup j'ai pas vraiment de connaissances précises sur ce module précis mais en l'absence d'une réponse claire et précise je vais t'en donner une plus floue :
c'est une premiÚre étape et tu peux la compléter en t'informant sur les problématiques de sécurité de chaque élément que tu utilise
les xss c'est la base mais si par exemple tu utilise des sessions ou des tokens tu vas avoir certaines problématiques de sécurité auxquelles tu peux essayer de trouver des solutions
pour le sujet des xss c'est certainement suffisant (d'autant que la plupart des xss peuvent ĂȘtre Ă©vitĂ©es via les frameworks ui modernes et une bonne configuration du site) donc voilĂ
une bonne idée si la sécurité ça t'intéresse vraiment c'est d'essayer des ctf permanents du type tryhackme ou rootme, ça te permet de voir comment la plupart des failles sur les sites fonctionnent et ça te donnera des idées sur comment les contrer
D'accord merci, aprĂšs tu vois j'aimerais ne pas non plus avoir de grosses failles sĂ»r mon site Ă©tant donnĂ© qu'il va ĂȘtre rendu public et avoir beaucoup de visite sous peu, donc s'il y a des failles potentielles, je t'avoue que c'est assez emmerdant.
AprĂšs concrĂštement mon formulaire ne fait qu'envoyer sur une database un texte, et ensuite ça l'envoie sur Discord. Donc je ne comprends pas trop oĂč serait la faille Ă©tant donnĂ© que la fonction rĂ©cupĂšres juste la value et elle la stocke. Est-ce que c'est vraiment dangereux ?
le plus susceptible c'est des injections sql mais globalement en prĂ©parant tes requĂȘtes ça devrait aller
Mais comment est-ce qu'ils pourraient faire ?
Et qu'appelles-tu prĂ©parer les requĂȘtes ?
un truc classique c'est de mettre '; DELETE * FROM table;
tu peux faire plein de requĂȘtes
littĂ©ralement ce que j'ai dit, faire une requĂȘte prĂ©parĂ©e
je sais pas quelle db tu utilise mais en fonction le driver te permettra forcĂ©ment de faire des requĂȘtes prĂ©parĂ©es
AH et quand je fais une requĂȘtes pour insĂ©rer le texte ça delete all
voilĂ par exemple
mysql
on peut faire pire
yep du coup c'est sûr

je te laisse t'informer sur les injections sql de maniÚre générale
oui je vais m'informer car je ne sais pas ce que t'appelles préparées
sinon je peux faire une fonction qui enlĂšve tous les SELECT DELETE etc
nan ça c'est de la débrouille et t'en as pas besoin
d'autant que tu penseras pas Ă tout
fais des requĂȘtes prĂ©parĂ©es
oh merci
ah toi tu use heroku pour Taink Bot ?
nan j'ai fait des tests sur vps payant mais plusieurs de mes bots ont été host sur heroku sans aucun problÚme
Perso j'ai eu beaucoup de problĂšmes
le souci c'est qu'il y a une limite de temps mais ça si ton bot est pas actif y a jamais de souci
Downs, crash, lenteur Ă en crever
oui mais il se met hors-ligne dÚs que rien ne se passe donc des fois il répond pas
bah ça c'est normal
il faut juste le remettre en route
aprĂšs tu peux avoir d'autres services, glitch notamment
roh sinon y'a sapinet
généralement tu peux passer par des plus petites structures mais dans la majorité des cas le truc dure pas plus de 1 an parce que tu peux pas maintenir un hébergement stable sur une telle période si tu fais pas payer quelques personnes
ouais franchement go payer un truc
ça c'est payant ?
sapinet je connais pas mais t'as plein de services horaires trĂšs bons comme aws
Oui, et c'est un super hĂ©bergeur honnĂȘtement
y'a quasi 0 downs
oui voilà avant j'étais chez AWS mais j'ai usé mon temps gratuit donc j'ai été sur Azure, puis pareil donc je suis chez GCP
ah oui cool
yep mais ça ça dure qu'un temps
Et tous les bots de BTL, donc qui gÚre énormément de messages
orion je suppose
Oui
et la db tu la fais avec MongoDB ?
Le VPS à 3⏠a explosé par contre
xD
Et merci @timid loom je crois que j'ai compris le principe des requĂȘtes prĂ©parĂ©es 
Grafikart a fait un tuto sur ça je crois
đ
il a dit mysql
@slim anvil c'est quoi le service déjà sur lequel on héberge le site?
yes c'est ça
car faut avoir un build
nan je cherchais juste
mais techniquement on est d'accord que un site qui est build c'est considéré comme un site statique une fois build nan?
Donc si je fais par exemple
db.prepare('SELECT * FROM users WHERE ID = ? AND jsp = ?')
db.execute('277518283576705034', 'moinonplus')
ça va faire comme si j'avais fait
db.query(`SELECT * FROM users WHERE ID = '277518283576705034' AND jsp = 'moinonplus'`)
c'est ça ?
logiquement oui
ouais, sauf que la table tu devrais l'Ă©crire toi mĂȘme
ouais attends mauvais exemple
sers t'en seulement sur les données
le reste tu peux avoir des requĂȘtes prĂ©dĂ©finies dans un controller
voilà comme ça du coup
Ah ça marche comme ça apparement
connection.query('SELECT * FROM `books` WHERE `author` = ?', ['David'], function (error, results, fields) {
// error will be an Error if one occurred during the query
// results will contain the results of the query
// fields will contain information about the returned results fields (if any)
});
surement
bonjour je viens de créer mon bot musique mais quand je fait la commande sur le salon discord je n'ai aucune réponse de ça part, quelqu'un pourrait m'aider svp ?
bonjour, il faudrait que tu montres ton code pour que les gens puissent voir oĂč tu bloques (et potentiellement une erreur)
Roh trop rapide
oui désoler j'avais oublier
quand je mes ma commande j'ai trouve une erreur dans le terminal et le bot se deconnecte
c'est quoi l'erreur dans le terminal?
ligne 12 ta mis une virgule au lieu d'un point
trop rapide pour moi bob
oui đ
toujours la mĂȘme erreur?
content is not defined :)

