#javascript-typescript
1 messages · Page 106 of 1
Un plugin se code en JavaScript
Java, pas javascript
mdr ?
Fait attention avec les }])ou" il faut toujours que sa se referme après ta ligne de code7
Mais il y a aucune erreur dans le code mais sa fonctionne pas
Je peut pas trop la je suis pas chez moi je fait sa se soir ou demain midi
Plutot en Java 👀, néanmoins pour faire un launcher en js y a électron
Moi c un launcher que je fait
@sharp grail je parlais d'un plugin mais oui un launcher se code en Java mais pas un plugin
Nan un plugin c en java
ah dl
Ou autres
dsl
Vous jouez à Minecraft ou pas ?
oui
Cool
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.
. 🙏
ah yep !
en gros
<TextChannel>.bulkDelete et <CommandInteraction>.reply sont tous les deux asynchrones
ok
si tu veux qu'ils s'executent dans l'ordre que tu souhaites, utilise await ou .then 👀
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
Salut, as-tu pensé à suivre le guide de DiscordJS ?
Il est hyper détaillé !
^^
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);
});
Je me suis renseigner et c'est ca pour créer un thread privé a chaque message envoyer. Le probleme, c'est que quand j'envoie un message, dans la débug console, ils me disent Uncaught ReferenceError ReferenceError: channel is not defined
quelqu'un pourrait m'aider?
Tu veux creer un thread privé dans le channel où le message a été envoyé ?
bah en fait je veux qu'a chaque fois que le bot voit un message, bah il créer un fil privé
@hazy mirage
dans un channel en particulier ou simplement sur le message en question?
sur n'importe quel message qu'il voit
rajoute message. devant le channel alors je pense
Hmm juste t'as les bases du js ?
A peu près, je viens de commencer je regarde des vidéos de base
Maintenant la console me dit :
(node:9580) DeprecationWarning: The message event is deprecated. Use messageCreate instead (Use node --trace-deprecation ... to show where the warning was created)
quand j'envoie un message pour tester
Normal
L'event, ce n'est plus message mais messageCreate avec les nouvelles versions de discord.js
bonsoir j'aimerai savoir si quelqu'un serai dispo pour m'aidez j'ai cette erreur lorsque je build mon projet react avec webpack
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 ?
Merci, ca m'a débloquer tu gere
Dr
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
les commandes sont faites, les fonctions sont définies, les constantes aussi
Screen voir
@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"
Faut les exports oui @primal knoll
Okay
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?
Faut que tu dis que si sa proviens d'un bot, tu l'interdis 🙂
Merci, tu m'as vraiment beaucoup aider
Dr
Salut j'essaye de save des emoji dans une db avec adonisjs mais 😁 ressors ???? vous auriez une idée ?
L'encodage de ta base de données doit être en UTF-8mb4 pour lire des emojis
c'est deja le cas
C'est quoi comme base de données ?
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
j'utilises heidisql, merci pour t'es reponses
Bonjour,
quel commande je pourrais écrire pour ajouter le userId à dataPost
https://cdn.discordapp.com/attachments/647341754944716815/971201326707011655/unknown.png
Tu veux envoyer un user ID depuis le front ?
Je veux ajouter un user id a un datapost
Mais pourquoi en front tu devrais en back directement c'est plus secur
je suis entraion d'apprendre en faisant un projet
ce qui est important pour moi, c'est de voir que toutes mes fonctions etcc fonctionnent, comme par exemple le fait de poster un commentaire
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 ?
ça peut être les intents peut être
envoie une image du code avec l'erreur et la ligne d'erreur
Est-ce que ton bot est Admin ?
- montre toute l'erreur
Voici toute l'erreur
Et oui il est administrateur
Mes intents :
intents: [
Discord.Intents.FLAGS.GUILDS
],
Ton token est bon ?
Oui car il arrive à ce connecter
l'erreur elle provient de quel niveau dans ton code ...
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
essaye sa
const guild = client.channels.cache.get(process.env.SERVER_ID)
console.log(guild.memberCount)
undefined
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
ben ça dépend tu veux faire quoi et ou
et console.log(guild.memberCount)
et à la place de id
met ton guildID
J'ai remplacé l'id par mon id de channel
Et le guild.memberCount va rien me retourner car guild est vide
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
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 ?
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
J'ai trouvé
c'était quoi ?
ben oui c'est un guild lol, autant pour moi ^^
Pas de soucis
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
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 ?
en gros je veux qu'il ne prenne pas en compte les messages envoyer dans les threads
car sinon il va essayer de créer un thread dans un thread
alors que c'est impossible
et ca fait des erreurs
D'accord mais je te conseille de partir sur des bonnes pratiques
On va essayer de regarder sa, fais moi passer les erreurs s'il te plais
les messages envoyer par les users du coup
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
En fait, je veux que quand il voit un message dans un thread, mon code ne s'applique pas
en gros un algorithme permettant de ne pas prendre en compte les messages envoyer dans les threads
Ok attends je regarde un peu comment ça se passe les threads, j'ai jamais eu l'utilité encore
ben il te log quoi avec le console log ?
non le terminal normal, fin ta console quoi
ah ok
montre moi ce qu'il te log le console.log stp
quand j'envoie un message dans un thread?
quand j'envoie un message dans un thread le msg d'erreur : Cannot read properties of undefined (reading 'create')
Non, je crois pas
ok
mhh ben non
`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
j'ai compris ce que tu veux faire
Ah ok
Ok
Ouais
et la ça te log rien ?
ca c'était déja ok
La il est comme ca mon code
lorsque ça créer un thread (donc avec un message dans un channel normal)
Ok
ça te log rien ?
si, ca me log ducoup "auto réaction et auto threads"
oui normal
mais
.then(threadChannel => console.log(threadChannel))
celui ci
il te log rien
tu as juste "auto réaction et auto threads" ?
ca me log ca aussi ThreadChannel {type: 'GUILD_PUBLIC_THREAD', guild: Guild, guildId: '937026581526900806', messages: MessageManager, members: ThreadMemberManager, …}
ok parfait
essaye de rajouter
console.log(threadChannel.messages))
et envoie moi ce que ça te log
ou?
.then(threadChannel => console.log(threadChannel.messages))
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))
});`
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
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
Okay ca me log ca : auto réaction et auto threads index.js:16 MessageManager {channel: ThreadChannel, client: Client, holds: ƒ, _cache: Map(0)}
Je remplace tout? (j'ai fait une backup du code)
ah
t'as supp
c'est surement pas le bon alors mdrr
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
Ok
et dis moi
ca ne met pas le auto réaction ni auto thread
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
envoie moi tout tes fichiers dans un .rar sans le node_modules et package-lock.json
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
ducoup je t'envoie index et package?
yep
@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
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
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
Avec plaisir, aucun soucis
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
comme ca*
Mhh je sais pas si c'est possible mais je peux regarder en rentrant oui il n'y a pas de soucis
Merciiii
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
Vraiment tu sais pas a quel point tu m'aide
ouais pk pas
On regarde ensemble quand je rentre, ping moi vers 20h max si tu as pas de nouvelles
tout est possible ahah x)
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;
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
tu dois ajouter des intents a ton client
moi?
je doit ajouter quoi ? comme intents
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...
okk meric et c'est quoi le meilleur language pour coder un bot (discord) ? js ? c# ? quoi ?
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).
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
oui, ca après il y a des libs dans tous les langages c'est pas le problème
Elles se valent pas toute et sont pas toute officielles de discord donc il y a la place à l'erreur etc..
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
Pourquoi tu n'utilises pas les slash commands ?
Moi ?
OUep
Je suis pas sur du bot discord c'est juste un système de chat en direct en web
Donc il suffira de ce réname avec ton pseudo whitelist pour pas ce faire mute

mybad
Mdrr
Du coup faudrait arriver à Split avec tout ce qu'il y a après le premier espace
Psk dans ta commande il faut mettre /mute "nomdelutilisateur"
Pas oublier les "
si tu a pas d'argument après le nom du gars enlève juste /mute pr avoir le nom
C'est ce a quoi je pensais mais je sais toujours pas comment faire 🥲
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...
D'acc Merci beaucoup !
derien
bonjour j'ai un probleme quand je fait node . pour start mon bot ça marque ça
par contre il faudrait que tu fasse en sorte que personne puissent s'appeler pareil
c'est pas des parenthèses mais des crochets comme pour les tableaux {}
Deja fait haha
niquel
Juste ca me dis que message.replace is not a function
var username = message.replace("/mute ", "");
message.text.replace plutot?
ça fonctionne mercii
😂
merci
et il y a quoi comme type ? je sais qu'il y a watching et playing mais il y a quoi d'autre
Integrate your service with Discord — whether it's a bot or a game or whatever your wildest imagination can come up with.
Sinon pour une gestion plus simple tu pourrais faire un truc comme ça 👀
if (!message.text.startsWith('/')) return;
let args = message.text.split(' ');
let command = args.shift();
// command mute
let username = args.join(' ');
Pas faux merci j'essaie d'apprendre le node js c'est pour ça :)
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
Il faut un intents oui
Je vais essayer de voir si mon code fonctionne mieux désormais !
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
Ah ouais des fois ça tiens à pas grand chose
c'est pour ça qu'on utilise des ide qui nous aident pour trouver ce genre de typos x)
Ah d'accord
merci
dr
j'ai un souci je comprend pas d'ou vient le probleme
Un pb avec node
Honnêtement je sais pas trop essaies de faire un truc = require("x")(client)
dans index.js?
Idk déso
et ducoup je creer une const quoi ?
ouais dsl
?
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
const { Console } = require("./console.log");
tu la fait ?
j'ai un souci je comprend pas d'ou vient le probleme
voici le message d'erreur
et comment tu fait pour le sorte de carrer
Enlève le (client) devant le require("./handlers/Events")
Euh
;-;
- Le mot clé console est global et accessible partout
- Ici tu tentes d'importer depuis le fichier console.log
- C'est absurde-
tu peut encore m'aider ? j'ai deux autre souci xD le premier c'est que mon bot n'affiche pas de statuts et n'affiche pas de dans la console "Je suis opérationnel 🤯"
voici mon ready.js
et la le index.js
et dans la video du mec ça affiche et moi rien
et voici aussi mon Events.js
Le sorte de carrer ?
comme si ct entourrer
Déso j'ai jamais fait de programmation orienté objet pour faire un bot discord
Enlève la ligne 5 pour voir et démarre le index.js
bot en ligne mais trj rien
bah au moins il est en ligne ptdrr
pour la suite je ne sais pas
Tu as mis Tabe au lieu de Table dans le console.log de ron Event.js
merci mais toujours pas de status ni de message comme quoi il est en ligne
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
Pour commencer on démarre son bot en utilisant le package.json
Ensuite oui il nous faudrait du code sinon ça va être compliqué
Et c'est quoi les erreurs @true bone
ça les affiches pas
et ça affiche pas non plus le message du bot comme quoi il est connecter
dans mon ready.js il y a ça
console.log("Je suis opérationel :exploding_head:")c'est pour que ça envoie un message dans la console pour me dire qu'il est co
à ouais donc tu regarde si le bot est co en faisant un console.log mais pk pas juste regarder si il est en ligne sur discord ?
Mais il est en ligne sauf qu'il a 0 status ect
bah logique c'est toi qui doit rajouter le status sur le bot
mais il y est deja dans ready.js
Ton ready.js est éxecuté ?
Bah ton console.log il est affiché ou pas ?
comment ça ?
Bah tu print quelque chose dans ton ready.js
et comme ça tu peux voir si il est executé
si je met console.log(ready)
ça marche
dans index.js
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 ?
(j'obtiens ça:)https://pastebin.com/2tkJgfAE
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
console.log(result.response.team)
j'obtiens ceci
console.log(JSON.parse(result.response.team))
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...
Tu a installer node
bah oui
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
bonsoir désolé j'avais oublier de t'envoyer le code etc
je l'envoie ici ou en prv
Ici
?
Tu as régler ton soucis ?
non
yep c'est quoi
tu as ascii art (question or de ton probleme)
Teste /botconfig/...
Qu'est ce que tu me baraguine 😂
Azy
Bien sûr les ... c'est le reste j'avais juste la flemme de recopier 
Montre toute l'erreur stp
On voit pas à droite là tu peux montrer il me semble qu'il y a un truc
Il trouve juste pas la photo
Il te dit pas où il va chercher
Zekalia.png
Tente ./botconfig
Azy
Pardon ../../botconfig/….
Déjà ce qu'il fait
Ah oui je vois rien moi
No problemo
Juste par rapport au problème de tout à l'heure, ton fichier commande est run depuis index.js j'imagine ?
C'est mon index
Jvais revoir tout ça parce que ça me soule ptit truc a la con comme ça 😂
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
Ahhhh oeee
Normalement / sans le point c'est censé marcher
Je suis pas sûr mais je pense que c'est comme ça que ça work
Nan sans le . Ça marcher pas mais bon trql la ça marche
Mais dcp une idée pour le displayAvatarURL ?
Faut un ./ à chaque fois devant
Je look la doc
Le code-?
.
interaction.user n'est pas défini
Ce qui est bizarre d'ailleurs, peut être que ton interaction n'est pas bien défini
Au moment où tu importe ton fichier
Bah ce sera undefined du coup
Oui
Donc juste console log interaction
Oui ba faut enlever le user 🙂
Et le console log ça a donné quoi ?
Rien 👀
Tu veux je le place Ou ?
Ba au début
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] });
}
}
"Demain à 00:00"
client, interaction, message, args et quand tu require ton fichier tu lui donne quoi comme arguments ?
J'imagine que tu lui donne client, message, args
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 😉
@jovial lion tu peut screen totalement l'erreur seul stp
Regarde la linge 22 puis la 30
@cyan ironVraiment deso me suis endormi Comme une mer**
Mais dcp j'ai toujours pas trouver 😭
Du coup t'as fait ce que je t'ai dit ? :') ?
.
Je pense que tu t'es trompé quand tu donnes les arguments à ta fonction run
Ah faudrais faire quoi ?
Parce que la je vois vrm pas 💀
Bah les donner correctement
Je comprend pas jrefait juste le truc du wiki et ça me fait ça 😭
Tout marche jusqu'au displayAvatarURL
C'est dans quel fichier que tu run ta commande
Ah index il me semble
Index ou dans tes events ? x)
C'est bien une slash que tu éxecutes ?
Nop
Ah bah voilà x)
fichier interactionCreate et messageCreate ? 👀 comment marche ton handler ? 🤔
ça marche parce que c'est une slash command
Oe mais y'a pas l'avartar
Y veux toujours pas
Y'a pas d'erreur ni rien
Att comment ça ?
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
Ni d'@sharp grail
?
??

😂
;-;
C'est pas bon ?
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
t'as enregistré et relancé ? tu fais la bonne commande?
Oui mais c'est bon fallait faire ça
c'est quoi la différence entre les deux codes?
L'ordre
Littéralement le même entre celui ci et celui la mais bon x)
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
Tu peux pas clôturer la citation multiligne
test
test
test
passe plusieurs lignes
Tu fais retour arrière
Ou maj + enter x2
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
La méthode forEach n'est pas asynchrone
Arh merde, faudrait que je la remplace alors
Tu dois utiliser Promise.all et <Array>.map à la place
Alors je vais tenter, j'utilise pas souvent .map
Ou alors tu utilises for
For, va me sortir le même soucis non ?
Car impossible de définir un await dans une boucle for
for (question of questions) {
await waitUserResponse(channel_create).then(() => channel_create.send(question[1]));
}
Bien sûr que tu peux
Effectivement, ça fonctionne ! Youhou, je ne pensais pas qu'il était possible d'utiliser un await dans un for basique
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
D'accord, bon à savoir, merci beaucoup pour ton coup de main
J'ai vu dans l'erreur que ça venait du "startsWith" mais je comprends pas pourquoi, je l'ai peut-être mal utilisé ?
Faut que tu check quand la personne change son pseudo @jovial lion
Pas sur tout les events dans guildMemberUpdate
J'ai check justement c'est l'erreur quand on change le pseudo
Essaye nickname au lieu de username
Il trouve pas l’username
Newmember.user.username
Ou l’inverse j’sais plus
J'ai testé avec les deux et même
Et ma solution ? @jovial lion
Pareil "Cannot read properties of undefined (reading 'startsWith')
Alors juste newmember.nickname
Alors ça marche, par contre, normalement quand j'enlève 'DEK-' de mon pseudo les rôles devraient s'enlever mais à la place une erreur se crée
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
Envoi l'erreur 🙂
Si qql trouve la solutionc ca m'aiderait vrmt
Je ne suis pas chez moi je ne peux donc plus t’aider
Tu as lu le message d'erreur ?
J’pense pas x)
C'était une question réciproque x) en effet j'avais déjà la réponse mdr
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
Code ?
Tu ne peux pas outrepasser cette limite, néanmoins, pour un message par exemple tu peux le split en plusieurs messages (a l'aide de la fonction ci dessous par exemple) et boucler dessus pour les envoyer
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);
};
``` 
➜ [Voir le message original]([#partage-ton-code message](/guild/223070469148901376/channel/734151431329677374/))
Nickname c'est sur Member, pas sur User
=> https://discord.js.org/#/docs/discord.js/stable/class/GuildMember?scrollTo=nickname
Ok donc je remplace ??
Hmm guildMemberUpdate provide normalement des members
Ah nan mybad je lisais pas la bonne ligne
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>
Juste newMember.nickname
Oui mais ça revient à mon problème de tout à l'heure?
Non
Bonjour , j'ai une erreur et je sais pas comment la regler
https://sourceb.in/Pe81VxiHgD
Tu suis un tuto ???
Merci ! Tu pourrais m’envoyer un message privé s’il te plaît ? Pour une petite clarification ^^
Yep mais tu peux toujours poser tes questions ici 👀
Disons que j’ai jamais utilisé cette commande et que je ne sais pas où je dois ajouter mes valeurs
// 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
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
Bonsoir
J’ai pas touché à mon bot que dalle et il a crash..
Avec cette erreur quand j’essaye de le redémarrer
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
Nickname sert uniquement pour les surnoms par serveur, donc quand quelqu’un rejoint un serveur il n’en a pas. Utilise plutôt son username 😉
Oui mais si il change son surnom sur le serveur c’est ça qui est pris en compte non ? Pas le username ?
non ca prend le username de mémoire
C'est ça, tu dois utiliser le nickname mais tu dois vérifier qu'il y en a un avant de faire ta vérification
C’est-à-dire ?
Vérifier que nickname existe
Hum @sharp grail tu peux me mp please 😂
Salut ! envois moi le code stp
Ici ou en mp?
iici
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);
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)
};
```js
// ton code
```
Merci ^^
c'est toi qui a écrit ce code?
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
Moi j'ai écris celui-là
Mais on m'a dit de plutôt faire avec celui que j'ai mis au dessus
Tu veux vérifier le nickname ou l'username ?
nickname
du coup tu sais comment faire une condition?
Je sais pas, ça change entre tous ces screens 😂
bah tu dois juste vérifier que nickname n'est pas null
bah oui mais certaines personnes lui ont raconté des conneries
du coup il se perd
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) {
}
let nickname = (newMember.nickname || newMember.user.username);
à la limite oui
nickname est égal au nickname si il en a un, ou à l'username
au moins il se fait pas chier
tu n'as juste pas besoin des parenthèses
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
Yep je les met pour des raisons de logique, ça dépend de chacun
.tolowercase ça existe pas je crois
C'est .toLowerCase
il est vrai
xD
quand ça veut pas, ça veut pas
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à 
(j'ai juste recopié ce qu'il a écrit hein)
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 :)
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);
};
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);
}
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
tu utilises quelle version de discordjs ?
Quelqu'un sait
newMember.roles.cache.hasAny
Plus d'erreur, par contre quand j'enlève DEK- devant mon pseudo les rôles ne s'enlèvent pas
Et ton console.log il s'affiche ?
Voilà ce qui s'affiche quand je change de pseudo
console.log req.data
c'est bon j'ai trouvé c'était body mdr
Bonjour à vous, je rencontre un petit soucis avec le routage en ReactJS si quelqu'un peut m'aider svp
Error code ? Un truc parce que tout le monde peux t'aider mais pas imaginez le problème ^^
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
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é ?
<String>.slice(0, 1999)
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 ^^
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
. Ça te dérangerait de m’envoyer un MP pour m’éclairer sur 2-3 trucs ?
Comme on te l'a dit plus haut, tu peux utiliser ma fonction que j'ai partagé ici : https://discordapp.com/channels/223070469148901376/734151431329677374/967796722283712602
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
Cela n’a aucun impact si je l’utilise pour la réponse inclue dans un menu déroulant ?
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
Merci 🙏🏻🙏🏻
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
je suis pas sûr que le salon #javascript-typescript soit approprié pour du Wordpress
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.
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
MERCI, oui je penchais plutôt vers le formulaire par authentification mais comme je suis un junior (en formation), je corrobore mes idées avec les pros pour voir si je vais dans la bonne direction.
Bonjour , j'ai une erreur et je sais pas comment la regler
https://sourceb.in/Pe81VxiHgD
C'est ce module : https://www.npmjs.com/package/ascii-table
?
Le seul moyen mis à part wordpress c’est de crée un panel de gestion
Crois moi c’est très long
Fil
oui ça me met cette erreur*
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
|
'
@true bone
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
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.
Et si tu ouvres l'url directement ça t'affiche quoi?
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
J'ai fait ce qu'il disent pourtant
app.use(express.static(__dirname + '/public'));
et pourtant il est bien dans public
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
Ah parceque la mise en forme de ma page est morte maintenant mdrr

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
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
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 ❤️
C'est quoi la finalité @keen narwhal ?
Montre nous la partie du code concernée 😇
Yep ! Alors je crois que c'est surtout au niveau du haut mais je te renvoie un truc plus propre pour que tu voies mieux 🙂
J'envoie juste un screen ?
Ou le code dans des ```
Je suis sur tel donc je vois pas les fichiers
Pas de po ça, j'envoie le screen alors
comment ca ?
Je comprends pas pourquoi tu veux remplacer tes locations.reload
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
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
Donc c'est quoi la finalité ?
Tes location reload te permettent de refresh la page. Donc évidement, si tu en as besoin ...
Et bien ca dépend du screen
En gros quand t'essaie de récupèrer l'élément, t'as un null ?
il y'en a ca doit créer le commentaire
Exactement
l'autre ca doit supprimer, l'autre doit modifier un profil
Je te propose de te renseigner sur ce qu'il va pas exactement et sur ce que fait location reload exactement
Tiens, peut être que ça peut t'éclairer un peu ^^
tu as des liens pour se renseigner, par ce que je ne trouve pas ?
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)
J'aimerais faire telecharger a mon utilisateur un fichier mais avec le code ci-dessus rien ne se passe côté client
.todo-element, c'est une class ?
Ouais c'est une classe div, je t'envoie mon HTML peut être aussi ?
Le code que tu montres c'est sur du Express ?
oui
Pourquoi tu utilises pas getClassByName directement ?
A mon avis t'essaie de récupérer ta class avant que celle-ci apparaisse dans le DOM
Je me justement dis un truc du genre ! Peut être quelle est tout simplement pas encore detecté au final
Je vais essayer get ClassByName 🙂
Essaie de mettre un callback sur ton download pour voir si ya une erreur !
C'est très probablement ça. Essaie de faire en sorte de récupérer l'élément qu'à partir du moment où tu es sûr que c'est dans ton DOM
Rien qui sort mdr
Fais voir ce que tu as fait ?
Et tu appelles ton API comment ?
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
Probable
Alors c'est intéressant, parce-que l'erreur à maintenant changer en todos.addEventListernet is not a function
J'ai essayé de mettre mon addEventListener et ma fonction après que une todolist soit crée
Mais j'aimerais télécharger le fichier mais je veux pas qu'il ne soit accecible sans mon autorisation
Fais un console.log sur ton todos pour voir si c'est bien un élément du dom
Ca marche pas non plus mdr
Voilà ce que j'ai :
Mais j'ai pas trop compris ça voulait dire quoi enfaite
Je vais manger je reviens
Tes 2 console.log s'affichent au moins ?
Bah de base, le premier s'affichait pas à cause de l'erreur
Oui
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
Ah.. Parce-que ça represente plusieurs elements en même temps sur mon code HTML ?
Et si tu tapes l'URL directement ?
getElementsByClassName va t'envoyer tous les éléments avec cette classe oue
Si tu veux récupérer juste un élément, faut mettre un ID et utiliser getElementById
Donc enfaite, je dois transformer ma class (.todo element) en id ?
Si c'est voué à être un élément unique oue
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
Et tu veux faire quoi sur ces éléments du coup ?
Je crois pas avoir compris ta question..
Ah tu veux dire, quand on clique sur le bouton corbeille ?
Une fois que tu auras récupérer tes éléments, tu veux en faire quoi ensuite ?
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
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
Quelque chose comme ça ?
Oui
Pour être encore plus rapide, tu peux utiliser un forEach
Je me suis dis ça aussi ^^
Elle est cool cette fonction, mais ducoup ça je le mets ou exactement ?
ça m'ouvre le fichier
C'est-à-dire ?
Attend je vais t'envoyer tout mon code javascript
Ok voilà
C'est parce que tu peux pas faire de requêtes AJAX pour faire dl un fichier
Faut que tu mettes un <a> directement. Ou un location
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
}
}
Tu le mets au moment où tu veux que ça soit traité
Bah vers la fin de la création de la todo je suppose ?
Mais je veux que le fichier ne soit téléchargeable que si l'utilisateur a rentré le bon code que je vérifie juste avant
Parce-que j'ai essayer mais sans grand succès..
Fais le côté back
Oui si tu en as pas besoin avant
comment ça
Bah je l'ai mis entre inputel.value = null et newTodo.appendchild(...) donc ouais à la fin 🙂
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
c'est déja fait
Mais du coup je fais comment pour lui faire télécharger
Sans que le dossier soit un static du coup
Et quand tu get les éléments, t'as juste besoin de faire le nom de la class. Pas le . avant
Sans que le dossier soit static, t'arrives pas à le dl quand tu vas le lien directement ?
Non logique
Ou exactement ?
Et ducoup pour le for loop, quand je check dans ma console, une fois la todo crée bah rien ne s'affiche
Parcontre quand j'essaye de console.log(todos), là ça me mets bien la collection HTML dans la console
T'es censé pouvoir le faire
Non mais ok
Quand je dis appeler ton API, c'est via la route que t'as setup
Pas le chemin du fichier
On revient au soucis du début, probablement que tu get les éléments avant que ça soit dans le dom
Donc je dois mettre document.getClassName après la création de la todo list ducoup ?
À chaque fois que tu créés un élément de la todo yep
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
Ton addEventListener faut l'ajouter sur tes éléments dans ton forEach
Pas sur todos
Vu que todos est un tableau
404
Ah oui j'avais oublié la boucle
Pourtant dans mon fichier sa fonctionne
C'est un POST et quand tu fais un appel dans ton navigateur c'est un GET
Transforme ta requête en GET 😁
Ca tourne a l'infini
parceque dans ma requette j'ai mon code que l'utilisateur a rentrer
Transforme tes paramètres de ton post en params de ton GET
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é
Il faut enlever le . Dans ton getElementByClassName
Et il manque ta boucle
todos.forEach()
C'est bon ça refonctionne mais il ne se passe toujours rien
todos.forEach((element) => {
console.log(element);
});```
T'arrive via le lien à le DL ?
Ah oui merci !
Oui c'est ce que je t'expliquais plus haut
Du coup je peux faire comment ?
Tu peux pas le faire via une requête AJAX. Faut que tu as un <a> ou un location
C'est quoi location ?😅
Location c'est ce qui permet de changer la page
J'ajoute todos.addEventListener("click", funcdelete) à la boucle foreach aussi ?
Ah oui mais du coup le fichier si on rentre directement l'adresse de destination on peut y accéder
Ça, ça dépend ce que tu veux que le listener fasse
Pas si tu check le code côté back
Si c'est le mauvais code, tu renvoies une erreur
Je vais voir si ça marche déjà pour le truc
Les parenthèse sur t'a fonction
Pas bête je vais regarder ça merci !
Bah en plus d'être dans le désespoir (on est dans le code, nan ?) j'aide @bitter mango avec mes problèmesp tdr
Mdrr
todos.forEach is not a function 
Nope
Non mais j'ai compris ça voulait dire quoi mon erreur
Mais le contexte ça non mdr
Le problème est là je pense
Non ma faute là. C'est pas vraiment un Array. Utilise plutôt :
Array.prototype.forEach.call(todos, (elem) => {
console.log(elem);
});```
Mais j'ai pas d'array dans mon code ?
Ton todos c'est un " Tableau " d'éléments si
J'en apprends des choses décidemments
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 🙂
GG !
Et merci à toi aussi, car tu m'a donné une petite idée sur mon problème 🙂
Bon bah je vais y aller, bonne soirée à tous !
Si tu veux je suis en train de dev un site avec plein de petits programmes JS a faire je peux te passer le fichier comme ça tu pourrait t'entraîner dessus ;)
C'est gentil, je te mp si ça me tente 😉
D'acc
Bonjour , j'ai un souci quand je fait /ping mon bot n'envoye aucun message
https://sourceb.in/xMmmmIURv9
Sans les logs on peut pas trop t’aider :/


