#javascript-typescript

1 messages · Page 106 of 1

misty vapor
#

C pour sa que je demande 😭

desert dust
#

Un plugin se code en JavaScript

dire latch
#

Java, pas javascript

misty parcel
#

mdr ?

desert dust
#

Fait attention avec les }])ou" il faut toujours que sa se referme après ta ligne de code7

misty vapor
desert dust
#

envoie un screen du code

#

et de l'erreur

misty vapor
#

Je peut pas trop la je suis pas chez moi je fait sa se soir ou demain midi

sharp grail
misty vapor
#

Moi c un launcher que je fait

desert dust
#

@sharp grail je parlais d'un plugin mais oui un launcher se code en Java mais pas un plugin

sharp grail
#

heu

#

tu confonds les deux je crois mdr

misty vapor
#

Nan un plugin c en java

dire latch
#

Plugin = Java

#

Launcher = JS

desert dust
#

ah dl

dire latch
#

Ou autres

desert dust
#

dsl

misty vapor
#

Vous jouez à Minecraft ou pas ?

desert dust
#

oui

misty vapor
#

Cool

sharp grail
#

Bref, si tu veux qu'on t'aide, il nous faudra un peu plus d'infos, du genre ce que tu utilises (framework), où ça ne marche pas, qu'est ce que c'est censé faire , le code etc.

misty vapor
#

Oe je vous envoie lames erreur demain je pense

#

Les*

misty parcel
#

. 🙏

sharp grail
#

ah yep !

#

en gros

#

<TextChannel>.bulkDelete et <CommandInteraction>.reply sont tous les deux asynchrones

misty parcel
#

ok

sharp grail
#

si tu veux qu'ils s'executent dans l'ordre que tu souhaites, utilise await ou .then 👀

misty parcel
#

ah ok

#

ok merci

onyx dagger
#

Salut les gars, je viens de me lancer dans le développement en javascript sur visual studio code et j'essaye de faire des auto threads et auto réactions a chaque fois qu'un message est envoyer dans un certain channel.

Mes problèmes :

-Je sais pas comment faire un thread auto
-Je sais pas comment faire un algorithme (ex: je veux que les threads auto et que les réaction auto s'active que dans un salon spécifique)

Mes réussites (oui j'en ai, heureusement):

-J'arrive a faire des réactions auto

Mon code :

Client.on("message", message => {
console.log("auto réaction et auto threads");
message.react("943609264117792769")
channel.threads.create({
name: 'z',
autoArchiveDuration: 60,
reason: 'test',
});
});

Si qlq pourrait m'aider ce serai juste : 👌
Je galère depuis un petit bout de temps

glass cargo
#

Il est hyper détaillé !

onyx dagger
#

Je vais voir ca

#

merci

#

(je savais pas qu'il y avait un guide mdrr)

glass cargo
#

^^

onyx dagger
#

tu gere vrmt

#

merci

onyx dagger
#

Client.on("message", message => {
channel.threads
.create({
name: 'test',
autoArchiveDuration: 60,
type: 'GUILD_PRIVATE_THREAD',
reason: 'test',
})
.then(threadChannel => console.log(threadChannel))
.catch(console.error);
});

onyx dagger
#

quelqu'un pourrait m'aider?

hazy mirage
onyx dagger
#

bah en fait je veux qu'a chaque fois que le bot voit un message, bah il créer un fil privé

#

@hazy mirage

hazy mirage
#

dans un channel en particulier ou simplement sur le message en question?

onyx dagger
#

sur n'importe quel message qu'il voit

hazy mirage
#

rajoute message. devant le channel alors je pense

sharp grail
onyx dagger
#

A peu près, je viens de commencer je regarde des vidéos de base

onyx dagger
#

quand j'envoie un message pour tester

dire latch
#

Normal

dire latch
keen narwhal
#

bonsoir j'aimerai savoir si quelqu'un serai dispo pour m'aidez j'ai cette erreur lorsque je build mon projet react avec webpack

primal knoll
#

Bonsoir, je débute complet en javascript. Mon index est index.js et j'ai un autre fichier de code. J'essaye de faire le lien dans l'index pour lui dire "prends en compte tel fichier de code" mais je n'y parviens pas, cela me donne une erreur comme quoi je dois définir les intents.
J'ai trouvé sur un forum qu'il suffisait simplement d'ajouter sur l'index : require('./help.js'); , et que cela suffirait.. quelqu'un peut-il m'orienter là où je loupe quelque chose ?

onyx dagger
dire latch
primal knoll
# dire latch Pour faire quoi exactement ?

qu'il prenne en compte les lignes de code d'une autre page .js (située dans le même dossier qu'index.js) afin de pouvoir utiliser les commandes qui y sont présentes

#

comme si je lui disais d'importer une page de code en gros

dire latch
#

Ba faut set tes commandes

#

Look sur google et autres pour savoir comment faire 🙂

primal knoll
#

les commandes sont faites, les fonctions sont définies, les constantes aussi

dire latch
#

Screen voir

primal knoll
#

@dire latch voilà j'voudrais juste que le code (qui est prêt) dans le fichier metar.js soit importé dans l'index, qu'il comprenne qu'il doit prendre en compte ce qu'il y a dedans

#

j'ai vu qu'il y avait les fonctions import / export mais j'me suis un peu perdu là dedans, et j'ai vu qu'avec require c'était "plus simple"

dire latch
#

Faut les exports oui @primal knoll

primal knoll
#

Okay

onyx dagger
#

Ca a marché sauf que le bot créer un fil a l'infini (quand il détecte son fil, il en recrée un)
Le code :
Client.on("messageCreate", message => { console.log("auto réaction et auto threads"); message.react("943609264117792769"); message.channel.threads .create({ name: 'test', autoArchiveDuration: 60, reason: 'test', }) .then(threadChannel => console.log(threadChannel)) .catch(console.error); });

#

comment je peux faire pour qu'il ouvre les fils que pour les autres personnes que lui?

dire latch
onyx dagger
dire latch
floral bolt
#

Salut j'essaye de save des emoji dans une db avec adonisjs mais 😁 ressors ???? vous auriez une idée ?

red torrent
red torrent
#

Si ta base de données est déjà en UTF-8mb4 il faut que le transfert de données se fasse en UTF-8mb4 aussi

#

Pour ce faire il faut définir charset ou default-character-set (en fonction du système de gestion de ta base de données) en UTF-8mb4 également

floral bolt
keen narwhal
civic dragon
keen narwhal
#

Je veux ajouter un user id a un datapost

civic dragon
keen narwhal
#

je suis entraion d'apprendre en faisant un projet

keen narwhal
charred lake
#

Si des gens sont calés en bot discord, j'ai une erreur quand j'essai d'utiliser le GuildManager : DiscordAPIError: Missing Access

Vous avez une idée d'où ça peut venir ?

jovial sparrow
#

ça peut être les intents peut être

#

envoie une image du code avec l'erreur et la ligne d'erreur

lone flax
#
  • montre toute l'erreur
charred lake
#

Voici toute l'erreur

#

Et oui il est administrateur

#

Mes intents :

intents: [
                Discord.Intents.FLAGS.GUILDS
            ],
jovial sparrow
#

Ton token est bon ?

charred lake
#

Oui car il arrive à ce connecter

jovial sparrow
#

l'erreur elle provient de quel niveau dans ton code ...

charred lake
#

C'est quand j'utilise console.log(client.guilds.fetch(process.env.SERVER_ID));
que ça plante

#

Dans le but de pouvoir récupérer le nombre d'utilisateurs

#

Peut être que je transmet la mauvaise info en paramètre

jovial sparrow
#

essaye sa

const guild = client.channels.cache.get(process.env.SERVER_ID)
console.log(guild.memberCount)
charred lake
#

undefined

jovial sparrow
#

juste pour tester, met l'id manuellement

#

cache.get('id')

charred lake
#

Vas y

#

Pareil, je précise mon code est dans le then du client.login()

#

Je sais pas si c'est la bonne méthode

#
return new Promise((resolve ,reject)=>{
        const client = new Discord.Client({
            intents: [
                Discord.Intents.FLAGS.GUILDS
            ],
        })
        client.on("ready", () => {
            console.log("Bot prêt")
        })
        client.login(process.env.DISCORD_TOKEN).then(() => {
            client.user.setStatus("online")
            client.user.setActivity("🤘 Création en cours...")
            const guild = client.channels.cache.get("id");
            console.log(guild)
            resolve();
        }).catch(() => {
            reject();
        })
    })
#

Pour l'instant voilà mon code

jovial sparrow
#

ben ça dépend tu veux faire quoi et ou

#

et console.log(guild.memberCount)

#

et à la place de id

#

met ton guildID

charred lake
#

J'ai remplacé l'id par mon id de channel

#

Et le guild.memberCount va rien me retourner car guild est vide

jovial sparrow
#

met le dans le onReady déjà je comprend pas pourquoi tu passes ta promesse dans le login ça n'a rien à faire la

#

client.login(process.env.DISCORD_TOKEN) tout en bas de ton server

#

et point barre tu as pas à y toucher

charred lake
#

Ok, ça c'est bon

#

Mais ça ne change rien

jovial sparrow
#

client.on("ready", () => {
console.log("Bot prêt")
client.user.setStatus("online")
client.user.setActivity("🤘 Création en cours...")
const guild = client.channels.cache.get("id");
console.log(guild.memberCount)
})

#

ça passe pas ?

charred lake
#

Undefined

#

C'est étonnant

jovial sparrow
#

t'es en v13 ?

#

et l'id est bonne ?

#

tu prends bien l'id d'ici

charred lake
#

V-13 yes

#

Oui je prend l'ID du serveur

#

Le bot est dessus, mais pas invité par le créateur. Invité par un administrateur, je ne sais pas si ça peut jouer

jovial sparrow
#

peut importe

#

il a la perm admin ?

charred lake
#

J'ai trouvé

jovial sparrow
#

c'était quoi ?

charred lake
#

La commande à utiliser est

#

client.guilds.cache.get

jovial sparrow
#

ben oui c'est un guild lol, autant pour moi ^^

charred lake
#

😉

#

Merci pour le coup de main

jovial sparrow
#

Pas de soucis

onyx dagger
#

Yo!
J'ai pour but de créer un bot qui ouvre des threads et met un réaction a chaque fois qu'il voit un message. J'ai réussi a faire en sorte qu'il auto react et auto thread a chaque message. Problème, le bot essaye d'ouvrir un thread dans un thread, ce qui est impossible. Quelqu'un pourrait m'aider a modifier mon script pour que le bot ne prenne pas en compte les messages envoyer dans les threads? (j'ai débuter hier dans le dévloppement)

Mon script/code :

`const Discord = require("discord.js");
const Client = new Discord.Client({
intents: ["GUILDS", "GUILD_MESSAGES", "GUILD_INTEGRATIONS"]
});

const token = require("./token.json");

Client.on("ready", async () =>{
console.log("bot opérationnel");
Client.user.setStatus("online");
Client.user.setActivity("MEME [FR]", {type: 'WATCHING'});

});

Client.on("messageCreate", message => {
console.log("auto réaction et auto threads");
if(message.author.bot) return;

message.react("943609264117792769");
if(message.author.bot) return;

message.channel.threads
.create({
name: 'si tu veux réagir au meme de au dessus, parle dans ce fil.',
autoArchiveDuration: 60,
reason: 'test',
})
.then(threadChannel => console.log(threadChannel))
.catch(console.error);
});

Client.login(token.token);`

Voila. Merci d'avance

jovial sparrow
#

Mhh j'ai pas encore utiliser les threads mais la dans ton code je vois pas ou il ouvre un thread dans un thread, tu as une erreur quelque chose ?

onyx dagger
#

car sinon il va essayer de créer un thread dans un thread

#

alors que c'est impossible

#

et ca fait des erreurs

civic dragon
jovial sparrow
#

On va essayer de regarder sa, fais moi passer les erreurs s'il te plais

jovial sparrow
#

tu peux bloquer avec if (message.author.user) return; de la même manière que tu bloques si c'est un bot, je sais pas si c'est réellement sa que tu veux

onyx dagger
#

En fait, je veux que quand il voit un message dans un thread, mon code ne s'applique pas

onyx dagger
jovial sparrow
#

Ok attends je regarde un peu comment ça se passe les threads, j'ai jamais eu l'utilité encore

onyx dagger
#

Ok

#

Merci

#

beaucoup

#

un truc comme
if (le message est dans un thread) return

jovial sparrow
#

ok

#

console.log(threadChannel)

#

montre moi ton log stp

onyx dagger
#

c'est a dire?

#

console de débugage?

jovial sparrow
#

ben il te log quoi avec le console log ?

#

non le terminal normal, fin ta console quoi

onyx dagger
#

ah ok

jovial sparrow
#

montre moi ce qu'il te log le console.log stp

onyx dagger
#

quand j'envoie un message dans un thread?

jovial sparrow
#

.then(threadChannel => console.log(threadChannel))

#

ça te log un truc non ?

onyx dagger
#

quand j'envoie un message dans un thread le msg d'erreur : Cannot read properties of undefined (reading 'create')

onyx dagger
jovial sparrow
#

essaye juste pour voir

#

if (message.startThread) return;

onyx dagger
#

ok

jovial sparrow
#

mhh ben non

onyx dagger
# jovial sparrow if (message.startThread) return;

`const Discord = require("discord.js");
const Client = new Discord.Client({
intents: ["GUILDS", "GUILD_MESSAGES", "GUILD_INTEGRATIONS"]
});

const token = require("./token.json");

Client.on("ready", async () =>{
console.log("bot opérationnel");
Client.user.setStatus("online");
Client.user.setActivity("MEME [FR]", {type: 'WATCHING'});

});

Client.on("messageCreate", message => {
console.log("auto réaction et auto threads");

if(message.startThread)
if(message.author.bot) return;
message.react("943609264117792769");

if(message.startThread)
if(message.author.bot) return;
message.channel.threads
.create({
name: 'si tu veux réagir au meme de au dessus, parle dans ce fil.',
autoArchiveDuration: 60,
reason: 'test',
})
.then(threadChannel => console.log(threadChannel))
.catch(console.error);
});

Client.login(token.token);`

#

comme ca?

#

au pire stv jte fait un stream et appel pour t'expliquer ce que je veux faire et tt

#

si t'as le temps et si tu veux bien sur

jovial sparrow
#

j'ai compris ce que tu veux faire

onyx dagger
#

Ah ok

jovial sparrow
#

je regarde par rapport à la doc des threads, j'ai jamais use

#

mais du coup

onyx dagger
#

Ok

jovial sparrow
#

si t'envoie un message dans un channel normal

#

ça te créer un thread on est ok ?

onyx dagger
#

Ouais

jovial sparrow
#

et la ça te log rien ?

onyx dagger
#

ca c'était déja ok

jovial sparrow
#

oui je sais

#

j'essaye de choper le log pour voir comment l'objet est architecturé

onyx dagger
#

Ah ok

#

je met ton code ou?

jovial sparrow
#

Mais

#

2s

jovial sparrow
#

lorsque ça créer un thread (donc avec un message dans un channel normal)

onyx dagger
jovial sparrow
#

ça te log rien ?

onyx dagger
#

si, ca me log ducoup "auto réaction et auto threads"

jovial sparrow
#

oui normal

#

mais

#

.then(threadChannel => console.log(threadChannel))

#

celui ci

#

il te log rien

#

tu as juste "auto réaction et auto threads" ?

onyx dagger
#

ca me log ca aussi ThreadChannel {type: 'GUILD_PUBLIC_THREAD', guild: Guild, guildId: '937026581526900806', messages: MessageManager, members: ThreadMemberManager, …}

jovial sparrow
#

ok parfait

#

essaye de rajouter

#

console.log(threadChannel.messages))

#

et envoie moi ce que ça te log

onyx dagger
#

ou?

jovial sparrow
#

.then(threadChannel => console.log(threadChannel.messages))

onyx dagger
#

Comme ca ?
`Client.on("messageCreate", message => {
console.log("auto réaction et auto threads");

if(message.startThread)
if(message.author.bot) return;
message.react("943609264117792769");

if(message.startThread)
if(message.author.bot) return;
message.channel.threads
.create({
name: 'si tu veux réagir au meme de au dessus, parle dans ce fil.',
autoArchiveDuration: 60,
reason: 'test',
})
.then(threadChannel => console.log(threadChannel))
.catch(console.error);
.then(threadChannel => console.log(threadChannel.messages))
});`

jovial sparrow
#

non

#

rajoute juste

#

.messages

#

message.channel.threads
.create({
name: 'si tu veux réagir au meme de au dessus, parle dans ce fil.',
autoArchiveDuration: 60,
reason: 'test',
})
.then(threadChannel => console.log(threadChannel.messages))
.catch(console.error);
});

#

et envoie moi le retour du console.log stp

onyx dagger
#

Tu peux m'envoyer le code complet 😅

#

a partir de "Client.on

#

si tu peux

jovial sparrow
#
  console.log("auto réaction et auto threads");
  if(message.author.bot) return;
  message.react("943609264117792769");
  message.channel.threads
  .create({
     name: 'si tu veux réagir au meme de au dessus, parle dans ce fil.',
     autoArchiveDuration: 60,
     reason: 'test',
   })
  .then(threadChannel => console.log(threadChannel.messages))
  .catch(console.error);
});```
#

comme sa

#

et dis moi ce que ça te log quand tu envoie un message dans un channel normal

onyx dagger
#

Okay ca me log ca : auto réaction et auto threads index.js:16 MessageManager {channel: ThreadChannel, client: Client, holds: ƒ, _cache: Map(0)}

jovial sparrow
#

alors essaye sa pour voir

#

je pense pas, mais on sait jamais

#

ah mais att

onyx dagger
#

Je remplace tout? (j'ai fait une backup du code)

#

ah

#

t'as supp

#

c'est surement pas le bon alors mdrr

jovial sparrow
#
Client.on("messageCreate", message => {
    console.log("auto réaction et auto threads")
    if (message.author.bot) return
    if (message.channel.threads) return
    message.react("943609264117792769")
    message.channel.threads.create({
       name: 'si tu veux réagir au meme de au dessus, parle dans ce fil.',
       autoArchiveDuration: 60,
       reason: 'test',
    })
  .then(threadChannel => console.log(threadChannel))
  .catch(console.error)
})```
#

essaye comme sa

#

pour voir

onyx dagger
#

Ok

jovial sparrow
#

et dis moi

onyx dagger
#

ca ne met pas le auto réaction ni auto thread

jovial sparrow
#

envoie moi ton projet complet

#

je vais regarder sur mon pc directement

onyx dagger
#

et dans le log ca me met Process exited with code 1 C:\Program Files\nodejs\node.exe .\index.js bot opérationnel 2auto réaction et auto threads

jovial sparrow
#

envoie moi tout tes fichiers dans un .rar sans le node_modules et package-lock.json

onyx dagger
#

Ok

#

juste le index?

#

j'ai rien fait d'autre de toute facon 😅

jovial sparrow
#

jsp comment tu as construis ton architecture, envoie moi tout sans le node_modules et package-lock.json

#

ben alors le index et le package.json

#

parfait

#

si tu as que sa

onyx dagger
#

Ok

#

enfin j'ai mon config pour mon token

#

c tt

#

y'a que mon token dedans

jovial sparrow
#

osef

#

tkt

onyx dagger
#

ducoup je t'envoie index et package?

jovial sparrow
#

yep

jovial sparrow
#

@onyx dagger

Client.on("messageCreate", message => {
  console.log("auto réaction et auto threads")
  if (message.channel.type === 'GUILD_PUBLIC_THREAD') return
  if (message.author.bot) return
  message.channel.threads.create({
    name: 'si tu veux réagir au meme de au dessus, parle dans ce fil.',
    autoArchiveDuration: 60,
    reason: 'test',
  })
})
#

et voilà, tout simplement 🙂

#

je sais pas si tu as des thread privé ? car je vois le type GUILD_PUBLIC_THREAD

#

si c'est le cas faudra aussi rajouter
if (message.channel.type === 'GUILD_PRIVATE_THREAD') return

#

à voir si ça existe

onyx dagger
#

Merci infiniment ca marche parfaitement

#

Vraiment tu m'as beaucoup aider

jovial sparrow
#

Avec plaisir, aucun soucis

#

mais ça existe des threads privé ?

onyx dagger
#

Oep

#

mais il faut un certain boost level

jovial sparrow
#

du coup, ça doit pas être le même type, tu devrais avoir une erreur normalement dans un thread privé

#

si c'est le cas reviens vers moi je regarderais

onyx dagger
#

Okay

#

pour 'instant tout marche

lone flax
jovial sparrow
#

Oui avec les threads public il devrait pas y avoir de soucis

#
Client.on("messageCreate", message => {
  console.log("auto réaction et auto threads")
  if (message.channel.type === 'GUILD_PUBLIC_THREAD') return
  if (message.channel.type === 'GUILD_PRIVATE_THREAD') return
  if (message.author.bot) return
  message.channel.threads.create({
    name: 'si tu veux réagir au meme de au dessus, parle dans ce fil.',
    autoArchiveDuration: 60,
    reason: 'test',
  })
})```

Met le quand même comme sa tu es sûr que si jamais tu auras pas d'erreurs bêtement 🙂 (je viens de vérifier le type GUILD_PRIVATE_THREAD existe bel et bien)

@onyx dagger
onyx dagger
#

Okay

#

je vais mettre ca

#

merci encore

jovial sparrow
#

Avec plaisir, aucun soucis

onyx dagger
#

Maintenant il faudrait juste que le thread se créer a partir du message envoyer mais ca j'ai aucune idée de comment faire

jovial sparrow
#

C'est à dire ?

#

je vais partir au sport la mais je t'aide en rentrant si tu veux

onyx dagger
#

Okay

#

stv on pourra faire ca demain

onyx dagger
jovial sparrow
#

Mhh je sais pas si c'est possible mais je peux regarder en rentrant oui il n'y a pas de soucis

jovial sparrow
#

Sinon je pourrais te proposer une solution alternative (si jamais je trouve pas) ou le bot envoie le message de l'utilisateur et le ping

onyx dagger
#

Vraiment tu sais pas a quel point tu m'aide

jovial sparrow
#

On regarde ensemble quand je rentre, ping moi vers 20h max si tu as pas de nouvelles

onyx dagger
#

Okay

#

demain tu pourras?

#

parce que pt que je serais pas la

red torrent
# onyx dagger Okay

ou sinon tu peux directement vérifier s'il s'agit d'un thread (privé ou public avec la méthode isThread) ```js
if(message.channel.isThread()) return;

true bone
#

bonjour , je vous explique j'essaye d'apprendre a coder un bot et j'ai une erreur alors que j'ai suivit le debut de son tuto a la lettre

neat lintel
#

tu dois ajouter des intents a ton client

true bone
true bone
#

je doit ajouter quoi ? comme intents

neat lintel
#

ca dépend des évents que tu utilises

#

GUILDS minimum

true bone
# neat lintel ca dépend des évents que tu utilises

je suis vraiment au debut
https://www.youtube.com/watch?v=oye2Dk654hY&t=418s
a 12:37

▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬╣ Description ╠▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬

Bonjour à tous,
Aujourd'hui on se retrouve pour le premier épisode d'une serie sur la création d'un bot Discord. Si vous trouvez un défaut a cette vidéo, faites le moi parvenir. Vous pouvez aussi me proposer des commandes a faire avec le bot sous cette vidéo. N'oubliez pas de lâcher un gros li...

▶ Play video
neat lintel
#

c'est du djs 12

#

c'est déprécié ce tuto, cherches en un autre

true bone
neat lintel
#

nodejs (javascript) est le plus utilisé. Nodejs est spécialisé dans les applications en temps réel donc ca convient très bien. Mais tu peux utiliser le langage que tu veux (de préférence un langage que tu maîtrises).

past nimbus
#

L'avantage d'utiliser NodeJS c'est que tu n'aura pas l'API à gérer, ils ont préparé un package pour nous simplifier la vie

#

Et en plus il est compatible typescript

neat lintel
#

oui, ca après il y a des libs dans tous les langages c'est pas le problème

past nimbus
#

Elles se valent pas toute et sont pas toute officielles de discord donc il y a la place à l'erreur etc..

bitter mango
#

Bonjour, je suis en NodeJS et j'ai une commande qui fait que quand on rentre /mute [utilisateur] l'utilisateur est mute, sauf que si on mute un utilisateur qui s'appel "Le bateau" il ne va pas être mute, c'est "Le" qui va se faire mute je ne sais pas commment faire

past nimbus
#

Pourquoi tu n'utilises pas les slash commands ?

bitter mango
#

Moi ?

past nimbus
#

OUep

bitter mango
#

Je suis pas sur du bot discord c'est juste un système de chat en direct en web

torn fog
past nimbus
#

mybad

torn fog
#

Passe plutôt par les ID discord

#

Aaaah il n'est pas sur discord

#

Shit

#

x)

bitter mango
#

Mdrr

#

Du coup faudrait arriver à Split avec tout ce qu'il y a après le premier espace

torn fog
#

Pas oublier les "

languid goblet
bitter mango
languid goblet
#

je viens de trouver sa: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/String/replace
t'a juste a replace /mute par un string vide

La méthode replace() renvoie une nouvelle chaîne de caractères dans laquelle tout ou partie des correspondances à un modèle sont remplacées par un remplacement. Le modèle utilisé peut être une RegExp et le remplacement peut être une chaîne ou une fonction à appeler pour chaque correspondance. Si modèle est une chaîne de caractères, seule la prem...

bitter mango
#

D'acc Merci beaucoup !

languid goblet
#

derien

true bone
#

bonjour j'ai un probleme quand je fait node . pour start mon bot ça marque ça

languid goblet
#

par contre il faudrait que tu fasse en sorte que personne puissent s'appeler pareil

languid goblet
languid goblet
#

niquel

bitter mango
#
var username = message.replace("/mute ", "");
languid goblet
#

message.text.replace plutot?

bitter mango
#

ça fonctionne mercii

languid goblet
#

😂

true bone
#

et il y a quoi comme type ? je sais qu'il y a watching et playing mais il y a quoi d'autre

languid goblet
sharp grail
bitter mango
#

Pas faux merci j'essaie d'apprendre le node js c'est pour ça :)

charred lake
#

J'aurai besoin d'un p'tit coup de main, j'utilise

dis_client.on("guildMemberAdd", (member) => {
        console.log(member);
    })

Pour tenter d'avoir un console log quand un membre rejoint le serveur, mais impossible de le faire marcher, faut-il des permissions ou des intentes particulière ?

#

Le code est appelé au on.ready depuis une fonction dans un autre fichier je précise

#

J'ai cru comprendre qu'il fallait ajouter GUILD_Members je crois

charred lake
#

Je vais essayer de voir si mon code fonctionne mieux désormais !

true bone
#

j'ai un probleme j'ai 9 erreur alors que il tous relier c'est normal il y en a pas un qui est tous seule pourtnat

icy gust
#

async*

#

pas asycn

#

ligne 10

keen narwhal
#

Ah ouais des fois ça tiens à pas grand chose

icy gust
#

c'est pour ça qu'on utilise des ide qui nous aident pour trouver ce genre de typos x)

keen narwhal
#

Ah d'accord

true bone
icy gust
#

dr

true bone
icy gust
#

Un pb avec node

#

Honnêtement je sais pas trop essaies de faire un truc = require("x")(client)

icy gust
#

Oui

#

Ou est ce que tu as bien mis en module.exports ton handler ?

true bone
#

et je creer une const quoi ?

#

ouais

icy gust
#

Idk déso

true bone
icy gust
#

N'importe

#

Et évite de Ghost ping stp

true bone
#

ouais dsl

icy gust
#

?

wild bramble
#

Salut j'ai un problème ! Voici mon code : ```client.on("interactionCreate", (interaction) => {
if (interaction.isButton()) {
if (interaction.customId === "Open") {
nbTicket++;

        interaction.guild.channels.create("commande-" + nbTicket, {
            parent: "881244206818017291"
        }).then(channel => {
            var row = new Discord.MessageActionRow()
                .addComponents(
                    new Discord.MessageSelectMenu()
                        .setCustomId("select-commande")
                        .setPlaceholder("Selectionnez le domaine de votre commande :")
                        .addOptions([
                            {
                                label: "GLUA",
                                description: "Commande GLUA pour garry's mod !",
                                value: "optinglua"
                            },
                            {
                                label: "HTML, CSS",
                                description: "Commande HTML, CSS pour créer votre site internet !",
                                value: "optionweb"
                            }
                        ])
                )
            channel.send({
                content: "Choix de la commande :",
                components: [row]
            })
            if (interaction.isSelectMenu()) {
                if (interaction.customId === "select-commande") {
                    console.log(interaction.values);
                    
                    if(interaction.values == "optinglua"){
                        interaction.reply({content: "Commande GLUA"})
                    }
                }
            }
        })
    }
}

})quand je clique sur mon bouton rien ne se passe et cela me fait: echec de l'interaction```et mon console.log ne marche pas

true bone
true bone
torn fog
sharp grail
#

;-;

#
  1. Le mot clé console est global et accessible partout
  2. Ici tu tentes d'importer depuis le fichier console.log
  3. C'est absurde-
true bone
#

et la le index.js

#

et dans la video du mec ça affiche et moi rien

#

et voici aussi mon Events.js

wild bramble
true bone
torn fog
#

Déso j'ai jamais fait de programmation orienté objet pour faire un bot discord

torn fog
true bone
torn fog
#

pour la suite je ne sais pas

simple river
true bone
true bone
#

j'ai un problème quand je fait node . pour start mon bot ça marche sauf que si j'ai des erreur ça m'affiche rien et le status de mon bote marche pas et je reçois pas de message comme quoi il est en ligne
dites moi si vous voulez des screen
ou autres

past nimbus
#

Pour commencer on démarre son bot en utilisant le package.json
Ensuite oui il nous faudrait du code sinon ça va être compliqué

torn fog
#

Et c'est quoi les erreurs @true bone

true bone
#

et ça affiche pas non plus le message du bot comme quoi il est connecter

true bone
torn fog
true bone
torn fog
true bone
torn fog
true bone
#

je crois pas

#

comment je fait stp

torn fog
#

Bah ton console.log il est affiché ou pas ?

true bone
torn fog
#

et comme ça tu peux voir si il est executé

true bone
#

ça marche

#

dans index.js

burnt apex
#

Bonsoir, j'utilise ce code fourni par une API pour récuperer des donnés mais j'aimerai savoir comment je récupere seulement la donnés d'une ligne en particulier ?

lapis onyx
#

console.log(result.response.team)

burnt apex
#

j'obtiens ceci

lapis onyx
#

console.log(JSON.parse(result.response.team))

true bone
#

Bonjour , j'ai un problème en gros je suis entrain d'apprend a coder avec cette séries vidéos https://www.youtube.com/watch?v=SZYQYpRX-X8&t=1191s sauf que j'ai 3 souci

  • 1 : Le bot n'affiche pas de status

-2 : Je ne reçois pas de message dans le terminal quand je fait node . comme quoi il est en ligne ou même qu'il est connecter a la basse

-3 : je n'arrive pas a relier index.js avec ready.js

Voici mes fichiers
Index.js
https://sourceb.in/oQjKMqqNE7
EventNames.js
https://sourceb.in/FD75FFBJDR
Event.js
https://sourceb.in/U9LpnTby6S
ready.js
https://sourceb.in/2mCogsHZaI

Déroule moi c'est important.

//Prérequis\
Discord développeurs : https://discord.com/developers/

Visual Studio Code : https://code.visualstudio.com

Node.js : https://nodejs.org/en/

Documentation Discord.js : https://discord.js.org/#/

EventNames.js : https://sourceb.in/jm97tP2fA0

Permissions.js : https://sourceb.in/JDdN04mEiE
//Prérequ...

▶ Play video
floral walrus
#

Tu a installer node

true bone
true bone
# floral walrus Tu a installer node

si tu veut
en gros la si tu veut au lieu que ça me dise Je suis connecter (la phrase de mon bot quand je le lance) il me repond .
|| | '
et ça affiche pas le status
c'est une l'erreur du ASCII jsp comment ont le regle

misty vapor
#

je l'envoie ici ou en prv

sharp grail
#

Ici

misty vapor
#

okay voc ou pas ?

#

sa sera plus simple ?

misty vapor
true bone
peak cedar
#

Salut ptit soucis

true bone
peak cedar
#

Ça me soule ça fait 15min je cherche

true bone
cyan iron
peak cedar
peak cedar
cyan iron
#

Bien sûr les ... c'est le reste j'avais juste la flemme de recopier LUL

peak cedar
cyan iron
#

Montre toute l'erreur stp

peak cedar
cyan iron
# peak cedar

On voit pas à droite là tu peux montrer il me semble qu'il y a un truc

peak cedar
floral bolt
#

Il trouve juste pas la photo

cyan iron
#

Il te dit pas où il va chercher

floral bolt
#

Zekalia.png

cyan iron
#

Tente ./botconfig

peak cedar
floral bolt
#

C’est ça

#

Il manque juste le point

cyan iron
#

Si c'est pas ça alors casse tout

floral bolt
#

Pardon ../../botconfig/….

cyan iron
#

Déjà ce qu'il fait

peak cedar
#

C'est ça Merci @cyan iron ❤️

#

@floral boltMerci aussi bg

floral bolt
#

Ah oui je vois rien moi

cyan iron
#

No problemo

peak cedar
#

Encore moi

#

Jregarde avec le wiki

#

Mais eux ne def pas displayAvatarURL

cyan iron
#

Juste par rapport au problème de tout à l'heure, ton fichier commande est run depuis index.js j'imagine ?

peak cedar
#

C'est mon index

#

Jvais revoir tout ça parce que ça me soule ptit truc a la con comme ça 😂

cyan iron
#

V'la, donc c'est pour ça que c'est ./, car en fait c'est comme si tu étais dans le index.js
Donc tu prend dans le dossier dans lequel tu es

peak cedar
#

Ahhhh oeee

cyan iron
#

Normalement / sans le point c'est censé marcher

cyan iron
peak cedar
#

Nan sans le . Ça marcher pas mais bon trql la ça marche

cyan iron
#

Intéressant, faut que je teste après

#

Bref

peak cedar
#

Mais dcp une idée pour le displayAvatarURL ?

dire latch
#

Faut un ./ à chaque fois devant

cyan iron
#

Je look la doc

sharp grail
peak cedar
cyan iron
#

interaction.user n'est pas défini

sharp grail
#

interaction.user est undefined du coup

#

Oui

cyan iron
#

Ce qui est bizarre d'ailleurs, peut être que ton interaction n'est pas bien défini

#

Au moment où tu importe ton fichier

dire latch
#

console.log(interaction.user); et tu test

#

Même sans le user

cyan iron
peak cedar
#

Oui

cyan iron
#

Donc juste console log interaction

dire latch
#

Oui ba faut enlever le user 🙂

peak cedar
cyan iron
#

Et le console log ça a donné quoi ?

peak cedar
#

Rien 👀

dire latch
#

Ba si 🤔

#

Ya forcément eu un truc

peak cedar
#

Tu veux je le place Ou ?

dire latch
#

Ba au début

peak cedar
dire latch
#

Ah oui, screen ducoups 🙂

#

Car là, tu l'as mis en ligne 😦

peak cedar
cyan iron
#

Bah voilà

#

C'est un Message

#

Montre ton fichier

#

Bonne année

dire latch
#

Keske

#

Mdr

#

On est dans le futur

peak cedar
#

Const {
MessageEmbed,
MessageAttachment,
interaction
} = require("discord.js");
const config = require("../../botconfig/config.json");
var ee = require("../../botconfig/embed.json");
const settings = require("../../botconfig/settings.json");
const Canvas = require('canvas');
module.exports = {
name: "z", //the command name for execution & for helpcmd [OPTIONAL]
cooldown: 5, //the command cooldown for execution & for helpcmd [OPTIONAL]
memberpermissions: [], //Only allow members with specific Permissions to execute a Commmand [OPTIONAL]
requiredroles: [], //Only allow specific Users with a Role to execute a Command [OPTIONAL]
alloweduserids: [], //Only allow specific Users to execute a Command [OPTIONAL]
minargs: 0, // minimum args for the message, 0 == none [OPTIONAL]
maxargs: 0, // maximum args for the message, 0 == none [OPTIONAL]
minplusargs: 0, // minimum args for the message, splitted with "++" , 0 == none [OPTIONAL]
maxplusargs: 0, // maximum args for the message, splitted with "++" , 0 == none [OPTIONAL]
argsmissing_message: "", //Message if the user has not enough args / not enough plus args, which will be sent, leave emtpy / dont add, if you wanna use command.usage or the default message! [OPTIONAL]
argstoomany_message: "", //Message if the user has too many / not enough args / too many plus args, which will be sent, leave emtpy / dont add, if you wanna use command.usage or the default message! [OPTIONAL]
run: async (client, interaction, message, args, plusArgs, user, cmdUser, text, prefix) => {
console.log(interaction)

        const canvas = Canvas.createCanvas(700,250);
        const context = canvas.getContext('2d');

    const background = await Canvas.loadImage("./botconfig/img/zekalia.png");

    context.drawImage(background, 0, 0, canvas.width, canvas.height);

    context.strokeStyle = '#0049FF';
#

context.strokeRect(0, 0, canvas.width, canvas.height);

    const attachment = new MessageAttachment(canvas.toBuffer(), 'profile-image.png');

    const avatar = await Canvas.loadImage(interaction.user.displayAvatarURL({ format: 'jpg' }));


      // Pick up the pen
      context.beginPath();

      // Start the arc to form a circle
      context.arc(125, 125, 100, 0, Math.PI * 2, true);

      // Put the pen down
      context.closePath();

      // Clip off the region you drew on
      context.clip();

    
    interaction.reply({ files: [attachment] });

}

}

dire latch
#

"Demain à 00:00"

cyan iron
#

J'imagine que tu lui donne client, message, args

jovial lion
#

Bonsoir ! j'ai une petite erreur dans mon code je n'arrive pas très bien à comprendre la provenance, si quelqu'un pourrait m'aider merci 😉

dire latch
#

@jovial lion tu peut screen totalement l'erreur seul stp

peak cedar
#

@cyan ironVraiment deso me suis endormi Comme une mer**

cyan iron
#

Tkt

peak cedar
#

Mais dcp j'ai toujours pas trouver 😭

cyan iron
#

Du coup t'as fait ce que je t'ai dit ? :') ?

cyan iron
#

Je pense que tu t'es trompé quand tu donnes les arguments à ta fonction run

peak cedar
#

Parce que la je vois vrm pas 💀

cyan iron
#

Bah les donner correctement

peak cedar
#

Tout marche jusqu'au displayAvatarURL

sharp grail
peak cedar
peak cedar
sharp grail
#

Index ou dans tes events ? x)

peak cedar
sharp grail
#

C'est bien une slash que tu éxecutes ?

peak cedar
#

Nop

sharp grail
#

Ah bah voilà x)

#

fichier interactionCreate et messageCreate ? 👀 comment marche ton handler ? 🤔

peak cedar
#

Att la ça marche mais nouveau prob

#

Ça marche

#

Mais y'a pas l'avartar du joueur

sharp grail
peak cedar
#

Y veux toujours pas

#

Y'a pas d'erreur ni rien

sharp grail
#

faut que tu draw ton image

#

et que tu load l'attachment après

peak cedar
sharp grail
#

l'attachment

#

faut le load après

peak cedar
sharp grail
#

bah ;-;

#

tu mets const attachment = ... après avoir draw ton image

#

sinon ton attachment n'aura pas les derniers changements effectués sur ton canva

#

donc pas d'avatar

dire latch
#

Ni d'@sharp grail

sharp grail
#

?

dire latch
#

??

sharp grail
dire latch
#

😂

peak cedar
sharp grail
#

;-;

peak cedar
sharp grail
#

je vois pas ce qui a changé par rapport au dernier screen

#
// ...

const avatar = await Canvas.loadImage(interaction.user.displayAvatarURL({ format: 'jpg' }));

context.drawImage(avatar, 25, 0, 200, canvas.heigt);

const attachment = new MessageAttachment(canvas.toBuffer(), 'profile-image.png');

interaction.reply({ files: [attachment] });
#

@peak cedar quelque chose comme ça plutot

peak cedar
sharp grail
#

t'as enregistré et relancé ? tu fais la bonne commande?

peak cedar
sharp grail
#

c'est quoi la différence entre les deux codes?

peak cedar
#

L'ordre

sharp grail
# peak cedar

Littéralement le même entre celui ci et celui la mais bon x)

peak cedar
#

Chepa la ça marche

#

😂

full prawn
#

Bonjour, comment faire pour faire en sorte de fermer une citation ? Pour poursuivre en texte normal. Je commence avec >>> texte mais je ne sais pas comment la clôturer

red torrent
plain crystal
#

test
test
test

glass cargo
#

Ou maj + enter x2

charred lake
#

Hello, j'aurais bien besoin d'un petit coup de main

#

J'aimerai faire en sorte d'attendre une action d'un utilisateur avant de passer à l'interation suivante de ma boucle, alors voici ma boucle :

questions.forEach(async (question) => {
   await waitUserReponse(channel_create).then(() => {
         channel_create.send(question[1]);
   })
});

Qui appelle :

async function waitUserReponse(channel_create) {
    return new Promise(resolve => {
        dis_client.on("messageCreate", (message) => {
            if (message.channelId == channel_create.id && message.author.id != process.env.BOT_ID) {
                console.log('msg');
                resolve();
            } 
        })
    });
}
#

Mais je ne comprend pas pourquoi, il me attend bien la première fois, une fois que j'ai fais l'action au lieu d'executer mon console.log puis de resolve(), puis ensuite de patienter à nouveau la prochaine action, il boucle sans prendre en compte l'attente

red torrent
charred lake
#

Arh merde, faudrait que je la remplace alors

red torrent
#

Tu dois utiliser Promise.all et <Array>.map à la place

charred lake
#

Alors je vais tenter, j'utilise pas souvent .map

red torrent
charred lake
#

For, va me sortir le même soucis non ?

#

Car impossible de définir un await dans une boucle for

red torrent
#
for (question of questions) {
  await waitUserResponse(channel_create).then(() => channel_create.send(question[1]));
}
red torrent
charred lake
#

Effectivement, ça fonctionne ! Youhou, je ne pensais pas qu'il était possible d'utiliser un await dans un for basique

red torrent
#

D'ailleurs dans ton cas il faut utiliser for car les questions vont être posées à la suite et pas toutes en même temps

charred lake
#

D'accord, bon à savoir, merci beaucoup pour ton coup de main

jovial lion
dire latch
#

Faut que tu check quand la personne change son pseudo @jovial lion

#

Pas sur tout les events dans guildMemberUpdate

jovial lion
dire latch
floral bolt
#

Newmember.user.username

#

Ou l’inverse j’sais plus

jovial lion
dire latch
#

Et ma solution ? @jovial lion

jovial lion
floral bolt
#

Alors juste newmember.nickname

jovial lion
viral tiger
#

Salut, j'ai télécharger ce bot sur github, j'ai essayer de régler certaines erreur mais je bloque sur celle-ci puisque c'est une propriété qui n'existe pas mais je suis obligé de la laisser pour que le bot marche correctement

viral tiger
floral bolt
jovial lion
past nimbus
#

Tu as lu le message d'erreur ?

glass cargo
#

J’pense pas x)

past nimbus
#

C'était une question réciproque x) en effet j'avais déjà la réponse mdr

full prawn
#

Merci les gars pour votre aide plus haut. J’ai une autre petite question, y a il une ligne de code pour palier au problème de la limite de caractères « invalid from body must be 2000 or fewer in length » ?

#

Pour augmenter cette limite

dire latch
jovial lion
sharp grail
ancient sonnetBOT
#
Citation du message de Max.#8888 posté dans #partage-ton-code

QuoteS Vu que Discord.JS a décidé de retirer sa fonction util.splitMessage dans sa dernière version (allez savoir pourquoi), j'ai décidé de refaire moi-même une version un peu identique.

Vous rentrez un string et elle s'assure de sortir un array de substrings avec une taille moins grande ou égale à la taille que vous avez rentré en paramètre.
Très utile quand on veut envoyer des messages sur Discord et qu'on ne peut pas savoir quelle taille ils feront à l'avance, pour s'assurer qu'ils pourront quand même s'envoyer.

function splitMessage(message, maxLength) {
    let splitArray = [];
    let count = 0;
    let index = 0;

    for (const word of message.split(' ')) {
        if (count + word.length > maxLength) {
            index++;
            count = 0;
        }
        splitArray[index] = (splitArray[index] ? `${splitArray[index]} ${word}` : word);
        count += word.length;
    }

    return (splitArray);
};
``` ![QuoteE](https://cdn.discordapp.com/emojis/864578798538981376.webp?size=128 "QuoteE")

➜ [Voir le message original]([#partage-ton-code message](/guild/223070469148901376/channel/734151431329677374/))
ashen rapids
sharp grail
jovial lion
sharp grail
sand venture
#

Salut j'aimerais savoir si ce que j'ai récupérer existe dans les fichier si oui afficher ce qui est marquer dans le input sinon afficher une image que j'aurais choisie
<script>
function changeImage() {
var fichier = $("input[name='Genre']").val();
$("#cart").attr("src", fichier);
$("#cart").attr("src", "/personnage/Bisky_portrait.webp");

}

</script>

sharp grail
jovial lion
sharp grail
#

Non

jovial lion
true bone
floral walrus
#

Tu suis un tuto ???

full prawn
sharp grail
full prawn
sharp grail
#
// tu peux par exemple importer la fonction depuis un autre fichier 

for (const m of splitMessage('ton message', 2000)) {

     await <Channel>.send({ content: m }));

}

#

Quelque chose comme ça 🤔

#

Tout est relativement indiqué x)

#

Par contre attention

#

Ton message ne sera pas découpé de façon logique

jovial lion
#

Bonsoir, je cherche une personne pouvant m'aider,
Je cherche à faire en sorte que si un membre met "DEK-" devant son pseudo il gagne un rôle et si il l'enlève ça enlève le rôle, voici ce que j'ai déjà essayé seulement ça ne marche pas

keen narwhal
#

Bonsoir

#

J’ai pas touché à mon bot que dalle et il a crash..

#

Avec cette erreur quand j’essaye de le redémarrer

red torrent
# keen narwhal

Tu as probablement oublié un export dans ton fichier Command, ou alors c'est que tu récupères des fichiers dynamiquement et l'un d'eux n'est pas une classe

fading glacier
jovial lion
twin ibex
#

non ca prend le username de mémoire

red torrent
red torrent
full prawn
#

Hum @sharp grail tu peux me mp please 😂

jovial lion
floral bolt
#

iici

jovial lion
#
const { Client } = require("discord.js");
const client = new Client({
    intents: ["GUILDS", "GUILD_BANS", "GUILD_INVITES", "GUILD_MEMBERS", "GUILD_MESSAGES"],
    allowedMentions: {
        parse: ["everyone", "roles", "users"],
        repliedUser: true
    },
    partials: ["CHANNEL", "GUILD_MEMBER", "MESSAGE", "REACTION", "USER"]
});

//Handlers
require("./handlers/client")(client);
require("./handlers/events")(client);
require("./handlers/commands")(client);
require("./handlers/slash_commands")(client);

client.on('guildMemberUpdate', async (oldMember, newMember) => {
  console.log(newMember)
  let role1 = newMember.guild.roles.cache.get("828035299191029832");
  if (oldMember.nickname !== newMember.nickname) {
    if (newMember.nickname.startsWith('DEK-')) {
      newMember.roles.add(role1);
    } else {
      if(newMember.roles.has(role1)) {
        newMember.roles.remove(role1);
      };
    };
  };
});

client.on('userUpdate', async (oldMember, newMember) => {
  let role2 = newMember.guild.roles.cache.get("955224037427146783");
  if (oldUser.username != newUser.username) {
    if (newMember.username.startsWith('DEK-')) {
      newMember.roles.add(role2);
    } else {
      if(newMember.roles.has(role2)) {
        newMember.roles.remove(role2);
      };
    };
  };
});

client.login(client.config.token);
weary nymph
#

const body= document.body;

setInterval(rainFall, 10);

function rainFall() {
const waterDrop = document.createElement('i');

waterDrop.classList.add('fas');
waterDrop.classList.add('fa-tint');
waterDrop.style.left = Math.random() * window.innerWidth + 'px';
waterDrop.style.animationDuration = Math.random() * 1 + 's';
waterDrop.style.opacity = Math.random() + 0.4;
waterDrop.style.fontSize = Math.random() * 7 +'px';

document.body.appendChild(waterDrop);

setTimeout(() => {
    waterDrop.remove();
}, 6000)

};

kind agate
#

```js
// ton code
```

amber arch
#

Merci ^^

weary nymph
#

ça doit drop des goutte d'eau et ça veut pas

red torrent
#

avant de vérifier que newMember.nickname commence par "DEK-" tu dois vérifier que newMember.nickname n'est pas null

#

je suis désolé mais je vois pas comment être plus clair

jovial lion
#

Mais on m'a dit de plutôt faire avec celui que j'ai mis au dessus

ashen rapids
#

Tu veux vérifier le nickname ou l'username ?

red torrent
#

nickname

red torrent
ashen rapids
#

Je sais pas, ça change entre tous ces screens 😂

red torrent
#

bah tu dois juste vérifier que nickname n'est pas null

red torrent
#

du coup il se perd

red torrent
# jovial lion Mais on m'a dit de plutôt faire avec celui que j'ai mis au dessus

Du coup tu prends ton code du dessus tu peux enlever l'évènement userUpdate et dans l'évènement guildMemberUpdate tu englobes ```js
if (newMember.nickname.startsWith('DEK-')) {
newMember.roles.add(role1);
} else {
if(newMember.roles.has(role1)) {
newMember.roles.remove(role1);
};
};

par ```js
if(newMember.nickname) {

}
lone flax
#
let nickname = (newMember.nickname || newMember.user.username);
lone flax
#

nickname est égal au nickname si il en a un, ou à l'username

#

au moins il se fait pas chier

red torrent
#

tu n'as juste pas besoin des parenthèses

floral bolt
#
        const newUserName = newMember.nickname || newMember.user.username;
        const oldUserName = oldMember.nickname || oldMember.user.username;
        let role1 = newMember.guild.roles.cache.get("828035299191029832");
        let role2 = newMember.guild.roles.cache.get("955224037427146783");
        if (oldUserName !== newUserName) {
          if (newUserName.toLowerCase().startsWith('dek-')) {
            newMember.roles.add(role1);
            newMember.roles.add(role2);
          } else {
            if(newMember.roles.has(role1) || newMember.roles.has(role2)) {
              newMember.roles.remove(role1);
              newMember.roles.remove(role2);
            };
          };
        };```
#

normalment ca devrait marcher

lone flax
lone flax
#

C'est .toLowerCase

floral bolt
#

il est vrai

red torrent
#

toLowerCase()

floral bolt
#

xD

red torrent
#

quand ça veut pas, ça veut pas

lone flax
#

Quelles parenthèses

#

Ah

#

Oui

#

Tu as edit

floral bolt
#

yes

lone flax
#

Bon et j'vais faire le chiant encore hein mais les roles tu peux les mettre en const, aucune raison de les mettre en let dans ce cas là lul

floral bolt
#

(j'ai juste recopié ce qu'il a écrit hein)

bitter mango
#

Bonjour, j'ai un formulaire en HTML qui contient des upload de fichier et des input en texte, j'arrive a recuperer les deux fichier uploader et les stocker, mais je ne sais pas comment proceder pour recuperer les autres input.
Merci :)

lone flax
#

J'ai refais le code un peu plus proprement parce que je trouvais que c'était une tartine, vwala c'est kdo @jovial lion

const newName = (newMember.nickname || newMember.user.username).toLowerCase();
const oldName = (oldMember.nickname || oldMember.user.username).toLowerCase();

if (newName !== oldName) {
  const guildRoles = newMember.guild.roles.cache;
  const targetRoles = [ guildRoles.get("828035299191029832"), guildRoles.get("955224037427146783") ];

  if (newName.startsWith("dek-"))
    newMember.roles.add(targetRoles);
  else if (newMember.roles.cache.hasAny(targetRoles))
    newMember.roles.remove(targetRoles);
};
red torrent
# lone flax J'ai refais le code un peu plus proprement parce que je trouvais que c'était une...
const newName = (newMember.nickname || newMember.user.username).toLowerCase();

if (newName !== ((oldMember.nickname || oldMember.user.username).toLowerCase())) {
    const guildRoles = newMember.guild.roles.cache;
    const targetRoles = [ guildRoles.get("828035299191029832"), guildRoles.get("955224037427146783") ];

    if (newName.startsWith("dek-"))
        newMember.roles.add(targetRoles);
    else if (newMember.roles.hasAny(targetRoles))
        newMember.roles.remove(targetRoles);
}
lone flax
#

Pas super intuitif la condition comme ça mais bon ça dépend, le but c'était surtout d'éviter les lignes doublons avec les remove et de permettre une portabilité meilleure le jour où il veut ajouter un rôle, suffit de l'ajouter à l'array

red torrent
#

en soit il peut avoir un tableau de Snowflake

#

ça fonctionne avec les identifiants

jovial lion
red torrent
lone flax
#

Rajoute un .cache

#

J'ai oublié

#

Voilà j'ai edit

red torrent
#

newMember.roles.cache.hasAny

jovial lion
#

Plus d'erreur, par contre quand j'enlève DEK- devant mon pseudo les rôles ne s'enlèvent pas

lone flax
#

Et ton console.log il s'affiche ?

jovial lion
#

Voilà ce qui s'affiche quand je change de pseudo

jovial lion
#

ça s'était pas envoyé désolé

bitter mango
raven axle
#

Bonjour à vous, je rencontre un petit soucis avec le routage en ReactJS si quelqu'un peut m'aider svp

peak cedar
raven axle
#

Hahaha oui c'est vrai, alors j'ai un soucis avec le Routage, donc j'ai suivi la vidéo tuto pour créer un site web, j'ai remarqué qu'elle n'est pas à jour au niveau du routage, donc je l'ai fait avec React Router 6 comme j'ai déjà fait sur des projets précédents

#

Sauf que là ça ne fonctionne toujours pas, rien ne s'affiche, j'envoie des screens de suite

#

Donc voilà mon code

#

Et comme vous pouvez voir, ça ne m'affiche rien

full prawn
#

Bonjour je comprend rien à comment split un message quand on arrive à 2000 caractères j’ai jamais utilisé ça. Quelqu’un pourrait éclairer mes lanternes en message privé ?

glass cargo
#

Et attention parce que la fonction .split que la fonction .slice ^^

#

.slice réduit un String alors que le .split divise un String après chaque caractère donné et retourne un Array ^^

full prawn
# glass cargo ```js <String>.slice(0, 1999) ```

Merci mais le truc c’est que je suis tout nouveau en js et je comprends pas une cacahuète à ce que je dois faire avec ça et où je dois l’utiliser PepeClown. Ça te dérangerait de m’envoyer un MP pour m’éclairer sur 2-3 trucs ?

lone flax
#

Et te suffit de l'utiliser comme ceci :

const message = "Hey comment allez-vous moi personnellement je vais plutôt bien lol"

splitMessage(message, 25).forEach(m => {
  console.log("New split: ", m);
})
#

Ce qui va te sortir :

New split:  Hey comment allez-vous moi
New split:  personnellement je vais
New split:  plutôt bien lol
full prawn
lone flax
#

Tu ne peux pas reply plusieurs fois à la même interaction donc ça me marchera pas

#

Mais tu as une fonction .followUp il me semble ou un truc du genre pour pouvoir répondre plusieurs fois a l’interaction

full prawn
#

Merci 🙏🏻🙏🏻

echo zinc
#

Bonjour,
j'ai déjà posé cette question sur le canal discussions-dev mais peut-être est-ce plus approprié ici:
"Bonjour, je pose un question de dev junior en formation.
-je code un site pour un resto mais je crée aussi un version WordPress (exo de formation)
-Je cherche un moyen pour que le restaurateur puisse par lui-même changer ses tarifs ou le plat du jour avec une interface simple.

merci pour vos réponses

red torrent
echo zinc
#

MERCI de cette réponse rapide.
à la limite la vesion wordpress on s'en fiche en vrai mais c'est surtout la possibilité au client d'être autonome sur la modif de ses données simple.

red torrent
#

tu peux sois lui faire un fichier de configuration qu'il peut modifier avec un editeur de texte soit lui faire un formulaire accessible via une authentification

echo zinc
true bone
ashen rapids
#
#

?

floral bolt
#

Crois moi c’est très long

true bone
#

Fil

true bone
#

et j'en ai une autre avec ascii c'est quand je fait node . ça me repond et ça start mon bot mais il a pas de status ni rien
|
'

bitter mango
#

@true bone

bitter mango
#

Bonjour, j'aimerai savoir si c'est possible d'afficher avec app.get... le contenu d'un dossier autre que view ? (en locurance j'aimerai afficher /home)

#

ou alors au moins rendre accesible certain dossier
dans le serveur genre public

glass cargo
#

Je crois que c’est pas possible pepe_chock

#

Mais à confirmer ^^

red torrent
bitter mango
# red torrent Regarde du côté de express.static

Yes c'est ce que j'ai fait apres, mais quand j'essaie de link mon css ça me dis Refused to apply style from 'http://localhost:3000/public/home/style.css' because its MIME type ('text/html') is not a supported stylesheet MIME type, and strict MIME checking is enabled.

red torrent
bitter mango
#

et bizzarement je retrouve des 404 quand même genre
GET http://localhost:3000/public/playground_assets/logo-1500h.png 404 (Not Found)
pourtant il est bien dans public

#

Cannot GET /public/home/style.css

red torrent
#

L'url doit être différente

#

Faut regarder la doc d'express.static

bitter mango
#

J'ai fait ce qu'il disent pourtant

#
app.use(express.static(__dirname + '/public'));
#

et pourtant il est bien dans public

red torrent
#

Oui mais ton URL n'est pas bonne

#

Relis bien la doc

#

"Express recherche les fichiers relatifs au répertoire statique, donc le nom du répertoire statique ne fait pas partie de l'URL."

#

Ou sinon tu précises le préfixe que tu veux utiliser ```js
app.use('/public', express.static('public'));

#

Faut vraiment prendre le temps de lire les documentations surtout pour des librairies qui sont là depuis si longtemps. Tout est expliqué dessus

bitter mango
#

Merci :)

#

est ce que ejs à un impact sur la mise en forme des pages html

#

?

glass cargo
#

Nan

#

Tout est pareil

bitter mango
#

Ah parceque la mise en forme de ma page est morte maintenant mdrr

glass cargo
bitter mango
#

tuez moi mdrr

#

Je sais pas pourquoi ça fais ça du coup mdrr parceque avant c'était styler

#

Maintenant ça a plus aucune geule

#

Quand j'importe mon css dans un style directement ça fonctionne donc ça va mdrr

keen narwhal
#

Bonjour, je dois remplacer mes location.reload,

cependant, je ne sais pas par quoi, est ce que quelqu'un aurait de l'aide à m'apporter svp

#

je précise que je suis en Vue

tidal chasm
#

Salut tout le monde ! Voilà, je suis entrain de développer une todo list (sans tuto YouTube, seulement avec documentation et Stackoverflow comme un grand) mais voilà, enfaite je souhaite faire fonctionner le bouton "corbeille (supprimer)" mais dès que je souhaite faire un console.log pour voir si mon bouton et bien pris en compte et détecter, j'ai cette erreur : Uncaught TypeError: can't access property "addEventListener", todos is null index.js:8

Je suppose que ça signifie qu'il ne détecte peut être pas mon bouton au final.. Pourrais-je avoir votre précieuse aide ? 🙂
Merci à tous ❤️

ashen rapids
#

C'est quoi la finalité @keen narwhal ?

ashen rapids
tidal chasm
#

J'envoie juste un screen ?

ashen rapids
#

Ou le code dans des ```
Je suis sur tel donc je vois pas les fichiers

tidal chasm
#

Pas de po ça, j'envoie le screen alors

keen narwhal
ashen rapids
tidal chasm
keen narwhal
#

En gros on m'a dit que c'était mauvais

#

je dois les retirer obligatoirement

#

sauf que quand je les retire ca ne fonctionne plus

#

donc je ne sais pas comment faire

tidal chasm
#

Enfaite, la variable todos (qui correspond au bouton effacer d'un élement todo) ne console.log rien quand je clique dessus et j'ai cette erreur

ashen rapids
keen narwhal
#

Et bien ca dépend du screen

ashen rapids
keen narwhal
#

il y'en a ca doit créer le commentaire

keen narwhal
#

l'autre ca doit supprimer, l'autre doit modifier un profil

ashen rapids
tidal chasm
#

Tiens, peut être que ça peut t'éclairer un peu ^^

keen narwhal
#

tu as des liens pour se renseigner, par ce que je ne trouve pas ?

tidal chasm
#

Bien entendu, je précise que les deux todo que tu voient sont générer dynamiquement par le biai du champ de text (Enter your task to do)

bitter mango
#

J'aimerais faire telecharger a mon utilisateur un fichier mais avec le code ci-dessus rien ne se passe côté client

ashen rapids
tidal chasm
ashen rapids
bitter mango
#

oui

ashen rapids
tidal chasm
#

Je vais essayer get ClassByName 🙂

ashen rapids
# bitter mango oui

Essaie de mettre un callback sur ton download pour voir si ya une erreur !

ashen rapids
ashen rapids
#

Fais voir ce que tu as fait ?

bitter mango
ashen rapids
#

Et tu appelles ton API comment ?

bitter mango
#

Le dossier prod n'est pas en static c'est peut être ça

#

Elle est forcément appelée, j'ai des console log juste avnt

ashen rapids
#

Probable

tidal chasm
#

J'ai essayé de mettre mon addEventListener et ma fonction après que une todolist soit crée

bitter mango
#

Mais j'aimerais télécharger le fichier mais je veux pas qu'il ne soit accecible sans mon autorisation

ashen rapids
bitter mango
#

Ca marche pas non plus mdr

ashen rapids
#

Fais voir + ton code !

#

Ta route back

#

Et ton appel front

bitter mango
tidal chasm
bitter mango
#

Je vais manger je reviens

tidal chasm
ashen rapids
tidal chasm
#

Bah de base, le premier s'affichait pas à cause de l'erreur

bitter mango
#

Oui

ashen rapids
# tidal chasm

Ce que tu as là, c'est un HTML collection, donc un tableau d'éléments

#

Donc normal que tu peux pas mettre de listener dessus

tidal chasm
#

Ah.. Parce-que ça represente plusieurs elements en même temps sur mon code HTML ?

ashen rapids
ashen rapids
tidal chasm
#

Donc enfaite, je dois transformer ma class (.todo element) en id ?

ashen rapids
#

Si c'est voué à être un élément unique oue

tidal chasm
#

Bah ouais mais ça c'est le problème que je viens de me dire justement. Si par exemple je crée 4 todos, et bah elles auront toutes la même classe (todo-element) pour qu'elle puisse être affecté par le CSS quoi

ashen rapids
#

Et tu veux faire quoi sur ces éléments du coup ?

tidal chasm
#

Je crois pas avoir compris ta question..

#

Ah tu veux dire, quand on clique sur le bouton corbeille ?

ashen rapids
#

Une fois que tu auras récupérer tes éléments, tu veux en faire quoi ensuite ?

tidal chasm
#

Bah en gros, c'est pour pouvoir récuperer l'enfant bouton supprimer depuis le parent todo-element

#

Après j'ai aussi essayé de faire uniquement addEventListener pour le bouton mais c'est pareille niveau erreur

ashen rapids
#

Donc ce que tu fais, c'est que tu fais un getElementsByClassName pour récupérer tous tes éléments. Ce qui ça te donner un tableau

Ensuite tu fais une boucle sur ce tableau d'éléments pour traiter tous tes éléments un par un

tidal chasm
#

Quelque chose comme ça ?

ashen rapids
#

Oui
Pour être encore plus rapide, tu peux utiliser un forEach

tidal chasm
#

Je me suis dis ça aussi ^^

#

Elle est cool cette fonction, mais ducoup ça je le mets ou exactement ?

bitter mango
tidal chasm
ashen rapids
tidal chasm
#
const todoElement = document.getElementById("todo-container")
const inputEl = document.querySelector(".value-task")
const submitEl = document.querySelector(".submit-btn")
const errorAudio = new Audio("sound/error.wav")
let todos = document.getElementsByClassName(".todo-element")

submitEl.addEventListener("click", submitBtn)

function submitBtn(e) {
    // No refresh when btn click
    e.preventDefault()

    if (inputEl.value === "") {
        errorAudio.play()
        alert("Ow noo..!\nYou have to enter something about your task. It would be kind of embarrassing to remember after...")
        submitBtn.removeEventListener()
        submitBtn.addEventListener()
    } else {
        const newTodo = document.createElement("div")
        newTodo.classList.add("todo-element")
        todoElement.appendChild(newTodo)

        const vText = document.createElement("p")
        vText.classList.add("text-task")
        vText.textContent = inputEl.value
        newTodo.appendChild(vText)

        const checkBtn = document.createElement("button")
        checkBtn.classList.add("check-btn")
        checkBtn.innerHTML += `<i class="fa-solid fa-check"></i>`
        newTodo.appendChild(checkBtn)

        const editBtn = document.createElement("button")
        editBtn.classList.add("edit-btn")
        editBtn.innerHTML += `<i class="fa-solid fa-pen-to-square"></i>`
        newTodo.appendChild(editBtn)

        const trashBtn = document.createElement("button")
        trashBtn.classList.add("delete-btn")
        trashBtn.innerHTML = `<i class="fa-solid fa-trash"></i>`
        newTodo.appendChild(trashBtn)


        inputEl.value = null

    }
}
ashen rapids
tidal chasm
#

Bah vers la fin de la création de la todo je suppose ?

bitter mango
tidal chasm
#

Parce-que j'ai essayer mais sans grand succès..

ashen rapids
bitter mango
tidal chasm
#

Bah je l'ai mis entre inputel.value = null et newTodo.appendchild(...) donc ouais à la fin 🙂

ashen rapids
# bitter mango comment ça

Tu vérifies côté back si c'est le bon code
Comme ça t'es sûr que personne pourra le télécharger sans le code

bitter mango
#

Mais du coup je fais comment pour lui faire télécharger

#

Sans que le dossier soit un static du coup

ashen rapids
ashen rapids
bitter mango
#

Non logique

tidal chasm
#

Et ducoup pour le for loop, quand je check dans ma console, une fois la todo crée bah rien ne s'affiche

bitter mango
tidal chasm
#

Parcontre quand j'essaye de console.log(todos), là ça me mets bien la collection HTML dans la console

ashen rapids
ashen rapids
# bitter mango

Non mais ok

Quand je dis appeler ton API, c'est via la route que t'as setup

#

Pas le chemin du fichier

ashen rapids
tidal chasm
ashen rapids
tidal chasm
#

Argh j'en ai marre ! todos.addEventListener is not a function pourtant je l'ai mis après la création de la todo list

ashen rapids
#

Ton addEventListener faut l'ajouter sur tes éléments dans ton forEach

#

Pas sur todos

#

Vu que todos est un tableau

tidal chasm
bitter mango
#

Pourtant dans mon fichier sa fonctionne

ashen rapids
#

Transforme ta requête en GET 😁

bitter mango
#

Ca tourne a l'infini

#

parceque dans ma requette j'ai mon code que l'utilisateur a rentrer

ashen rapids
#

Transforme tes paramètres de ton post en params de ton GET

tidal chasm
#

C'est bien comme ça ? Je dois peut être mettre le document.getClass(...) au-dessus non ? Car mon IDE me dit que la variable todos est pas déclaré

ashen rapids
#

Il faut enlever le . Dans ton getElementByClassName

#

Et il manque ta boucle

#

todos.forEach()

bitter mango
#

C'est bon ça refonctionne mais il ne se passe toujours rien

ashen rapids
ashen rapids
bitter mango
#

Et quand je le fais seul dans le navigateur ça fonctionne

#

Yes

ashen rapids
#

Oui c'est ce que je t'expliquais plus haut

bitter mango
#

Du coup je peux faire comment ?

ashen rapids
bitter mango
#

C'est quoi location ?😅

ashen rapids
#

Location c'est ce qui permet de changer la page

tidal chasm
bitter mango
#

Ah oui mais du coup le fichier si on rentre directement l'adresse de destination on peut y accéder

ashen rapids
ashen rapids
tidal chasm
bitter mango
#

Pas bête je vais regarder ça merci !

tidal chasm
#

Bah en plus d'être dans le désespoir (on est dans le code, nan ?) j'aide @bitter mango avec mes problèmesp tdr

bitter mango
#

Mdrr

tidal chasm
#

todos.forEach is not a function kappo

bitter mango
#

C'est un Array ton todos?

tidal chasm
#

Non mais j'ai compris ça voulait dire quoi mon erreur

#

Mais le contexte ça non mdr

bitter mango
ashen rapids
tidal chasm
#

Mais j'ai pas d'array dans mon code ?

ashen rapids
#

Ton todos c'est un " Tableau " d'éléments si

tidal chasm
#

PUTAIN OUUUUIIII

#

Non merde c'est le mauvais mdr

#

Il s'affiche enfin

#

@ashen rapids Je pense que c'est déjà une petite victoire pour ce soir (je suis ultra débutant en Javascript), en tout cas un très grand merci à toi, j'ai pu apprendre quelques trucs ❤️

#

J'espère ne pas trop t'avoir déranger 🙂

ashen rapids
#

GG !

tidal chasm
#

Bon bah je vais y aller, bonne soirée à tous !

bitter mango
tidal chasm
bitter mango
#

D'acc

true bone
floral bolt
#

Sans les logs on peut pas trop t’aider :/