#javascript-typescript
1 messages · Page 92 of 1
ton json non valide vient du back que tu request ?
je peut plus voir ton code ton paste est expiré...
Nope il viens du front j'ai une variable {"message":message} que je stringify
okay et quand tu JSON.parse ta variable ça donne ça ou ta pas essayé ?
A vrai dire j'ai pas pensé à retester car j'avais une erreure quand je le faisais
Mais entre temps j'avais changé deux trois truc
yes test et dit moi
Ok
déso du retard je viens de revenir sur mon pc et ca marche pas parse
window.onload = () => {
let texte = document.querySelector("#text")
texte.addEventListener("keyup",verifieEnter)
}
function verifieEnter(e){
if (e.key === "Enter"){
ajoutMessage()
}
}
function ajoutMessage(){
let message = document.querySelector("#text").value
console.log(message)
if (message !== ""){
let json = {
"message" : message,
};
let resultJson = JSON.stringify(json)
console.log(resultJson)
axios.post("{{ path('add_direct_private',{token: '47f6edd3-438f-416d-a4f7-99d76c21c181'}) }}", resultJson)
.then(function (response) {
document.querySelector("#text").value=""
console.log(response.data);
})
.catch(function (error) {
console.log(error);
});
}
}
voici le code
return $this -> json(["msg" => $request -> request -> get('message')]);
met ton message ici
Tu peux stop ping tout le monde s'il te plaît merci et venir en mp ne change rien tu veux de l'aide ? Alors attend ton tour stp
J’aimerais savoir si quelqu’un savais comment faire un welcome message sans embed
Bah attend pas la peine de ping/mp
Et puis en attendant tu peux faire tes recherches
Pas de soucis
tu peux faire un var_dump de $request -> request -> get('message') ?
@civic dragon
et m'nevoyer le résultat biensur
Salut, comment je pourrais faire en sorte le plus efficacement possible que le bot envoie un message toutes les 2 heures, donc 8 10 12 14 16... Comme actuellement j'ai fais ce code mais il envoie à partir du moment ou ils s'est lancé le bot
var voteEmbeb = new MessageEmbed()
.setTitle('Vote pour le serveur et remporte 50K ou et le plus de vote du mois !')
.setColor(colorbot)
.setDescription(`:topserver: Vote sur [Top Serveur](https://top-serveurs.net/garrys-mod/splife)\n
:urgence: **LES PERSONNES QUI VOTENT LE PLUS DURANT CE MOIS-CI GAGNERONT**\n
*1er : Premium*
*2ème : 2 Armes Permanentes*
*3ème : 1 Armes Permanente*\n
__Pour cela vous devez votes en mettant le même nom à chaque vote (possible toute les 2 heures)__
*PS: Les classements seront donnés toutes au long du mois !*\n
:pointorange:*Attention suit ce [Tuto](https://splife.fr/forums/index.php?threads/recevoir-de-largent-ig-gr%C3%A2ce-aux-votes.1440/) afin de recevoir les 50K par vote*`)
setInterval(function() {
client.channels.cache.get(channelvote).send({ content: "*Envoie !notifvote pour recevoir une notification toute les 2 heures* <@&907319885766492240>",embeds: [voteEmbeb] });
}, 120 * 60000);
Avec une tâche cron
C'est pareil que avec embed. Tu utilises l'évent guildMemberAdd et tu récupère ton channel a partir du message ou du member.guild puis tu envois avec la fonction send
Je vais te donner quelque chose attends
Avec ça tu vas pouvoir répéter toutes les 2h une fonction de manière très simple
Sinon tu fais un setTimeout()
Tu peux faire exec une tache cron pour ce genre de truc? 🤔
Genre il voudrais juste que au lieu que ça send à 14h28 (imaginons heure ou il a start le bot) que ça send les messages a 14h pilles
Genre si tu lui dit a ta tache cron toutes les 2h ils vas te les sortir au moment ou le bot start
Nan, c'est moi le problème mon cerveau mou
Sinon tu veux faire comment ?
Ok merci oui en gros c'est des tâches que tu fais
En vrai faire une vérif une fois le bot lancer check l'heure et adapter le premier setInterval a ça 
Mais une tache cron, c'est bien mieux 
Une tâche cron tu peux faire toutes les 2h si tu veux, mais il me semble qu'il y a possibilité de faire toutes les 2h à partir de minuit
Après je l'ai pas beaucoup utilisé donc j'en sais rien
Je l'utilisais a l'époque, mais léger quoi mdrr
Je vais look avec lui
Ty bg 😉
donc ça c'est que tu renvois ? et pas ce que tu reçois et ce que tu envoie en front n'est pas null donc le problème vient de ton back end alors
c'est ce que je resoit
ce que j'envoie ca ressemble a ca
{"message":"dfsdf"}
@burnt perch
ok alors si c'est null c'est que tu dois avoir un problème en back je pense
je vois pas d'ou ca peut venir a part que ce que m'envoie axios c'est {"message":"dfsdf"} : ""
je sais pas pourquoi ca m'envoie ca
attend je crois qu'on s'est emmêlé {"message":"dfsdf"} : "" c'est ce que tu reçois en back depuis ton front c'est ça ?
donc dans ce cas :
let resultJson = JSON.stringify(json)
ça donne quoi ?
c'est ce que j'ai deja
en gros je post mon message avec axios et le recupere avec symfony
juste quand je recupere je resoit {"message":"dfsdf"} : ""
sinon quand j'envoie j'ai bien
{"message":"dfsdf"}
dans mon console.log
tu envois un json normal mais tu ne met aucun header ducoup axios envoie pas vraiment le bon truc essaie un truc comme ça :
let resultJson = JSON.stringify({ "message": "j'aime les licornes"});
const res = axios.post("{{ path('add_direct_private',{token: '47f6edd3-438f-416d-a4f7-99d76c21c181'}) }}", resultJson, {
headers: {
// présisce que tu envois du JSON
'Content-Type': 'application/json'
}
});
console.log(res.data.data); // '{"message":"ta reponse"}'
essaie ça
jtai envoyé un truc avec un await enlève le car tu n'est pas en async
enfin la jlai enlever du message
bah la ca m'envoie quarement que le post est vide meme pas null il a rien ressu
axios.post('{{ path('add_direct_private',{token: '47f6edd3-438f-416d-a4f7-99d76c21c181'}) }}', {
message: "message",
}, {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})
.then(response => {
console.log(response.data);
});
et comme ça ?
euh mince j'avais fait une erreur c'est fix
et tu reçois quoi niveau front ? en réponse ?
dans ton back tu fais quoi avec ton message ?
#[Route('/message/add/{token}', name: 'add_direct_private' , methods: ["POST"])]
public function add($token , Request $request): Response
{
return $this -> json(["message" => $request -> request]);
}
Et tu le reçois tjr en null Depuis le front ?
oui
Et sans le stringlify ça donne quoi ?
null encore
Okay bah att je re après mais pour moi ça devrai être good att
ok tqt
cc je voudrais savoir si c'est envisageable de coder un jeu 2d en pur javascript
et s'il y a plus simple, quel module js je pourrais utiliser
@cyan iron Tu sais pourquoi, en local sa fonctionne bien mais sur un hébergeur de bot j'ai cette error qui pop
node:events:368
throw er; // Unhandled 'error' event
^
TypeError: Cannot read properties of undefined (reading 'send')
at Job.job (/home/container/index.js:36:54)
at Job.invoke (/home/container/node_modules/node-schedule/lib/Job.js:168:15)
at /home/container/node_modules/node-schedule/lib/Invocation.js:268:28
at Timeout._onTimeout (/home/container/node_modules/node-schedule/lib/Invocation.js:228:7)
at listOnTimeout (node:internal/timers:557:17)
at processTimers (node:internal/timers:500:7)
Emitted 'error' event on Job instance at:
at /home/container/node_modules/node-schedule/lib/Invocation.js:277:13
at Timeout._onTimeout (/home/container/node_modules/node-schedule/lib/Invocation.js:228:7)
at listOnTimeout (node:internal/timers:557:17)
at processTimers (node:internal/timers:500:7)
Envois le code correspondant stp
Tu as insallés les lib / package correspondant sur ton hebergeur?
Salut , je recherche un systeme de ticket discord.js version 12.5.1 mais pas en module.export car je n'ai jamais rien compris a ça
Merci d'avance
Je ne vois que ça
Bah c'est la seul façon d'exporter quelque chose en cjs. Tu as export en mjs mais pas plus. Donc tu cherches un bot tous fait, qui fait les tickets le tout dans un seul fichier si j'ai bien compris ?
“Pas en module.exports” 💀
Tu as des module NPM pour ça aussi
J'en ai trouver 1 pour le moment je vérifie qu'il marche bien
Après tu peux le faire toi même aussi. Il y a rien de bien compliqué en une cinquantaine de lignes ça doit être réglé
Faut juste bien visualiser les différentes étapes
Oui
salut , vous savez si il ya moyen d'envoyer un message apres une / commande ?
car jai actuellement ca
const { SlashCommandBuilder } = require('@discordjs/builders');
const { CommandInteraction, Message } = require('discord.js');
module.exports = {
data: new SlashCommandBuilder()
.setName('send')
.setDescription('send a message')
.addStringOption((option) =>
option
.setName("message")
.setDescription("si vous voulez send un message")
),
/**
*
* @param {CommandInteraction} interaction
*/
async execute(interaction) {
const messageToSend = interaction.options.getString('message');
await interaction.reply('Fais !');
channel.send({ content: messageToSend});
},
}
mais le message ce send pas et il me drop ca en erreur
hey c'est interaction.channel, ensuite ça voudrait dire que tu aurais déjà reply à l'interacion, tu le fais pas dans ton interactionCreate ? Sinon c'est juste le debugger 🤔
ouain je repond "fais !" a ma / mais ensuite j'aimerais le l'option message s'envoie apres en dehors du reply de la /
bah interaction.channel.send
ah bas c'est good c'est bien interaction.channel.send merci beaucoup 👍
re mdr jai encore un petit soucis avec les / jarrive pas a deploy ma commande
const { SlashCommandBuilder } = require('@discordjs/builders');
const { CommandInteraction, Message,MessageEmbed } = require('discord.js');
module.exports = {
data: new SlashCommandBuilder()
.setName('embded')
.setDescription('aembed')
.addStringOption((option) =>
option
.setName("title")
.setDescription("titre en haut de l'embed")
)
.addStringOption((option1) =>
option1
.setName("link")
.setDescription("lien de l'image")
),
/**
*
* @param {CommandInteraction} interaction
*/
async execute(interaction) {
const NameToEmbed = interaction.options.getString('message1');
const LinkInEmbed = interaction.options1.getString('message2');
const exampleEmbed = new MessageEmbed()
.setColor('black')
.setTitle(NameToEmbed)
.setImage(LinkInEmbed)
await interaction.reply('Fais !');
interaction.channel.send({ embeds: [exampleEmbed] });
},
}
tu as quel code pour déployer les commandes ?
celui de pentimax je tenvoie ca
const fs = require('fs');
const { REST } = require('@discordjs/rest');
const { Routes } = require('discord-api-types/v9');
const { clientId, guildId, token } = require('./config.json');
const commands = [];
const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));
for (const file of commandFiles) {
const command = require(`./commands/${file}`);
commands.push(command.data.toJSON());
}
const rest = new REST({ version: '9' }).setToken(token);
(async () => {
try {
await rest.put(Routes.applicationGuildCommands(clientId, guildId), { body: commands });
console.log('Les commandes ont étés enregistrées !')
} catch (error) {
console.error(error);
}
})();
et sur discord tu ne vois pas la commande quand tu fais / ?
jai une erreur quand je fais node deploy-commands
Graphical User Interface to explore and edit your bot's slash commands!
Regarde ici si tu as tes / cmds
la quelle ?
ah
y'avais un lien
DiscordAPIError[50035]: Invalid Form Body
4[APPLICATION_COMMANDS_DUPLICATE_NAME]: Application command names are unique
at SequentialHandler.runRequest (C:\Users\tytym\Desktop\TyTyBase\node_modules@discordjs\rest\dist\lib\handlers\SequentialHandler.js:198:23)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async SequentialHandler.queueRequest (C:\Users\tytym\Desktop\TyTyBase\node_modules@discordjs\rest\dist\lib\handlers\SequentialHandler.js:99:20)
at async C:\Users\tytym\Desktop\TyTyBase\deploy-commands.js:18:9 {
rawError: {
code: 50035,
errors: { '4': [Object] },
message: 'Invalid Form Body'
},
code: 50035,
status: 400,
method: 'put',
url: ''
}
du coup tu as 2 commandes avec le meme nom
jai verifier et pourtant non
Je suis un fantôme ? 
Log ta variabel commands
enfaite c'est good
je vien de relancer visual
je pense quil prenais pas en compte mes changement ce tdc
merci beaucoup tout le monde
peut etre un fichier pas enregistré qui posait problème alors
j'imagine par contre jai une question j'utilise le clientId et le guildId pour que le bot marche mais je vais pas mamuser a faire un bot par serveur qui a le meme code sachant que je dois le deployer sur plusieur serveur
ya pas un moye pour que c'est case s'auto remplisse par rapport au serveur ?
tu pourras utiliser des commandes globales disponibles sur tous les serveurs
c'est a dire ?
on s'en sert juste pas quand on dev le bot car il y a une mise en cache de 1h par discord. En gros quand tu crée /met a jour/supprime une commande ca peut prendre jusqu'a 1h pour s'afficher sur ton serveur
ah
C'est le meme code que actuellement sauf que tu change le nom d'une méthode et tu enlèves le guildId
donc pour le moment vaut mieux que je finisse le dev en local et apres les rendre global
oui
okay thanks
Bonjour j'ai trouver un script pour afficher la valeur d'un input et d'un textarea et j'ai mis la fonction sur un bouton mais le probleme c'est que a chaque fois qu'on appuyer ca rajoute le texte en une deuxieme fois ainsi de suite.
function GetValue() {
var input = document.getElementById('in').value;
var input1 = document.getElementById('in1').value;
var input2 = document.getElementById('in2').value;
var div = document.getElementById('print')
div.innerHTML += input
div.innerHTML += input1
div.innerHTML += input2
}
est ce que vous savez comment faire pour que quand par exemple on met du texte dans le input il s'affiche et que si apres on met du texte dans le textarea et qu'on appuie, sa rajoute l'affichage du textarea mais pas une deuxieme fois le input.
Enfaite la tu utilises += donc tu concaténe utilise plutôt juste =
re mdr petit soucis je cherche a envoyer un message en mp a quelqun via le bot . donc j'utilise interaction.user.send({ content: messageToSend});
Enfin si j'ai bien compris @supple cairn
@oak turret salut dsl de la mention mais es que tu a le discord de luthly stp
en definisant bien que ``` const user = interaction.options.getUser('target');
mais le bot me mp moi ce debile
Ah oui merci ca fonctionne, c'est pas si compliquer
variable += 5 ça revient en gros à faire variable = variable + 5
tu as fais interaction.user pas user dirrectement
du coup le bot récupère la personne qui a fait l'intéraction pas ta variable
interaction.user c'est toi
ah oui daccord mdr
ah mais apres quand on appuie sur le boutton en rajoutant du text dans un autre input sa rajoute pas l'autre text
Bah Smaug a été plus fast que moi
je vien de comprendre le fonctionnement des / mdrrr

merci beaucoup
Toi ce que tu veux c'est les arguments
Donc ton const user c'est ça que tu recherches
Ok att je crée un fil vient car ya déjà du monde la
Normalement ça simplifie !
Bonjour, j'ai cette erreur dès que j'appuie sur le bouton supprimer
C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\rest\RequestHandler.js:349
throw new DiscordAPIError(data, res.status, request);
^
DiscordAPIError: Cannot send messages to this user
at RequestHandler.execute (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\rest\RequestHandler.js:349:13)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async RequestHandler.push (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\rest\RequestHandler.js:50:14)
at async DMChannel.send (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\interfaces\TextBasedChannel.js:172:15) {
method: 'post',
path: '/channels/909460679243739136/messages',
code: 50007,
httpStatus: 403,
requestData: {
json: {
content: undefined,
tts: false,
nonce: undefined,
embeds: [
{
title: null,
type: 'rich',
description: '**📰 Logs de votre ticket `909462375936188476`: [**Cliquez ici pour voir les logs**](https://hastebin.com/buvexecova)**',
url: null,
timestamp: 2021-11-14T15:19:11.302Z,
color: 3092790,
fields: [],
thumbnail: null,
image: null,
author: {
name: 'Logs Ticket',
url: undefined,
icon_url: 'https://media.discordapp.net/attachments/904875791890923571/906959858450980955/88.png?width=468&height=468'
},
footer: null
}
],
components: undefined,
username: undefined,
avatar_url: undefined,
allowed_mentions: undefined,
flags: undefined,
message_reference: undefined,
attachments: undefined,
sticker_ids: undefined
},
files: []
}
}
normalement mdr
il a réussi non déjà ? 
courage avec les bouton
le user a peut etre bloquer le bot
Oui
Erwin texte aera input
t'inquiète bientôt fini y'a plus que celui la
je met .catch() avant le send ou après ?
ha mince
et dans quel dossier ?
La méthode catch() renvoie un objet Promise et ne traite que des cas où la promesse initiale est rejetée. Elle a le même effet qu'un appel à Promise.prototype.then(undefined, siRejetée) (c'est en fait ce qui se passe dans le moteur, obj.catch(onRejected) est traduit en obj.then(undefined, onRejected)). Cela signifie qu'il est nécessaire de fourn...
Tient
Tu sais ce qu'est une promise et comment ça fonctionne ?
pas vraiment non
Ok, bon je vais essayer de trouver un bon truc pour t'expliquer
car de se que vous venez de me dire genre de de mettre .catch() sur mon .send() rien que sa je ne sais pas ou le mettre ni comment
Lorsque tu send un message, ça te retourne une promise
Tu vois c'est écrit en bas
Cette promise contient ton Message, mais ici tu t'en fiches
Toi ce que tu veux, c'est savoir si tout se passe bien quand tu exécutes ta ligne de code

Et sur une promise tu as le .catch(). En gros, si ton .send() à un problème, ça va passer dans le .catch(), et ça va donc t'éviter l'erreur étant donné que tu la gère
ok donc je le met après mon .send()
Tu comprends ? Ou tu veux que je réexplique ?
message.channel.send('Salut !').catch((err)=> {
console.error(err)
})
Ici ça va t'afficher l'erreur dans ta console
ha ok je vois
Après tu peux ne rien mettre dans ton catch, et ça va juste ne pas afficher l'erreur et l'éviter
'Fin l'éviter non
Mais tu n'as pas le choix de toute manière, je te conseille de mettre dans ton .catch un message qui dit " Désolé mais je ne peux pas envoyer de message à cet utilisateur "
ok beh je vais essayer sa je vous tient au courant merci
Bonjour
Je cherche quelqu’un qui sait comment éviter que les gens utilise la commande sauf les modos et le staff
T'as un début de code ?
tu peux vérifier les permissions ou les roles
tu as GuildMember.permissions.has() qui devrait t'etre utilie
J’ai kick , ban , unban, mute , unmute sauf que sur mon compte test sans perms je peux utiliser
@keen narwhal mon vrai compte @scarlet wharf et celui ci mon compte test
Smaug t'as donné la réponse 🙂
Après si tu voulais vérifier que ce soit que le staff (et donc peut etre un certain role) tu as la meme chose que permissions mais avec roles.has
juste j'ai pleins de .send je le place ou donc ?
D'après toi ?
Sur celui qui envoie un message après le clic sur le bouton 🙂
ha oui je suis vraiment pas intelligent mdr
Tu peux le mettre sur tous ceux qui envoient un message à un utilisateur
Mais si
.then(async () => {
const embed = new client.discord.MessageEmbed()
.setColor('6d6ee8')
.setAuthor('Ticket', 'https://media.discordapp.net/attachments/904875791890923571/906959858450980955/88.png?width=468&height=468')
.setDescription('\*\*```Contrôle des tickets```\*\*')
.setFooter('SLMD・Développement', 'https://media.discordapp.net/attachments/904875791890923571/906959858450980955/88.png?width=468&height=468')
.setTimestamp();
const row = new client.discord.MessageActionRow()
.addComponents(
new client.discord.MessageButton()
.setCustomId('delete-ticket')
.setLabel('Supprimer le ticket')
.setEmoji('🗑️')
.setStyle('DANGER'),
);
chan.send({
embeds: [embed],
components: [row]
});
});
je le met a la ligne 14 ?
@cyan iron
Quel est le problème ?
.
je le met à la ligne 14 ?
Hello, quelqu'un aurait une idée de comment envoyer un même message à tous les serveurs ou un bot est présent ?
Si c'est un bot de raid que tu fais on t'aide pas 
Je ne vois pas tes lignes moi
Tu ne peux pas réellement envoyer un message à un serveur, donc tu veux l'envoyer où exactement ?
Haha non pas du tout rassure toi, c'est juste que pour mon projet j'ai deux serveurs discord pour différents services, et je n'arrive pas à gérer deux serveurs en même temps
Ah d'accord je vois
Salut, j'ai mon 2ème addField qui marche pas c'est le message.channel qui le fait bug je n'ai pas pourquoi
client.on("messageDelete", async message => {
const embedLogsMessageDelete = new MessageEmbed()
.setColor(config.colorbot)
.setAuthor(message.author.username, message.author.displayAvatarURL({dynamic: true}))
.addField('Message supprimé', message.content)
.addField('Salon', message.channel)
client.guilds.cache.get(config.idserver).channels.cache.get(config.channellogs).send({ embeds: [embedLogsMessageDelete] });
});
Erreur ?
Dans un salon précis sur chaque serveur
Uncaught RangeError [EMBED_FIELD_VALUE]: MessageEmbed field values must be non-empty strings.
Tu fais un array avec tous les identifiants des salons dans lesquels tu veux envoyer le message et tu fais une boucle
Il ne le capte pas
client.on('message', () => {
if (message.content === "!sendguildmessages") {
var guildList = client.guilds.array();
try {
guildList.forEach(guild => guild.defaultChannel.send("messageToSend"));
} catch (err) {
console.log("Could not send message to " + guild.name);
}
}
});
Désolé jsuis sur téléphone
Je crois que client.guilds.array, n'existe plus dans discord.js
Okay, faut juste que j'arrive à trouver comment préciser dans channels.find l'id du channel
pourquoi pas utiliser un forEach ?
let array = ["617677968474636298", "781299002695483442"]
for (const element of array) {
client.channels.cache.get(element)?.send(tonmsg)
}
Dans son cas il veut envoyer un message dans des channels précis
ah okay
Yep, okay, alors je vais essayer en y intégrant un embeed
pour une fois que javais des connaisance mdrr
La valeur de ton field est vide, donc message.content ou alors message.channel est undefined
Essaye de console log ton message pour voir ce que ça te renvoie
Ça me paraît bizarre
Oui, mais je ne sais pas quelle fonction permet ceci, j'ai regardé dans la doc mais bon
Y'a fetch, qui me retourne une promise
client.guilds
Bah client.guilds.array()
Ouai comme dans l'exemple en haut que j'ai send normalement ça marche
Non mais en fait on s'éloigne
Il a pas besoin de gérer les serveurs
S'il a des salons précis, il récupère les identifiants des salons, et il boucle dessus c'est tout
Non mais la méthode de @burnt perch est intéressante, car ça m'évite de modifier le fichier, si je veux changer le channel
Comme j'ai fait ici
Sauf que sa méthode ne choisis pas le channel, ça prend le channel par défaut
Oui, mais dans la boucle il doit y avoir moyen de récupérer le nom du channel, et ensuite de faire une comparaison pour récupérer l'id du channel
pour l'instant un console.log de bot.guilds.array ne retourne rien donc bon
Pck ducoup la tu dois retoucher le code pour ajouter un server et les channel bah il a qu'à récup un Channel en commun dans tout les serveur
Pourtant il me renvoie bien le channel mais il ne veux pas dans le addfield
car client.guilds.array() n'existe pas (en tout cas en v13 🤔 )
Ah bah voilà, c'est ce que je me disais
client.guilds.cache
en fait si tu veux pas retoucher le code, soit tu prends le default channel, soit tu stockes une id de chan dans une db
oui
Tu veux que je fasse quoi de tout ça ?
Si t'as pas compris comment fonctionnait le catch, dit le
Car il me semble que c'est le cas
bah c'est pas sa c'est que je trouve pas le bon .send()
C'est toi qui a dev le bot je saurais pas te le dire bg
je m'en doute
@charred lake Du coup si on reprend, tes messages tu veux l'envoyer dans un channel précis qui est fixe ?
Ouep, mais je cherche à me compliquer la vie pour gagner du temps ensuite
Je suis entrain depuis cache, de voir si je peux récupérer le nom des channels
\*\*')
.setFooter('SLMD・Développement', 'https://media.discordapp.net/attachments/904875791890923571/906959858450980955/88.png?width=468&height=468')
.setTimestamp();
const row = new client.discord.MessageActionRow()
.addComponents(
new client.discord.MessageButton()
.setCustomId('delete-ticket')
.setLabel('Supprimer le ticket')
.setEmoji('🗑️')
.setStyle('DANGER'),
);
chan.send({
embeds: [embed],
components: [row]
});
});
Y'a que sa comme .send() qui appartient a ce message
Alors si tu veux un conseil ne fonctionne jamais avec des choses qui sont modifiables comme le nom
C'est pas forcément bon, un ID ne changera jamais par exemple
Si tu changes le nom de ton salon c'est cuit
juste une question, pourquoi tu stockes la lib discord.js dans ton client ? 🤔
J'avoue, je vais me baser sur l'id
je sais pas bonne question mdr
```js
let array = ["617677968474636298", "781299002695483442"]
for (const element of array) {
client.channels.cache.get(element)?.send(tonmsg)
}
➜ [Voir le message original]([#javascript-typescript message](/guild/223070469148901376/channel/617677968474636298/))
C'est aussi con que ça
Je vais faire des tests, bouge pas
Je te jure que ça va fonctionner, et si tu veux faire en sorte que ça soit dynamique dans le futur ça fonctionnera
J'ai suivi ta méthode, pour l'instant on est sur un échec
J'essai de trouver pourquoi
T'as une erreur ?
C'est étonnant
J'ai enlenvé le ?, aucune erreur

tout les channels sont pas cache si ? 🤔
tu es sur que ton code s'exécute ? 🤔
Je check dans le cache, je trouve bien mon channel
Mon array est bien rempli
Et oui mon code s'éxecute
Montre ton code en entier
messageDatas = response['data']['message'];
titleDatas = response['data']['title'];
console.log(titleDatas);
console.log(messageDatas);
const exampleEmbed = new MessageEmbed()
.setColor('#FF924D')
.setTitle(titleDatas)
.setURL('https://choose-app.com/')
.setDescription(messageDatas)
.setTimestamp()
let array = ["909467661384179754", "780150862113800243"]
for (const element of array) {
bot.channels.cache.get(element).send('bonjour')
}
Un console.log de ?
N'importe quoi
" hey "
Pour savoir s'il passe par là quoi
et console.log(element) tant que t'y est dans ta boucle for
nop rien du tout 😦
for (const element of array) {
let channel = bot.channels.cache.get(element)
console.log(channel)
channel.send('bonjour')
}
Essaye ça
Tous est bien listé, mais toujours pas de message envoyé
Bon 😂
ton bot a la perm d'écrire dans ces salons ? (si pas normalement tu aurais une erreur)
Oui
sinon c'est rate limit de discord ptet ?
On va faire un truc
for (const element of array) {
bot.channels.cache.get(element).send('bonjour')
.then(m=>console.log(m.url))
.catch(err=>console.error(err))
}
perm ok aussi
Aucune url
undefined ?
RIen du tout
le msg se send pas x)
Rate limit c'est pas possible
baaaaa
c'est quoi ,
comment c'est possible
Je vois que ça, c'est impossible sinon !
for (const element of array) {
bot.channels.cache.get(element).send('bonjour')
.then(m=>console.log(m.url))
.catch(err=>console.error(err))
}
Essaye ça
Et si ça met rien rate limit 100%
Ta promise ne renvoie rien ça veut dire qu'elle est " coincée "
ça renvoi rien
Bah voilà
maintenant fait ça :
for (const element of array) {
console.log(bot.channels.cache.get(element).send('bonjour'))
}
Et ça va te mettre un " Promise { < pending > }"
exact
Voilà
Donc t'es rate limit :/
Si c'est un bot privé change de token
Tu recréé un autre bot je veux dire par là
cc
j'ai un soucis avec mon bot et j'arrive pas à le régler depuis des heures ...
j'essaie de créer un salon avec create() et d'ajouter des permissions au salon
Montre ton code
discord me renvoie : Missing Permission
Le role de mon bot a toutes les permissions, sauf adminisatrateur (quand je met admin, sa marche)
Bah tu as ta réponse. Ton bot n'a pas les permissions nécessaires
Et tu n'as pas besoin d'être admin pour le coup
await interaction.guild.channels.create('test', {
type: 'GUILD_VOICE',
userLimit: 5,
parent: 'channel_category',
permissionOverwrites: [
{
id: 'iddemonrole',
deny: [Permissions.FLAGS.CONNECT, Permissions.FLAGS.SPEAK],
}
],
});```
il a toutes les perms justement
Cette permission doit être cochée
Elle est cochée
C'est très bizarre
console.log(interaction.guild.me.permissions.has("MANAGE_CHANNELS")); renvoie true d'ailleurs
ca fait des heures que je suis dessus, je comprends rien
Je vais tester sur mon bot
dès que je coche la perm admin, tout fonctionne
Je viens d'essayer avec un nouveau bot, ça marche pas non plus
Bah écoute ça fonctionne parfaitement bien pour moi
Il se passe quoi là vous avez des problèmes bizarres les gars 😂
il a les perms dans la catégorie channel_category ?
J'ai trouvé le fix
Ah bien vu ça
Sérieux ?
Yep, j'ai tout donné
T'as fait comment ?
My bad, j'avais un process.exit()
Tu peux me tuer, je t'autorise
Merci pour votre aide héhé
Le mec se tirait une balle dans le pied depuis le début

@fair surge Essayes de créer un channel sans permissions overwrites pour voir
juste .create('test')
Mais du coup, je vois pas trop comment faire pour après le send, lui dire d'envoyer un embeed
Sans permission admin
Tu l'as au dessus ton embed
si jenlève le permission overwrite, ça fonctionne
Ouep, j'ai mis la const dans le send, mais j'ai une erreur
Ah-ha !
Ok attends je regarde de plus près
ça ne fonctionne plus comme ça
.send({
embeds : [tonEmbed]
})
gérer les rôles?
T'as peut être raison
Bah non Hareng il a toutes les perms son bot
il a la perm gérer les roles
même dans la catégorie ?
Oui
console.log(interaction.guild.me.permissions.has("MANAGE_CHANNELS"));
console.log(interaction.guild.me.permissions.has("MANAGE_ROLES"));
Renvoie true
alors
ça pour la guild
mais ça dit pas pour la catégorie
pour la catégorie
J'ai une bonne et une mauvaise nouvelle, la bonne nouvelle c'est que la permission MANAGE_CHANNELS suffit
Et la mauvaise, c'est que j'ai rencontré aucun problème, donc j'ai aucune idée du pourquoi ça te fait ça
bon y'a rien qui marche avec .cach() je suis trop deg
impossible à trouver 😦
.catch 🤔
j'ai sa comme erreur
sa
C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\rest\RequestHandler.js:349
throw new DiscordAPIError(data, res.status, request);
^
DiscordAPIError: Unknown interaction
at RequestHandler.execute (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\rest\RequestHandler.js:349:13)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async RequestHandler.push (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\rest\RequestHandler.js:50:14)
at async ButtonInteraction.reply (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\interfaces\InteractionResponses.js:98:5) {
method: 'post',
path: '/interactions/909500212593188904/aW50ZXJhY3Rpb246OTA5NTAwMjEyNTkzMTg4OTA0OmpVSVJZRGE3aGh3MjMzRzBKbUl4MFRZcjVRNGlWVW1iaHluTDlGaXVBeTFUVXo1elNDRFNYU0JibXE2dGJEMEJ6dmpNVGVPbW42SDdGR2RxemZYQm5sVnR1Y1BzcXNETkRid2djU01rT0RJWHBMRkZEN2txaHdCWGZVVGZ1S29v/callback',
code: 10062,
httpStatus: 404,
requestData: {
json: {
type: 4,
data: {
content: '**Ticket créé! [#909500213813723167](/guild/223070469148901376/channel/909500213813723167/)**',
tts: false,
nonce: undefined,
embeds: undefined,
components: undefined,
username: undefined,
avatar_url: undefined,
allowed_mentions: undefined,
flags: 64,
message_reference: undefined,
attachments: undefined,
sticker_ids: undefined
}
},
files: []
}
}
Tu as sûrement mis plus de 3 secondes à répondre à l'interaction
et je le change comment sa ?
Tu as deferReply pour avoir 15 minutes
bonjourn
ah bah comme on se retrouve
je n'arrive pas a me connecter a mongo db
Une erreur ?
Failed to connect to MongoDB MongoServerError: bad auth : Authentication failed.
at MessageStream.messageHandler (C:\Users\melvi\Desktop\f1-twitter\node_modules\mongodb\lib\cmap\connection.js:467:30)
at MessageStream.emit (node:events:394:28)
at processIncomingData (C:\Users\melvi\Desktop\f1-twitter\node_modules\mongodb\lib\cmap\message_stream.js:108:16)
at MessageStream._write (C:\Users\melvi\Desktop\f1-twitter\node_modules\mongodb\lib\cmap\message_stream.js:28:9)
at writeOrBuffer (node:internal/streams/writable:389:12)
at _write (node:internal/streams/writable:330:10)
at MessageStream.Writable.write (node:internal/streams/writable:334:10)
at TLSSocket.ondata (node:internal/streams/readable:754:22)
at TLSSocket.emit (node:events:394:28)
at addChunk (node:internal/streams/readable:315:12) {
ok: 0,
code: 8000,
codeName: 'AtlasError'
}
je ne dev pas un bot
normalement si mais je vais encore le changer
Et faut escape les caractères spéciaux
oui oui
du genre si mon mots de passe c'est soleil1 il faut que je fasse soleil 1 ?
Non tu garde la même typo
Bah oui sûrement sinon ça s'afficherai pas
bonsoir, dans le statut de mon bot j'aimerai afficher le nombre de personne sur mon discord, je ne m'y connais pas énormément mais j'essaye d'apprendre ! merci d'avance, Mrfafidoo.
Hey, pour avoir le nombre de serveurs sur un serveur il faut d'abord get ton serveur, puis tu utilises la propriété memberCount
Bonsoir bonsoir, je cherche depuis un moment pourquoi lorsque j'utilise un message.collector, les questions se dupliquent à chaque fois que j'y réponds ? (exemple: je rentre la commande une première fois, le collector envoie un seul message donc tout se passe bien, j'y réponds, etc.. ça se termine, je relance la commande pour tester une seconde fois et là, le collector envoie 2 messages, et donc duplique les réponses, etc..)
Ton autre collector doit encore être actif
C’est ce que je me suis dis, dans mon ˋcollector.on('end', …)ˋ je return mais je ne sais pas si c’est la bonne manière de stopper le collector (le ˋcollector.stop()` n’a rien fait de spécial en plus)
Mets une option max: 1 par exemple. Le collector.on("end") ne fait que se déclencher quand le collector est fini, il ne permet pas d'y mettre fin.
Je vois ça quand je finis le taff et je vous dis 👍
Hello, je cherche un moyen de reset la sélection d'un menu de sélection comme dans #créer-un-vocal mais je ne trouve pas comment faire :/
Hello, tu dois update le message avec le meme components
Mhm okay, c'est bien ce que je m'étais dis car j'avais pas trouvé d'autres solution.. Merci !
pas de souss
Ca n'a malheureusement rien changé
Montre nous ton code @keen narwhal
J’envoie ça
let counter = 0
const toAsk = [
"Identifiant ?",
"Raison ?",
"Durée ?"
]
const filter = (m) => {
return m.author === user
}
const collector = new Discord.MessageCollector(message.channel, filter, {
max: 3,
time: 1000 * 45,
})
message.channel.send(toAsk[counter++])
collector.on('collect', (m) => {
if (counter < toAsk.length) {
m.channel.send(toAsk[counter++])
}
})
collector.on('end', (collected) => {
if (collected.size < toAsk.length) {
const embedAbsenceError1 = new Discord.MessageEmbed()
.setColor('#36393f')
.setDescription(`
${uncheck}・Erreur
Tu as été trop lent dans le réponses aux questions posées !`)
message.channel.bulkDelete(collected.size*2)
message.channel.send(embedAbsenceError1).then(emb => {
emb.delete({ timeout: 15000})
})
return;
}
const embedAbsenceError2 = new Discord.MessageEmbed()
.setColor('#36393f')
.setDescription(`
${uncheck}・Erreur
La dernière donnée doit s'exprimer en chiffres.`)
if (!parseInt(collected.map(m => m.content)[2], 10) && collected.map(m => m.content)[2]) {
message.channel.bulkDelete(6)
message.channel.send(embedAbsenceError2)
return;
}
const embedSanction = new Discord.MessageEmbed()
.setColor('#36393f')
.setFooter('Staff: ' + user.tag, user.displayAvatarURL())
.setDescription(`${ban} Type de sanction • Bannissement !
${avatar} ID • ${collected.map(m => m.content)[0]}
${reason} Raison • ${collected.map(m => m.content)[1]}
${clock} Durée • ${collected.map(m => m.content)[2]}`)
channelSanction.send(embedSanction)
})
return;
@cyan iron
il faut vraiment que tu indente ton code c'est pas très lisible
Tiens, très bon tuto => https://discordjs.guide/popular-topics/threads.html#thread-related-gateway-events
Merci, j'essaie de comprendre pourquoi ça me renvoie msg.startThread is not a function maintenant 
Enfaite j'ai juste rien qui est à jour 
Oui faut passer en v13 sinon foutu
Bah là j'suis en galère sur l'update de Node 🤡
pourquoi ?
J'suis en v16.4.0 et il me faut la v16.6.0
tu as juste à mettre tes package à jour
C'est ce que j'essaie de faire depuis tout à l'heure 
Le mieux c’est d’utiliser nvm pour gérer ces versions
Tu auras juste à faire nvm install 16.6 puis nvm use 16.6
Hey , je suis entrain de confectionner un site avec le petit bijoux 'react' , je souhaite ajouter une photo avec 'react-boostrap' (code en dessous) mais cela ne fonctionne pas x) et je ne comprend pas pourquoi car le chemin devrait être bon (celons moi) . Merci de votre réponse .
<div>
<h2>A la une</h2>
<Row xs={1} md={2} className="g-4">
{Array.from({ length: 4 }).map((_, idx) => (
<Col>
<Card>
<Card.Img variant="top" src="./media-house/house-g4ec4c377a_640.jpg" />
<Card.Body>
<Card.Title>Card title</Card.Title>
<Card.Text>
This is a longer card with supporting text below as a natural
lead-in to additional content. This content is a little bit longer.
</Card.Text>
</Card.Body>
</Card>
</Col>
))}
</Row>
</div>
Au cas ou ...
essaye avec ../
Salut ! Nop .. Cela ne fonctionne pas
Salut j'ai se problème quand j'appuie sur le bouton supprimer le ticket comment faire
C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\rest\RequestHandler.js:349
throw new DiscordAPIError(data, res.status, request);
^
DiscordAPIError: Unknown Channel
at RequestHandler.execute (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\rest\RequestHandler.js:349:13)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async RequestHandler.push (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\rest\RequestHandler.js:50:14)
at async TextChannel.delete (C:\Users\Administrateur\Desktop\SLMD DEV TICKET\node_modules\discord.js\src\structures\GuildChannel.js:542:5) {
method: 'delete',
path: '/channels/909906005243088896',
code: 10003,
httpStatus: 404,
requestData: { json: undefined, files: [] }
}
src={require('url')}
test pour voir
bon x)
tu comprends le principe de catch // try catch ?
➜ IDBIndex.multiEntry
La propriété multiEntry, rattachée à l'interface IDBIndex, est un booléen qui indique le comportement de l'index lorsque le résultat de l'évaluation d'un chemin de clé renvoie un tableau.
Example:
var monIndex = objectStore.index('index');
console.log(monIndex.multiEntry);
➜ runtime.getPackageDirectoryEntry()
Renvoie un objet DirectoryEntry représentant le répertoire du package.
Example:
var gettingEntry = browser.runtime.getPackageDirectoryEntry()
➜ try...catch
L'instruction try...catch regroupe des instructions à exécuter et définit une réponse si l'une de ces instructions provoque une exception.
Example:
try {
instructions_try
}
[catch (exception_var_1 if condition_1) { // non-standard
instructions_catch_1
}]
...
[catch (exception_var_2) {
instructions_catch_2
}]
[finally {
instructions_finally
}]
J'ai réussi a résoudre mon bug sauvage en faisant :
'' import house from 'url' " puis
" <Card.Img src={house} />"
beh sa marche paas avec le .catch
c'est .catch déjà x)
faute de frappe
oui c'est sa
tu peux par ex ajouter
channel.delete().catch(error => console.error(error))
@sharp grail Merci beaucoup sa à marcher ⭐ ⭐ ⭐ ⭐ ⭐
Bonsoir bonsoir, je cherche depuis un moment pourquoi lorsque j'utilise un message.collector, les questions se dupliquent à chaque fois que j'y réponds ? (exemple: je rentre la commande une première fois, le collector envoie un seul message donc tout se passe bien, j'y réponds, etc.. ça se termine, je relance la commande pour tester une seconde fois et là, le collector envoie 2 messages, et donc duplique les réponses, etc..) 
➜ [Voir le message original](#javascript-typescript message)
Petit up
Tu n’as pas un dossier public ou autre avec ton appli React ?
Pour ma part, je crée un dossier par rapport à ton component dans le dossier public ex:(public/Card) et après je l'appel et l'ajoute comme ça <img src={process.env.PUBLIC_URL + '/Card/TonIMG.png'} alt={'Ton alt'} className={'ton-css'}/>
Si j'ai bien un dossier public mais je ne voit pas son utilité vue que je met tout dans le dossier 'src'.
Bonne idée, je vais tester sa . Ça a l'air mieux que ma méthode des 'import' pour chaque image x)
Tien moi au jus si ça fonctionne ou non, mais normalement y'aura pas de problème
Et bien ecoute ta methode à marcher c'est parfait ! Un grand merci a toi , je vien d'apprendre une nouvelle maniére de mettre les images un grand merci !
Pas de soucis, heureux de t'avoir aiguiller 👍
Car justement, comme Romarin te l'a dit, ton image est destinée à être affichée, et pour cela, elle doit être accessible publiquement, donc dans tes composants, ça ne le sera pas vu qu'à terme ça sera build 😄
Bah ecoute je te remerci , donc pour toi toute les images (vue que c'est afficher) de mon projet doit etre dans le dossier public ?
Ouaip 😄
Et admettons je souhaite mettre un background avec une image dans le 'scss' c'est le meme procéder ?
Yup
le dossier Public, c'est tout ce qui sera amené à être accessible par l'utilisateur, en dehors de tes pages
Musique, image, quoique ce soit 🙂
Mais dans le scss j'ai mon 'background: url('Mon url')' j'ai voulut le faire {process.env.PUBLIC_URL+'/'} mais ca n'a pas fonctionner x)
Ah non, dans le SCSS tu pourras pas x)
Eclaire moi donc ^^
Faut te dire que tes pages, composants, etc, ce n'est pas destiné à être lu "de manière brute", dans ton cas tu build ton site avant tout
Alors que tes images, elle reste normales, et doivent être accessible
Tes pages, composants, tout ce qui va être build est ta boîte noire
Tes images, faut qu'on puisse les lire de PARTOUT 🙂
Dans ton cas, au lieu de faire process.env.PUBLIC_URL, tu dois juste faire url() avec l'adresse après public
Donc si ton image est public/background/monmagnifiquebg.png tu mettras url('/background/monmagnifiquebg.png')
Okey je vais tester sa , mais ducoup pourquoi ne pas mettre le dossier 'style' dans public ?
Vue que c'est directement vue par l'utilisateur (celons moi )
car dans ton cas, les framework style React et compagnie incluent le style dans leur build, minifié et tout ce qui va avec
Ca marche okey , merci beaucoup ! Je vien d'essayer ce que tu ma dit plus haut mais cela ne fonctionne pas x)
mon url : background: url('./media/fondDecrans.jpg');
Met pas le point ahah
Tu dois te dire que tu met exactement le lien après ton nom de domaine dans une méthode url()
Donc si ton image est accessible à : http://freessee.com/media/fonddecran.jpg, tu met /media/fonddecran.jpg
Par exemple
Je comprend pas ... Lol
Oui c'est fait : background: url('/media/fondDecrans.jpg');
Et là tu n'arrives pas à l'afficher ?
Nop ...
Tu me confirmes qu'elle est dans /public/media/fonDecrans.jpg ?
Tu sais me dire ?
./src/styles/styles.scss (./node_modules/css-loader/dist/cjs.js??ref--5-oneOf-6-1!./node_modules/postcss-loader/src??postcss!./node_modules/resolve-url-loader??ref--5-oneOf-6-3!./node_modules/sass-loader/dist/cjs.js??ref--5-oneOf-6-4!./src/styles/styles.scss)
Error: Can't resolve '../media/fondDecrans.jpg' in 'D:\Programmation\PROJET\immosite\src\styles'
Soorry x)
Can't resolve '../media/fondDecrans.jpg'
Je te frappe quand? xD
S'il te dit que tu as mis ../ c'est que quelque part tu l'as mis, c'pas possible autrement x)
Ou bien vide le cache de ton framework, ca peut provenir de ça
Oui ya que un lien et c'est dans mon fichier _home.scss
j'essaie de vider le cache
'npm start -- --reset-cache '
Nan ca me fais la meme chose x)
La même erreur?
Si ca peut t'aider
et oui
.recherche-home{
background: url('/media/fondDecrans.jpg');
padding: 15px;
padding-bottom: 25%;
background-repeat: no-repeat;
text-align: center;
width: 100%;
}
i{
left: 10px;
}
.recherche-home-items{
padding-bottom: 10%;
padding: 50px;
background-color: rgba(84, 84, 84, 0.85);
border-radius: 10px;
box-shadow: 10px 5px 15px ;
}
hr{
color: white;
}
}
Mon fichier scss ou il contient le lien
Yop
exports.run = (client, message, args, warns) => {
}
var Discord = require("discord.js");
const permisjebota = new Discord.MessageEmbed()
.setTitle("⛔ je n'ai aucune autorité! :O")
.setColor('RANDOM')
.setDescription("je n'ai aucune autorité à cette commande ! Donnez-moi des autorisations ou consultez l'administrateur du serveur")
.setTimestamp()
// Embed na permisje dla użytkownika
const permisje = new Discord.MessageEmbed()
.setTitle("Vous n'êtes pas autorisé à cette commande! :O")
.setColor('RANDOM')
.setDescription("Vous n'êtes pas autorisé à exécuter cette commande ! Si vous pensez qu'il s'agit d'un bug, veuillez consulter l'administrateur du serveur! ou @peak cedar")
if (!message.member.guild.me.hasPermission("ADMINISTRATOR"))
return message.channel.send(permisjebota)
if (!message.member.hasPermission("MANAGE_MESSAGES")) return message.channel.send(permisje)
if (!args[0, 1]) {
const bananekbot = new Discord.MessageEmbed()
.setTitle("Vous n'avez pas fourni d'arguments !")
.setColor('RANDOM')
.setDescription("Utilisation correcte : `!warn <@...> <raison>`")
return message.channel.send(bananekbot)
}
var warnUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0]))
var reason = args.slice(1).join(" ")
if (!warnUser) return message.channel.send("Pas d'argument. Utilisation correcte : !warn <@...> <raison>")
if (!warns[warnUser.id]) warns[warnUser.id] = {
warns: 0,
}
warns[warnUser.id].warns++
fs.writeFile("./data/warnings.json", JSON.stringify(warns), (err) => {
if (err) console.log(err)
})
const warnembed = new Discord.MessageEmbed()
.setTitle("✅ Parfait Warn admis")
.setColor('RANDOM')
.setTimestamp()
.setDescription(`Utilisateur: ${warnUser} (${warnUser.id})
Warn Mit par: ${message.author}
Raison: ${reason}`)
return message.channel.send(warnembed)
j'ai un ptit prob
quand je @ qq'un apres et jmet la raison ça me dit
Uncaught TypeError: Cannot read property '275973540639932418' of undefined
Quelle ligne l'erreur ?
var warnUser = message.guild.member(message.mentions.users.first() || message.guild.members.get(args[0]))
28
Déjà tu peux remplacer tout tes var par let
ça change rien à ton erreur mais c'est une bonne pratique
Oe c par habitude le var c une habitude de con js js 😂
mais parcontre jcomprend pas l'erreur
😭
genre jsais pas jvois que cette ligne qui beug
Peut être que ton paramètre warns est undefined
bas il et defined dans le index
Oui mais tu l'as mis au bon endroit ? Si tu le log il a bien la bonne valeur ?
Et message.guild.members renvoi pas une collection. C'est un manager
Même en V12
jtavoue que jpense pas que jlai bien fait genre jlai defined dans index et jlai direct Mit a la First ligne
dcp c pas bon ?
Essayes de le log et tu verras
Non il manque une propriété.
console.log("test")
Non fais un console.log(warns) dans la commande
Voilà le problème
Regardes maintenant quand tu appel la fonction pour comprendre le problème à ce niveau
Tu ne l'a pas mis en paramètre de la fonction cette variable warns
quand tu as la ligne avec run(client, message, args) faut ajouter un paramètre args warns
3
Ah oui excuses je me suis trompé dans mon message
Ça c'est bon maintenant faut regarder quand tu appel la fonction
Ça c'est la déclaration
Normalement ça doit être à la fin de l'évent "message"
Vers la fin en général après ça dépend de ton code
Fais voir
Et probablement même pas définis dans le fichier en question
Et du coup déclare la variable dans le fichier aussi
Tu prends celle que tu as dans le index.js et tu la met dans ce fichier
D'ac
Uncaught Error: Cannot find module './data/warnings.json'
ça recherche du fichier
event
le fichier data
et nn pas de la racine
jfait comment ?
Du coup faut faire ../data/etc
donc deux .
Oui
De rien 😉
c'est normal
.addField(title, value, inline)
le dernier argument étant facultatif
il te manque la value donc, c'est pour ça
@oak turret oe j'ai trouver
j'ai un clavier invisible
donc comme ça sa marche
mais j'ai un prob de find et guild etc;?...
Uncaught TypeError: Cannot read property 'find' of undefined
exports.run = (client, message, args) => {
message.delete()
var Discord = require("discord.js");
const embed = new Discord.MessageEmbed()
.setTitle("Acceptez le règlement de Ouessant Life France ?")
.setColor('RANDOM')
.addField(`📌 - ʀᴇɢʟᴇᴍᴇɴᴛ`, `
Si vous acceptez le règlement, vous acceptez d'obtenir des avertissements lorsque les membres du staff l'estiment.
`)
.addField(`ㅤ `, `1 ➡️ Une identité RolePlay est obligatoire sur le discord. Vous devez avoir un nom et prénom RolePlay en guise de votre pseudo sur Discord.`)
.addField(`ㅤ `, `2 ➡️ Il est interdit d'insulter ou de harceler les autres membres. Le respect des autres est un prérequis.`)
.addField(`ㅤ `, `3 ➡️ Il est interdit de partager du contenu pornographique, gênant et/ou en rapport avec la religion et/ou la politique.`)
.addField(`ㅤ `, `4 ➡️ La publicité n'est autorisée que sur demande et avec approbation.`)
.addField(`ㅤ `, `5 ➡️ Il est interdit de porter un nom pouvant choquer quelqu'un. L'usurpation d'identité est interdite sur le serveur.`)
.addField(`ㅤ `, `7 ➡️ Vous devez respecter les sujets des salons et suivre ce qu'il est indiqué.`)
.addField(`ㅤ `, `8 ➡️ Essayer de contourner une sanction résultera à un bannissement définitif.`)
.addField(`ㅤ `, `9 ➡️ Évitez les pseudos incluant des caractères spécifiques.`)
.addField(`ㅤ `, `⚠️ Si vous n’avez pas vu que nous sommes passés de la règle 5 à 7, c'est que vous avez mal lu le règlement.`)
.setFooter(`Pour accepter le règlement du serveur veuillez interagir avec la réaction ci-dessous !`)
.setTimestamp();
message.channel.send(embed).then(function(message) {
message.react('✅')
client.on('messageReactionAdd', (reaction, user) => {
if (reaction.emoji.name === "✅" && user.id !== client.user.id) {
const guild = reaction.message.guild.members.cache.get(user.id)
let role = message.guild.role.find(r => r.name === "Staff");
const memberWhoReacted = guild.members.find(member => member.id === user.id);
memberWhoReacted.addRole(role);
console.log("Règlement Accepter Welcome !")
};
});
});
}
dans le check de la react
y'a un prob pour add un role ça beug
jsais pas pk
@oak turret
relis toi
let role = reaction.message.guild.roles.find(r => r.name === "Staff");
le s ?
et le reaction
d'ailleurs, chance ton const guild, renomme le ça va sûrement faire des conflits quelque part
.cache.find alors
yep j'y ai penser
Uncaught TypeError: Cannot read property 'find' of undefined
bon pas Find 😂
un peu useless le .find, si t'as l'id c'est mieux de faire un .get
let role = reaction.message.guild.roles.cache.get(r => r.id=== "idici ? ");
non juste l'id
let role = reaction.message.guild.roles.get("id");
oui
Uncaught TypeError: reaction.message.guild.roles.get is not a function
12 jcrois
Hey dans un embed on m'est comment une image qui est lié à un lien ? En gros j'ai des lien Amazon mais si je m'est juste le lien l'image apparaît pas dedans comparée à un message normal vous avez une idée ?
passe en v13 alors
oe mais faudrais tout refaire 😭
si tu peux get le lien, alors .setImage("lelien")
ou .setThumbnail()
Okay je vais essayer merci
Bonsoir bonsoir, je cherche depuis un moment pourquoi lorsque j'utilise un message.collector, les questions se dupliquent à chaque fois que j'y réponds ? (exemple: je rentre la commande une première fois, le collector envoie un seul message donc tout se passe bien, j'y réponds, etc.. ça se termine, je relance la commande pour tester une seconde fois et là, le collector envoie 2 messages, et donc duplique les réponses, etc..) 
➜ [Voir le message original](#javascript-typescript message)
Je n'ai malheureusement toujours rien trouvé
node:events:371
throw er; // Unhandled 'error' event
^
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at new NodeError (node:internal/errors:371:5)
^
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at new NodeError (node:internal/errors:371:5)
at ServerResponse.setHeader (node:_http_outgoing:573:11)
at ServerResponse.header (C:\Users\melvi\Desktop\f1-twitter\node_modules\express\lib\response.js:771:10)
at ServerResponse.send (C:\Users\melvi\Desktop\f1-twitter\node_modules\express\lib\response.js:170:12)
at ServerResponse.json (C:\Users\melvi\Desktop\f1-twitter\node_modules\express\lib\response.js:267:15)
at ServerResponse.send (C:\Users\melvi\Desktop\f1-twitter\node_modules\express\lib\response.js:158:21)
at C:\Users\melvi\Desktop\f1-twitter\controllers\user.controller.js:33:30
at C:\Users\melvi\Desktop\f1-twitter\node_modules\mongoose\lib\model.js:4931:18
at processTicksAndRejections (node:internal/process/task_queues:78:11)
Emitted 'error' event on Function instance at:
at C:\Users\melvi\Desktop\f1-twitter\node_modules\mongoose\lib\model.js:4933:15
at processTicksAndRejections (node:internal/process/task_queues:78:11) {
code: 'ERR_HTTP_HEADERS_SENT'
}
PS C:\Users\melvi\Desktop\f1-twitter>```*
const UserModel = require("../models/user.model");
const ObjectID = require("mongoose").Types.ObjectId;
module.exports.getAllUsers = async (req, res) => {
const users = await UserModel.find().select("-password");
res.status(200).json(users);
};
module.exports.userInfo = (req, res) => {
if (!ObjectID.isValid(req.params.id))
return res.status(400).send("ID unknown : " + req.params.id);
UserModel.findById(req.params.id, (err, docs) => {
if (!err) res.send(docs);
else console.log("ID unknown : " + err);
}).select("-password");
};
module.exports.updateUser = async (req, res) => {
if (!ObjectID.isValid(req.params.id))
return res.status(400).send("ID unknown : " + req.params.id);
try {
await UserModel.findOneAndUpdate(
{ _id: req.params.id },
{
$set: {
bio: req.body.bio
}
},
{ new: true, upsert: true, setDefaultsOnInsert: true },
(err, docs) => {
if (!err) return res.send(docs);
if (err) return res.status(500).send({ message: err });
}
);
} catch (err) {
return res.status(500).json({ message: err });
}
};
je suis en train de dev un reseaux social
Hey
J'aurais besoin d'aide svp 😅
Je fais un bot discord et j'aimerais que quand l utilisateur coche la réaction du bot, que le bot affiche un message. J'ai réussi à faire en sorte que le bot ai la reaction mais quand on coche la réaction rien ne se passe
Voici la Code
if (message.content.startsWith(`Mon age est `)) {
if (message.author.bot) return;
const SayMessage = message.content.slice(4).trim();
const reactionMessage = await message.channel.send(`Ton ` + SayMessage)
.then(message => {
message.react("✅")
})
switch (reaction.emoji.name) {
case "✅":
message.channel.send(`bv`)
}
}
age == 1;
}
);
Hey, il faut que tu utilises un reaction collector
Salut ! Je suis bloqué là, comment je peux envoyé un message dans un channel que je viens de crée j'ai tente avec une var mais je pense que je me trompe dans le send
var formachannel = message.guild.channels
.create(`Formation ${message.mentions.members.first().nickname}`, {
type: `text`,
parent: config.formationcategory,
permissionOverwrites: [
{
id: mentionsfirst.id,
deny: [``],
allow: [`VIEW_CHANNEL`]
},
{
id: config.gradesuperadmin,
deny: [``],
allow: [`VIEW_CHANNEL`]
},
{
id: message.guild.id,
deny: [`VIEW_CHANNEL`],
allow: [``]
}
],
})
formachannel.send({ embeds: [embedFormation] });
c'est presque bon mais il manque un await ou un .then pour attendre que le channel soit crée
Hum ok merci 😉
et utilises const a la place de var c'est mieux 😉
Pas de soucis, je n'avais pas bien compris le then 😉
Il me dit qu'il est undefined
var formachannel = message.guild.channels
.create(`Formation ${mentionsfirst.nickname}`, {
type: `text`,
parent: config.formationcategory,
permissionOverwrites: [
{
id: mentionsfirst.id,
deny: [``],
allow: [`VIEW_CHANNEL`]
},
{
id: config.gradesuperadmin,
deny: [``],
allow: [`VIEW_CHANNEL`]
},
{
id: message.guild.id,
deny: [`VIEW_CHANNEL`],
allow: [``]
}
],
})
.then(formachannel.send({ embeds: [embedFormation] }));
J'aurais mal mis mon then ?
Ah non problème régtlé
Juste à mettre en const, merci
De rien
voila j'ai un problème dans mon fichier user.copontroller.js
le voila
Listening on port 5000
connected to MongoDB
node:events:371
throw er; // Unhandled 'error' event
^
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at new NodeError (node:internal/errors:371:5)
at ServerResponse.setHeader (node:_http_outgoing:573:11)
at ServerResponse.header (C:\Users\melvi\Desktop\f1-twitter\node_modules\express\lib\response.js:771:10)
at ServerResponse.send (C:\Users\melvi\Desktop\f1-twitter\node_modules\express\lib\response.js:170:12)
at ServerResponse.json (C:\Users\melvi\Desktop\f1-twitter\node_modules\express\lib\response.js:267:15)
at C:\Users\melvi\Desktop\f1-twitter\controllers\user.controller.js:62:35
at C:\Users\melvi\Desktop\f1-twitter\node_modules\mongoose\lib\model.js:4931:18
at processTicksAndRejections (node:internal/process/task_queues:78:11)
Emitted 'error' event on Function instance at:
at C:\Users\melvi\Desktop\f1-twitter\node_modules\mongoose\lib\model.js:4933:15
at processTicksAndRejections (node:internal/process/task_queues:78:11) {
code: 'ERR_HTTP_HEADERS_SENT'
}
PS C:\Users\melvi\Desktop\f1-twitter> ```
voila l'erreur dans mon terminal
et voila l'erreur dans postman
const UserModel = require("../models/user.model");
const ObjectID = require("mongoose").Types.ObjectId;
module.exports.getAllUsers = async (req, res) => {
const users = await UserModel.find().select("-password");
res.status(200).json(users);
};
module.exports.userInfo = (req, res) => {
if (!ObjectID.isValid(req.params.id))
return res.status(400).send("ID unknown : " + req.params.id);
UserModel.findById(req.params.id, (err, docs) => {
if (!err) res.send(docs);
else console.log("ID unknown : " + err);
}).select("-password");
};
module.exports.updateUser=async (req,res) => {
if (!ObjectID.isValid(req.params.id))
return res.status(400).send("Id unknown "+ req.params.id)
try {
await UserModel.findOneAndUpdate(
{_id:req.params.id},
{
$set:{
bio:req.body.bio
}
},
{new:true,upsert:true,setDefaultsOnInsert:true}
)
.then((docs) => {return res.send(docs)})
.catch((err) => {return res.status(500).send({message: err})})
}
catch (err) {
return res.status(500).send({message:err})
}
}```
module.exports.follow = async (req, res) => {
if (!ObjectID.isValid(req.params.id) || !ObjectID.isValid(req.params.id))
return res.status(400).send("Id unknown "+ req.params.id)
try {
await UserModel.findByIdAndUpdate(
req.params.id,
{ $addToSet: { following: req.body.idToFollow}},
{ new: true, upsert: true },
(err,docs) => {
if (!err) res.status(201).json(docs);
else return res.status(400).json(err);
}
);
await UserModel.findByIdAndUpdate(
req.body.idToFollow,
{ $addToSet: { followers: req.params.id}},
{ new: true, upsert: true },
(err,docs) => {
if (!err) res.status(201).json(docs);
else return res.status(400).json(err);
}
)
} catch (err) {
return res.status(500).send({message:err})
}
}
module.exports.unfollow = async (req, res) => {
if (!ObjectID.isValid(req.params.id))
return res.status(400).send("Id unknown "+ req.params.id)
try {
} catch (err) {
return res.status(500).send({message:err})
}
}```
"Cannot set headers after they are sent to the client"
"...at C:\Users\melvi\Desktop\f1-twitter\controllers\user.controller.js:62:35"
oui ?
J'ai encore un petit problème sur ce code j'ai le bot qui me dit qu'il n'a pas accès au channel Uncaught ReferenceError: Cannot access 'formachannel' before initialization
const formachannel = message.guild.channels
.create(`Formation ${mentionsfirst.nickname}`, {
tapez : « texte »,
parent : config.formationcategory,
permissionÉcrase : [
{
id : mentionsfirst.id,
refuser : [``],
autoriser : [`VIEW_CHANNEL`]
},
{
identifiant : config.gradesuperadmin,
refuser : [``],
autoriser : [`VIEW_CHANNEL`]
},
{
identifiant : message.guild.id,
refuser : [`VIEW_CHANNEL`],
autoriser : [``]
}
],
})
.then(formachannel.send({ intègre : [embedFormation] }));
Je ne sais pas du tout pourquoi il n'a pas accès
la syntaxe est bizarre je trouve
oui
le .then prend une function callback en paramètre comme c'est une Promise
En français codage facile ? ^^
Cela veux dire que je dois faire quoi ? ^^
Bah c'est good non ?
Comprend pas
Oui c'est normal, formaChannel n'est juste pas encore initialisé dans ton .then, tu mélanges la promise via async await et via un .then()
dans ton cas ça aurait fonctionné si tu avais fais
const formaChannel = await message.guild.channels.create(....)
if (!formatChannel) return // do something...
formaChannel.send({ embeds: [embedFormation] })
Et dans l'autre
message.guilds.channels.create(...)
.then((formaChannel) => formaChannel.send({ embeds: [embedFormation] }) );
Salut , en ce moment je développe un bot discord et je cherche à crée un message.react mais qui setName le salon .
Bonjour, je cherche comment faire ses menus là
SelectMenu
Merci c’est ce que j’ai fais au niveau du deuxième pour régler le problème 😉
no prob
bonjours, je suis en train de faire du back end, et j'ai une erreur. pourriez vous m'aidé à la résoudre
voila mon code qui pose souci :
const UserModel = require("../models/user.model");
const ObjectID = require("mongoose").Types.ObjectId;
module.exports.getAllUsers = async (req, res) => {
const users = await UserModel.find().select("-password");
res.status(200).json(users);
};
module.exports.userInfo = (req, res) => {
if (!ObjectID.isValid(req.params.id))
return res.status(400).send("ID unknown : " + req.params.id);
UserModel.findById(req.params.id, (err, docs) => {
if (!err) res.send(docs);
else console.log("ID unknown : " + err);
}).select("-password");
};
module.exports.updateUser=async (req,res) => {
if (!ObjectID.isValid(req.params.id))
return res.status(400).send("Id unknown "+ req.params.id)
try {
await UserModel.findOneAndUpdate(
{_id:req.params.id},
{
$set:{
bio:req.body.bio
}
},
{new:true,upsert:true,setDefaultsOnInsert:true}
)
.then((docs) => {return res.send(docs)})
.catch((err) => {return res.status(500).send({message: err})})
}
catch (err) {
return res.status(500).send({message:err})
}
}
module.exports.deleteUser = async (req, res) => {
if (!ObjectID.isValid(req.params.id))
return res.status(400).send("Id unknown "+ req.params.id)
try {
await UserModel.remove({ _id: req.params.id }).exec();
res.status(200).json({ message: "Successfully deleted."});
} catch (err) {
return res.status(500).send({message:err})
}
}
module.exports.follow = async (req, res) => {
if (!ObjectID.isValid(req.params.id) || !ObjectID.isValid(req.params.id))
return res.status(400).send("Id unknown "+ req.params.id)
try {
await UserModel.findByIdAndUpdate(
req.params.id,
{ $addToSet: { following: req.body.idToFollow}},
{ new: true, upsert: true },
(err,docs) => {
if (!err) res.status(201).json(docs);
else return res.status(400).json(err);
}
);
await UserModel.findByIdAndUpdate(
req.body.idToFollow,
{ $addToSet: { followers: req.params.id}},
{ new: true, upsert: true },
(err,docs) => {
if (!err) res.status(201).json(docs);
else return res.status(400).json(err);
}
)
} catch (err) {
return res.status(500).send({message:err})
}
}
module.exports.unfollow = async (req, res) => {
if (!ObjectID.isValid(req.params.id))
return res.status(400).send("Id unknown "+ req.params.id)
try {
} catch (err) {
return res.status(500).send({message:err})
}
}```
voila mon erreur dans le terminal
PS C:\Users\melvi\Desktop\f1-twitter> node server
Listening on port 5000
connected to MongoDB
node:events:371
throw er; // Unhandled 'error' event
^
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at new NodeError (node:internal/errors:371:5)
at ServerResponse.setHeader (node:_http_outgoing:573:11)
at ServerResponse.header (C:\Users\melvi\Desktop\f1-twitter\node_modules\express\lib\response.js:771:10)
at ServerResponse.send (C:\Users\melvi\Desktop\f1-twitter\node_modules\express\lib\response.js:170:12)
at ServerResponse.json (C:\Users\melvi\Desktop\f1-twitter\node_modules\express\lib\response.js:267:15)
at C:\Users\melvi\Desktop\f1-twitter\controllers\user.controller.js:62:35
at C:\Users\melvi\Desktop\f1-twitter\node_modules\mongoose\lib\model.js:4931:18
at processTicksAndRejections (node:internal/process/task_queues:78:11)
Emitted 'error' event on Function instance at:
at C:\Users\melvi\Desktop\f1-twitter\node_modules\mongoose\lib\model.js:4933:15
at processTicksAndRejections (node:internal/process/task_queues:78:11) {
code: 'ERR_HTTP_HEADERS_SENT'
}```
merci par avance
Il y a quoi dans user.controller.js vers la ligne 62 ?
try {
await UserModel.findByIdAndUpdate(
req.params.id,
{ $addToSet: { following: req.body.idToFollow}},
{ new: true, upsert: true },
(err,docs) => {
if (!err) res.status(201).json(docs);
else return res.status(400).json(err);
}
);```
la ligne 62 c'est if (!err)
visiblement tu as déja renvoyer ta réponse avant cette ligne alors.
Avec un res.json ou res.send ou res.end par exemple
Tu peux envoyer plus de code peut etre ?
c'est a dire envoyer mon fichier ?
ce qu'il y a au dessus dans cette fonction
j'ai plusieurs fois ces ligne js if (!err) res.status(201).json(docs); else return res.status(400).json(err);
voila le problème
Il a fait un res.status.send avant ça vient peut être de la
Tu réponds déja a la requete au dessus
du coup il faut que je l'ai supprime ?
Tu dois répondre a la requete que quand tous est finis
Une des 2 réponses oui
en gros il faut que dans tout mon fichier j'ai uniquement une fois js if (!err) res.status(201).json(docs); else return res.status(400).json(err);
oui
ou alors tu en mets plusieurs mais tu te débrouille avec des returns pour que la fonction continue pas quand une réponse a déja été envoyée
et comment je fais ça ?
et bien si tu estimes que il y a une erreur par exemple avec la db et que tu réponds avec un code 500 alors tu mets un return car il y a eu un problème et le code ne doit pas continuer
si tu es dans une sous-fonction le return n'aura pas d'effet sur la fonction principale. Et ensuite c'est las le else qui pose problème mais c'est que tu as 2 if (!err) res.status(201).json(docs);
C'est pas changer le code de réponse qui va te permettre de réponde plusieurs fois a une requete. Si tu veux envoyer des infos au client a différents moments sans action de sa part faut mettre en place un websocket
Bah réponds 1 seul fois a ta requete pour faire simple
Tu organise ton code comme tu veux mais tu y répond 1 fois
ok
j'avoue que je sais pas comment faire
mais pas du tout
@neat lintel tu pourrais me réexplique
désolé
Plutot que de mettre plusieurs lignes res.status(201).json(docs); tu en mets que une seul a la fin de la requete
c'est return res.status ?
la requete c'est ce qui part du client (un navigateur par exemple) et que ton backend va traiter
je suis perdu ptdr
Faudrait te renseigner un peu sur comment ca fonctionne un serveur web et comment ca interagit avec le client. Pas besoins d'y passer 5h mais juste aller voir pour savoir ce que tu es en train de coder ca peut etre bien
comme ca tu seras pas perdu
ok je me suis un peut renseigner
req, c'est ce qu'on récupère si j'ai bien compris et res, c'est ce qu'on renvoi
si j'ai bien compris
oui
tu enlèves celui que tu veux
oui ca peut. test
j'ai plus de message d'erreur dans vs code, mais dans post man j'ai la même qu'avant
a quelle fin ?
de ton code
mon code se finit pas ```js
(err,docs) => {
if (!err) res.status(201).json(docs);
else return res.status(400).json(err);
}
)
} catch (err) {
return res.status(500).send({message:err})
}
}```
donc je dois le mettre après catch ?
mon code se finit pas js } ) (err,docs) => { if (!err) res.status(201).json(docs); else return res.status(400).json(err); } catch (err) { return res.status(500).send({message:err}) } }
comme ça ?
si le callback sort pas de nulle part, oui
voila j'ai fais quelque petite modification et j'ai un nouveau code erreur. le task_queues:78:11 veux dire que l'erreur viendrais de la ligne 78 ?
Salut, comment récup l'id seulement avec un argument en mentionnant la personne donc enleve le <@...>
Voilà ce que j'ai fait
const args = message.content.slice(config.prefix.length).slice(test.lenght).trim().split(/ +/g);
Je suppose qu'il faut faire un slice, mais j'ai tente des trucs sa n'a pas fonctionné
Ta ligne quand tu mentionnes quelqu'un @surreal sparrow ?
Car après avoir mentionné la personne, tu fais tonargs.id
Enfaite j'ai une commande le but et donc de récup la première mention et deuxième donc je le fais avec des arguments
sauf que dans tongars.id marche pas avec les <@...> qui sont présent
@dire latch
Exact
Mais le <@...> casse la tête donc il faut retiré le <, @ et >
Pour garder que l'id
Ba nan 🤔
Sinon sa ne fonctionne pas
C'est quoi ta ligne quand tu mention la personne ?
if(command === "formation"){
sI
Quand tu fais ta commande formation, tu mentionne bien quelqu'un après nan ?
newstaff, c'est la mention de la personne ?
Les 2
message.mentions.users.first();
Tu remplaces par ça au lieu de ton args[0]
Sa marche pas
J'ai 2 mentions
!formation @surreal sparrow @surreal sparrow
En gros il faut que je recup les 2 mentions @dire latch
Ba si sa fonctionne 😂
Sa récup que le first
Faut que tu changes message par msg si tu utilises ça
et pas le deuxième
Oui normal 🙂 Faut que tu modif pour le deuxième 🙂
.second ?
Non sa existe pas sa
Tkt pas que j'en est fait des recherches comme tu dit, mais pas trouvé thx, après à voir si sa fonctionne que sa ne soit pas pour les anciennes versions
Humm Uncaught TypeError: message.mentions.users.keyArray is not a function or its return value is not iterable
Cela ne fonctionne pas, pourtant le code à l'aire correct
en fit
?
est ce que tu as besoin des membres ?
je veux dire, juste du user, ou tu souhaites utiliser des propriétés / méthodes d'un GuildMember 🤔
Non pas besoin de guild member
Une idée ?
Juste ID
ah
bah du coup
@dire latch faut faire des recherches sur les méthodes actuelles ;)
const [firstId, secondId] = message.mentions.users.keys();
if (message.mentions.users.size < 2) {
return;
}
par ex
pour t'expliquer
message.mentions.users renvoie une collection de valeur
c'est une sorte de map amélioré
en gros chaque valeur est associé à une key
et avec cette clé tu pourras obtenir ta valeur
(ensemble des méthodes : https://discord.js.org/#/docs/collection/stable/class/Collection)
@sharp grailJ'ai proposé une solution, j'ai jamais dis pour quel version c'était 🤷♀️
Donc c'est pas à moi qu'il faut dire ça hein 😂
Hum ok, merci beaucoup tu gère 😉 Je capte pas trop le if juste
et concrètement keys() te renvoie un iterator des keys donc, associé ici à des ids de users
Ah fuck je t'ai dit de la merde je crois, pour récup le role d'un mec ou même lui add sa ne se fait pas par l'id du coup ^^
si la taille de la collection (= nombre de user) est inférieure à 2, le programme return une erreur par ex
ah
remplace keys par values
Exact 😉
Il n'y a pas une façon de retrouver la ligne ou il y a un error, comme j'ai donc cette error mais pas la ligne Uncaught TypeError: Cannot read properties of undefined (reading 'cache')
en dessous de l'erreur normalement tu as les lignes
ouh je t'avoue que la console de déboguage très peu pour moi x)
Je peux le mettre sur un pterodactyl sinon histoire d'avoir la ligne
Tes en V12 ou V13 ?
non si c'est une erreur de reading of undefined, il essaye de lire la valeur de quelque chose qui n'existe pas, le .catch c'est juste pour les promesses, sinon un try catch éventuellement, mais il vaut mieux tenter de régler le problème qui ici à mon avis peut être réglé
Sinon, tu démarres ton bot direct
sinon tu peux directement le lancer depuis ton ordi non ? Pour des tests ? 🤔
Au lieu de passer par le débug
c'est plus pratique que de devoir tout mettre sur un ptéro
V16
yep
pas la version de node, la version de discord js 👀
aaaah x)
sinon
tu peux également cherchant dans ton code où tu aurais placé un .cache
ou juste lancer ton bot et voir où est l'erreur
Je veux bien mais j'ai pas d'error
tente d'effectue des actions 🤔
Attend je vais mettre sa sur ptero je l'ai déjà mis juste le mettre à jour
Sa me fait ce que je t'ai envoyé
h
sinon tu t'en fous et tu règleras cette erreur quand tu l'auras 
Justement
C'est quand j'effectue ma commande
tu as des les endroits précis où l'erreur est
plutot une erreur comme celle là x)
Je n'ai pas ce genre de chose
si c'est sur ton ptéro qui te sort l'erreur quand tu effectues une commande si x)
Comment ?
tu vas dans le terminal
Yes
et si ton fichier principal (de départ) c'est index.js par exemple; tu fais node index.js
Ou node .
Ok c'est good
ça ça dépend de l'info renseigné dans le package.json
(de base index.js je suis d'accord)
Donc oui c'est directement le premier cache
else if(first.roles.cache.has(config.gradeformation)) {
aaaaa
attends
déjà si tu veux manipuler des choses concernant un membre c'est message.mentions.members my bad x)
donc vérifie ça dans ta collection
Je test
Merci mec tu gère de fou 😉

Bonsoir, pouvez m'aider a faire une ligne pour que le bot détecte que l'utilisateur a eu un certain rôle ?
enfaite je souhaite faire en sorte quand le bot détecte que le personne à eu un rôle il envoi un msg dans un salon, mais je ne sais pas comment il peut détecter
Je ne sais pas comment le formuler


Merci vrm
