#javascript-typescript
1 messages · Page 45 of 1
pas d'erreur ?
non
hmmmm
Rien
Le vide
Parcequ'en fait pour l'instant j'ai ça dans mon index.js
// ceci tout en haut de mon fichier
const mongoose = require("mongoose")
const User = require('./util/User.js')
//ceci au nieau de ma commande -ia
if (msg.guild) { }
else {
if (msg.content.startsWith("-ia")){
// msg.channel.send("> **Désolé, mais cette commande est indisponible pour le moment !**")
const user = new User({
_id: mongoose.Types.ObjectId(),
user: msg.author.username,
contenu: msg.content
})
user.save()
}
}
Et j'ai mon fichier User.js
const mongoose = require('mongoose')
const userSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
name: String,
firstName: String
})
module.exports = mongoose.model('User', userSchema)
J'ai que ça
Yes mais ca a l'air plutot bon
ok
je sais pas si de tête il différencie les variables avec juste une maj de différence
idk là
donc au cas ou
et sinon tout en haut apres le const User = ... met un console.log(User)
et apres ton const test = new User... met un console.log(test)
Ok
Je vais essayer le test
Non toujours rien
User : function model(doc, fields, skipId) {
model.hooks.execPreSync('createModel', doc);
if (!(this instanceof model)) {
return new model(doc, fields, skipId);
}
const discriminatorKey = model.schema.options.discriminatorKey;
if (model.discriminators == null || doc == null || doc[discriminatorKey] == null) {
Model.call(this, doc, fields, skipId);
return;
}
// If discriminator key is set, use the discriminator instead (gh-7586)
const Discriminator = model.discriminators[doc[discriminatorKey]] ||
getDiscriminatorByValue(model, doc[discriminatorKey]);
if (Discriminator != null) {
return new Discriminator(doc, fields, skipId);
}
// Otherwise, just use the top-level model
Model.call(this, doc, fields, skipId);
}
index.js:9
test : { _id: 5e8377504e87e62e20dfd329 }
Ca me donne ça
User : c'est le console log user
et test : c'est le console log test
@slim anvil ?
je regarde après wait
ok
😢
Bon finalement je n'utilise pas mongodb
Bonsoir je suis entrain de créer mon bot via le logiciel Discord Bot Maker
https://store.steampowered.com/app/682130/Discord_Bot_Maker/
Je voudrais avoir des idées de commandes à ajouté.
En sachant que les commandes de modération y sont déjà.
Je te conseille de coder en Js c'est beaucoup plus sympathique
DBM utilise JS
Et si tu veux pas t'ennuyer fait comme moi, code une IA
😉
Et j'ai pas d'idée particulière sinon
Et si tu veux pas t'ennuyer fait comme moi, code une IA
@cyan iron On peux voir ce qu'elle fait cette IA ? 👀
Pas fini mais oui
yes curieux de voir
Quand elle sera finie je vous montrerez à tous si vous voulez
un aperçu ?
Oui je rédige ça alors
j'espère qu'elle fait des sandwichs sinon je mets qu'une étoile
quel genre de sandwich @glass gate ?
tu mets en argument les composants du sandwich
poulet andalouse 👀
owi
makeSandwich('poulet', 'andalouse');
mais faut qu'elle soit capable d'executer parfaitement un kebab 4 étages sauce algérienne avec concentration en oignon de 2 oi/cm^3 (oignon par centimètre cube) sinon je mets que 4 étoiles
Alors déjà ce qu'il fait déjà , il réponds bêtement aux messages préenregistrés
Si le message envoyé par l'utilisateur n'est pas exactement égal à ce qui est dans l'array, il passe au test de fautes : Donc le bot va regarder si l'utilisateur à potentiellement fait une faute et va considérer qu'il n'en a pas fait , je vous met un exemple :
Ensuite, si après les 2 étapes passés il ne trouve toujours rien il dit qu'il ne comprends pas
Donc l'utilisateur envoie sa proposition et je la reçoit dans un channel sur un serv dédié
Et si je l'accepte
Je suis prévenu
La communauté aussi
Et ça envoie dans la bdd (pas encore fini de ce côté là)
pas mal :D
Voilà c'est a peu près tout
Du coup c'est pas vraiment de l'IA
Non pas encore
c'est juste un tableau de string et tu regardes si la string existe et envoie des réponses auto
yes vas-y
ça dépend qu'est-ce que tu définis comme IA
En gros ce qu'il va faire ça va être simple,
Plus y'a d'insultes plus y'a des points qui sont donnés ! et en fonction de plusieurs seuils le bot sera plus ou moins méchant et pareil avec la gentillesse
Comme va le faire l'assistant téléphonique de google par ex, ou meme le bot twitter
Et je ferais d'autres trucs dans le futur
Oui mais c'est pareille ça @cyan iron c'est quand meme pas de l'IA 
Oui mais ça commence à le devenir quand même
Yep
Mais après quand je dit IA c'est façon de parler
@cyan iron tu veux dire que tu vas littéralement refaire le système de point sociaux chinois ?
C'est plus un "système de communication"
@slim anvil c'est vrai c'est vrai
@glass gate Le système de points chinois ?!
ui
Ton système est comme celui que Slack a, tu peux renseigner par exemple des mots du genre "Salut" et des réponses possible, et a chaque message qui contiendra "Salut" il te répondra une réponse au hasard enregistré
A la limite pour augmenter ton système, faudrait avoir plusieurs type de réponse possible, que au "Salut" ça ne soit pas tjrs le meme message
Yes cool
si t'as enregistré 2 mots avec 1 lettre d'écart ("slt" et "svt" par exemple) et que tu tapes "smt", c'est lequel qui sera choisis ?
C'est pas forcément bon
Bah en même temps on peut pas faire mieux
Si un humain tu lui dis smt il comprends pas
ah ouf oui
par exemple
ouaaah merci pour l'idée
donc l'erreur est plus probable
Bon je dois vous laisser je reviens
Par contre il faut que tu regardes qu'il y a pas un écart de + de 2 caractères pour éviter qu'il répond n'imp
a toute
biz
Oui l'écart est de 2 carac
pile
@slim anvil Du coup si la lettre attendue est "h"
on met j y g ou n
C'est difficile non ?
et si l'utilisateur a un clavier qwerty
ouf ah oui
Tu peux le savoir marks
Et sinon chaque tout a un number associé je crois si je dis pas de connerie
Maks
possible mais ... Je verrais plus tard
Comment tu pourrais faire ?
En tout cas pour l'instant ça ne m'a pas posé de problème
Je sais pas 🤷
J'ai pas mes émojis ici c'est vrai
Tu as des keycode associé à chaque touche
le K par exemple c'est le 107, donc le J le 106
ui, mais là c'est un bot discord
Il peut se faire un tableau clé -> valeur
nan mais je parlais de détecter si un gars à un clavier qwerty ou azerty
Oui il a raison
Bah en vrai c'est assez simple, si du coup il sait que le keycode de a = 90 par exemple
Et le chiffre le plus proche c'est le gagnant
tu peux te baser juste là dessus
Je verrais plus tard
les keycode ne seront plus les memes par ex
Je finis ce que ej fais déjà
Oui tu as raison stay focus haha
les keycodes sont les même que ça soit AZERTY ou QWERTY, je comprends pas ce que tu veux dire 🤔
je suis pas sur de ça
attends je vais vérifier
sachant que le a n'est pas au meme endroit le keycode doit etre diff no ?
je sais pas pour le coup
¯_(ツ)_/¯
ça me parait plus logique de mettre lettre a = 1 keycode, comme ça les applications n'ont pas à se casser la tête à savoir si c'est un clavier AZERTY ou QWERTY
yup ça change pas: https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
J'ai un trou de mémoire, c'est sur quel site la liste de libs js ?
npm ? (https://www.npmjs.com/)
Y'a pas de liste de librairies 
Bah si 🤔 fais une recherche
bonjour , bonsoir
Alors voila j'ai un mini probleme je suis actuellement entrain de faire un system de ticket par acceptation du staff et j'aimerais en sujet de nouveau salon du ticket il écrit qui a accepté le ticket mais je sais pas comment le faire... ${reaction.blabla}
Qu'est-ce que tu utilise ? Discord.js ? Si oui, quelle version ?
oui discord js version 11.5.1
11.5.1 la vie

Personne ne sais ?..
Tu veux que le nom du salon soit par exemple : « Accepté par RaphModz97 » ?
si c’est juste le nom tu fais un setName() sur le channel
Si c’est pour la phrase en dessous du nom crois que c’est setTopic()
sujet du salon
mais je sais...
il faut lire aussi... j'ai demander pour le sujet du salon et que quand je reagis a la reaction bah il affiche qui a accepter le ticket
donc ${reaction.blabla}
Dans ton client.on(‘messageReactionAdd’, (react, user)...
Tu peux ajouter le second params user pour récupérer ton user, du coup tu auras juste à faire ton user.username dans ton setTopic
je suis en handler
Quand je fait mon guild.memberCount j'ai une erreur comme quoi il ne peut pas lire la propriété
Bonsoir , comment on fait pour avoir un message qui se modifie automatiquement en embed ? pour un système de statut
yep por que
Pour edit un embed, je crois que tu dois recupérer le contenu de l'ancien embet, et edit avec le nouveau embed
Pour edit un embed, je crois que tu dois recupérer le contenu de l'ancien embet, et edit avec le nouveau embed
@slim anvil Dans la V11 yep tu dois envoyer unRichEmbedet si tu fetch un message tu vas récupérer unMessageEmbed
Mais il me semble que dans la v12 ils ont tous passer sur MessageEmbed
Ah cool qu'il ai amélioré ce truc
v12 = MessageEmbed oui
db.query(`SELECT * FROM solde WHERE id = '${msg.author.id}'`, (err, rows) => {
if (err) throw err;
let sql;
if (rows[0] === undefined) {
sql = `INSERT INTO solde (id, solde) VALUES ('${msg.author.id}', '${0}')`;
} else {
let coin = rows[0].solde;
addcoin = coin + 2;
sql = `UPDATE solde SET solde = '${addcoin}' WHERE id = '${msg.author.id}'`;
}
db.query(sql);
});
On est d'accord que c'est censé écrire une nouvelle entrée si elle n'existe pas ?
A la place du if (rows[0] === undefined) { ?
if (rows.lenght === undefined)
if (rows.lenght)
Ah comme ça
Si il te renvoie [] quand il y a rien, tu peux juste faire un rows.length > 0 par ex
oui
donc oui si la length < 1 ou === 0
ok merci
mais en sql si tu fous un limit = 1 dans ta requete
il te renverra quand meme un tableau ? ou un object ? idk
je fais pas de sql donc idk
Ah ok
mais deja il rentre bien dans ta condition si il existe pas et que tu dois crée ?
met juste un log
oui
je chope juste mon dc 😄
Pour faire les test
J'ai déjà des entrées pour les autres compte
Ok nickel ça marche impec merci 😉
Si c'est pour ta commande
je vois pas l'intérêt, une commande existe déjà pour se rename
....
Mais sinon oui tu as le .setNickname()
No je crois pas, sur la doc c'est bien écrit member
message.member.setNickname(....
log ton channels
fais juste un .array() dessus a la limite
avant ton .find
et renomme tes variables c'est pas bon ni propre
tu as channel dans ton parametre de callback, et channel aussi dans ton .find
Si tu logs ton message.guild.channels tu as quoi
Sur la doc tu choisis la version que tu uses sinon
Bonjour ! J'aimerai créer un système qui va exécuter une commande si un certain message est reçu en console. J'ai créé une tâche planifiée, sur le panel de mon hébergeur, qui a pour but d'envoyer "restart" dans la console automatiquement. Je ne trouve aucun évent/class qui permet de récupérer le message, et de faire une condition qui dit "si ce message est reçu, alors faire ceci". Merci d'avance !
C'est possible de faire un system de SetPresence animé genre toute les 5 secondes ça change
tu fais un setInterval
Mais du coup si tu en veux beaucoup tu devras faire plein de conditions
Donc toutes les 5 sec faut faire gaffe, parce que s'il ya 50 if chaque 5s c'est pas fou
Bah non il fait un setInterval d'une fonction qui va aller chercher dans un tableau de phrase de manière random un élément
Il aurait pu vouloir faire des conditions, d'où le fait que je le prévenais
devra c’est pas la même chose que pouvoir
Si il veut des conditions il va faire des if, else if, else if, else, donc son setInterval va juste etre appelé toutes les 5 secondes, rentré dans une des conditions return la valeur et etre rappelé au tour suivant
Tu fais pas de if, if if if a la suite
Sinon tu fais un switch case
pour ce genre de cas
Ui brique au bob, me suis mal exprimé.
Et ui Enzo, mais je lui disais, car au début je faisais cette erreur là et ça ralentissait beaucoup pour ce que je voulais faire, depuis je préviens quand les gens veulent faire ça
tu try catch je pense
si tu as une erreur tu l'auras le catch à partir de là tu pourras faire ce que tu veux
@pure raven euh a part le fait qu'il me semble que comme ça, cela soit "exploitable", quand il trouve quelque chose que se passe t-il ?
ah non
mais attend
envoie la "vraie" erreur stp 
ouais
voila
donc
avant le let variable
tu regarde si il existe rows[0] et si isArray
si non cela veut donc dire qu'il n'a pas trouvé et la tu fais ce que tu veux
Bonjour ! Lorsque je lance mon bot sur mon vps il me dit comme quoi il s'est bien lancé mais il ne se connecte pas ? Vous auriez une solution ?
Non c'est bon j'ai su réglé c'est un node modules qui ne téléchargé pas
var query = "SELECT * FROM solde ORDER BY solde DESC LIMIT 10"
const top10 = db.query(query)
// Now shake it and show it! (as a nice embed, too!)
const embed = new Discord.RichEmbed()
.setTitle("> **Voici le top 10 des points !**")
.setFooter(msg.author, msg.author.avatarURL)
.setColor("#2f3136");
for(const data of top10) {
embed.addField(client.users.get(data.user).tag, `${data.points} points (level ${data.level})`);
}
return msg.channel.send({embed});
```
Les gars help ! J'ai fait ceci pour coder mon leaderboard et j'ai cette erreur : `top10 is not iterable`
Je ne comprends pas
log ton top10 mais il doit pas avoir encore get tes datas du coup tu boucle surement sur une valeur undefined
Ouais le log du top 10 me rend undefined
Faut faire un await du coup si je me trompe pas
Ok je tenterais merci 🙂
async function all(){
async function embed(top10) {
const embed = new Discord.RichEmbed()
.setTitle("> **Voici le top 10 des points !**")
.setFooter(msg.author, msg.author.avatarURL)
.setColor("#2f3136");
for(const data of top10) {
embed.addField(client.users.get(data.user).tag, `${data.points} points (level ${data.level})`);
}
return await msg.channel.send({embed});
}
var query = "SELECT * FROM solde ORDER BY solde DESC LIMIT 10"
const top10 = db.query(query)
await embed(top10)
}
all()
@spring dock Ca marche pas 
tu utilises sqlite3 ?
query est un callback, pas une fonction alors
càd ?
Comment je pourrais faire pour prendre les 10 lignes qui ont le plus grand solde ?
const top10 = await db.query()
nan, c'est un callback pas un async
Ah ok je test
selon la docu en tout cas
C'est à dire ?
tu dois faire :
db.query('requete sql', function(error, results, fields) {
// code
}```
le await va fonctionner
Ok merci
Je vais tester vos deux méthodes 🙂
pas fan du chaining
Le await ne fonctionne pas
après le await faut que ta fonction soit async donc c'est chiant si t'as pas envie
elle l'est regarde son code
¯_(ツ)_/¯
@brisk raptor Oui mais ta méthode je fais comment
results correpond à quoi et fields à quoi ?
att je t'envoie la documentation
ok merci
parfait alors
att juste
for(const data of results) {
embed.addField(client.users.get(data.user), `${data.points} points (level ${data.level})`);
}
Là j'ai ça
Si je fait un data.solde
Je lis la colonne solde ?
peut-être
🥳
😂
je préfère qu'on reste amis
x)
?
client.on("messageUpdate", async(oldMessage, newMessage) => {
if(oldMessage.content === newMessage.content){
return;
}
let loggembed = new Discord.RichEmbed()
.setAuthor(oldMessage.author.tag, oldMessage.author.avatarURL)
.setThumbnail('https://cdn.discordapp.com/app-icons/692211367595474955/b3b51ec7db655b1a46976ff4d14a8318.png?size=256')
.setColor(0x1770c9)
.setDescription("Un message de l\'utilisateur a été modifié")
.addField("Avant", oldMessage.content, true)
.addField("Après", newMessage.content, true)
.setTimestamp()
.setFooter("Mise à jour du message")
let logChannel = message.guild.channels.find(c => c.name === "log")
if(!logChannel) return;
logChannel.send(loggembed);
});
Quand je modifie je reçois une erreur :
Erreur
(node:13) UnhandledPromiseRejectionWarning: ReferenceError: message is not defined
- Bonjour
- Possible de m'aider
Ca marche les gars merci encore
t'es que 10ème, faut monter
désolé j'entends pas les rageux
Mais x)
@keen narwhal message sort de nul part
utilise newMessage ou oldMessage, mais a aucun moment tu ne déclares la variable
et oui 👍 le bonjour et svp n'est pas quelque chose d'optionnel
dsl , j'ai oublié de dire bonjour pis svp , je m'excuse de celà
Comment je pourrais les déclares ?
elles le sont déjà regarde les paramètres de ta fonction
tu utilises la variable message mais elle est déclaré nul part dans ta scope
Car elle es pas déclares dans mon scope
donc utilise une des 2 de ta fonction
newMessage par exemple
ça fonctionnera je pense, car dans newMessage tu as le .guild aussi
Euh ok
Bonsoir , j'ai une erreur au niv du channel.name
.setDescription("Nom du channel :" + channel.name + "Type du channel" + channel.type)
Qu'elle qu'un aurai des solution pour remplacer channel.name et channel.type ?
je ne comprends pas la question
Mon channel.name + channel.type ne marche pas , il y aurai des alternatives ?
oui tu peux faire, et d'ailleurs c'est recommandé :
setDescription(`blabla${variable}blabla`)
Genre .setDescription("Nom du channel :" + ${channel.name} + "Type du channel" + ${channel.type})
presque, regarde : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals
Ok merci
.setDescription(`Nom du channel :` + `${channel.name}` + `Type du channel` + `${channel.type}`)
pas besoin du +
Ok
.setDescription(`Nom du channel :` `${channel.name}` `Type du channel` `${channel.type}`)
c'est juste en un seul truc
.setDescription(`Nom du channel : ${channel.name} Type du channel ${channel.type}`)
yup parfait
Merci , jvais test
Cannot read property 'name' of undefined
client.on("channelDelete", async (message, channel) => {
let loggembed = new Discord.RichEmbed()
.setAuthor("Bot SEXKEY | Télétubbies")
.setTitle("Channel supprimer")
.setThumbnail('https://cdn.discordapp.com/app-icons/692211367595474955/b3b51ec7db655b1a46976ff4d14a8318.png?size=256')
.setTimestamp()
.setDescription(`Nom du channel : ${channel.name} Type du channel ${channel.type}`)
let logChannel = message.guild.channels.find(c => c.name === "log")
if(!logChannel) return;
logChannel.send(loggembed);
});
Mon channel.name marche pas :/
**Poliakov avec poutine
BOT
Aujourd’hui à 01:26
Bot SEXKEY | Télétubbies
Channel supprimer
Nom du channel supprimé: undefined Type du channel undefined
**
Bon au moin il me send l'embed
enlève message,
y'a pas de message
client.on("channelDelete", async (channel) => {
remplace message par channel
Ok
db.query(`SELECT * FROM solde WHERE id = '${msg.author.id}'`, (err, rows) => {
let sql;
sql = `UPDATE solde SET desc ='Ceci est un test' WHERE id = ${msg.author.id}`
db.query(sql);
});
Salut ! Je voudrais savoir pourquoi ça ne fonctionne pas ! Je ne comprends pas
Ca me return ceci :
Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'desc ='Ceci est un test' WHERE id = 393378313663676427' at line 1
sur la requête d’au dessus ça a pas fait d’erreur avec les guillemets
donc j’imagine que ça en est la cause 🤔
il manque une ' dans WHERE id = 393378313663676427'
no ça c’est l’erreur qui mets le texte entre guillemets
ok
ahh desc et un var reserver a SQL / mysql
je vien de faire un test sur ma db local
example sa sa marche pour moi
UPDATE
solde
SET
des = "Ceci est un test"
WHERE
id = 123768123
list de tout les mots reserver
https://doc.ispirer.com/sqlways/Output/SQLWays-1-205.html
Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'desc = "Ceci est un test"
WHERE
id = 3933783136636' at line 1
Toujours parei
Et ca viens bien du desc =
AH MAIS DESC EST RESERVE
Okkkkk
Merci
sinon tu peux mettre le mot desc entre `` il me semble
J'ai mis Fdesc comme ça trql
hello je suis dévutant dans la création de bot quand je lance mon fichier index.js j'ai cette ereur TypeError: events.bind is not a function
Merci D'avance Pour L'aide
Montre nous ton fichier
Et la ligne de code ou tu rentres events.bind
En prennant soin de chacher ton token 🙂
c'est énorme ça xD
Mdr
Regarde le tuto que t’as suivis ça ira plus vite je pense
🤷♂️
bon jsp je vais essayer de trouver
regarde la fin de ton tuto déjà
je lai déja regarder
Ou regarde en un autre
Parceque ça sert à rien de réexpliquer y'a des milliers de tutos qui existent
🙂
Nice
j'avais mit un fichier pas en .js dans mon dossier

Bonsoir , j'ai un problème avec une embed pour un system de AFK (pas très bien fait mais bon)
//--AFK--\\
client.on('message', message => {
if(message.content.startsWith(`${prefix}afk`)){
message.delete()
if (!message.member.hasPermission('MANAGE_MESSAGES')) return message.channel.send("Vous n'avez pas la permission d'utiliser cette commande")
let embed = new Discord.RichEmbed()
.setAuthor('Bot SEXKEY | Télétubbies')
.setColor(0x1770c9)
.setThumbnail('https://cdn.discordapp.com/app-icons/692211367595474955/b3b51ec7db655b1a46976ff4d14a8318.png?size=256')
.addField(`${message.author.username} Viens de se mettre en **AFK**.`)
.addField(`Vous êtes prié de ne pas MP ou de Ping ${message.author.username} sauf en cas d'extrême urgence !`)
.setTimestamp()
.setFooter("Bot SEXKEY | Télétubbies")
message.channel.send(embed)
}})
Le problème
C'est que j'ai des undefined au niveau des .addField
Je crois que addField a 2 paramètres requis
le title et la value, le 3eme juste si inline ou non
dans ton cas ça donnerait +:
//--AFK--\\
client.on('message', message => {
if(message.content.startsWith(`${prefix}afk`)){
message.delete()
if (!message.member.hasPermission('MANAGE_MESSAGES')) return message.channel.send("Vous n'avez pas la permission d'utiliser cette commande")
let embed = new Discord.RichEmbed()
.setAuthor('Bot SEXKEY | Télétubbies')
.setColor(0x1770c9)
.setThumbnail('https://cdn.discordapp.com/app-icons/692211367595474955/b3b51ec7db655b1a46976ff4d14a8318.png?size=256')
.addField(`${message.author.username} Viens de se mettre en **AFK**.`, `Vous êtes prié de ne pas MP ou de Ping ${message.author.username} sauf en cas d'extrême urgence !`)
.setTimestamp()
.setFooter("Bot SEXKEY | Télétubbies")
message.channel.send(embed)
}})
i think
(juste changer le add field)
Oui c'est embed.addField( titre, description, inline )
Merci les boys
Bonjours,
J'ai un problème avec un code
TypeError: Cannot convert "null" to int
opusscript_native_wasm.js:8
TypeError: Cannot convert "null" to int
opusscript_native_wasm.js:8
Error: "abort(TypeError: Cannot convert "null" to int). Build with -s ASSERTIONS=1 for more info."
at (anonymous) (file:///c:/Users/lilia/Desktop/bot%20harry%20management/node_modules/opusscript/build/opusscript_native_wasm.js:8:1741)
at emit (events.js:311:19)
at (anonymous) (internal/process/execution.js:164:24)
je ne trouve pas le probème
c'est au moment ou il join que sa fait l'erreur
en screen
justement jcp
c'est quand tu le run le bot direct ? ou quand tu run une commande ?
run la commade de play
client.on("message", async message => {
if (message.author.bot) return;
if (!message.content.startsWith(prefix)) return;
const serverQueue = queue.get(message.guild.id);
if (message.content.startsWith(`${prefix}play`)) {
execute(message, serverQueue);
return;
} else if (message.content.startsWith(`${prefix}skip`)) {
skip(message, serverQueue);
return;
} else if (message.content.startsWith(`${prefix}stop`)) {
stop(message, serverQueue);
return;
} else {
message.channel.send("Vous devez entrer une commande valide!");
}
});
async function execute(message, serverQueue) {
const args = message.content.split(" ");
const voiceChannel = message.member.voice.channel;
if (!voiceChannel)
return message.channel.send(
"Vous devez être dans un canal vocal pour jouer de la musique!"
);
const permissions = voiceChannel.permissionsFor(message.client.user);
if (!permissions.has("CONNECT") || !permissions.has("SPEAK")) {
return message.channel.send(
"J'ai besoin des autorisations pour rejoindre et parler dans votre canal vocal!"
);
}
const songInfo = await ytdl.getInfo(args[1]);
const song = {
title: songInfo.title,
url: songInfo.video_url
};
if (!serverQueue) {
const queueContruct = {
textChannel: message.channel,
voiceChannel: voiceChannel,
connection: null,
songs: [],
volume: 5,
playing: true
};
queue.set(message.guild.id, queueContruct);
queueContruct.songs.push(song);
try {
var connection = await voiceChannel.join();
queueContruct.connection = connection;
play(message.guild, queueContruct.songs[0]);
} catch (err) {
console.log(err);
queue.delete(message.guild.id);
return message.channel.send(err);
}
} else {
serverQueue.songs.push(song);
return message.channel.send(`${song.title} a été ajouté à la file d'attente!`);
}
}
function skip(message, serverQueue) {
if (!message.member.voice.channel)
return message.channel.send(
"Vous devez être dans un canal vocal pour arrêter la musique!"
);
if (!serverQueue)
return message.channel.send("Il n'y a aucune chanson que je pourrais sauter!");
serverQueue.connection.dispatcher.end();
}
function stop(message, serverQueue) {
if (!message.member.voice.channel)
return message.channel.send(
"Vous devez être dans un canal vocal pour arrêter la musique!"
);
serverQueue.songs = [];
serverQueue.connection.dispatcher.end();
}
function play(guild, song) {
const serverQueue = queue.get(guild.id);
if (!song) {
serverQueue.voiceChannel.leave();
queue.delete(guild.id);
return;
}
const dispatcher = serverQueue.connection
.play(ytdl(song.url))
.on("Fini", () => {
serverQueue.songs.shift();
play(guild, serverQueue.songs[0]);
})
.on("error", error => console.error(error));
dispatcher.setVolumeLogarithmic(serverQueue.volume / 5);
serverQueue.textChannel.send(`Commencer a ecouter **${song.title}**`);
}
voici tt le code du bot
@slim anvil
je suis au taff je regarde ce soir
ok
Bonsoir,
Comment je peux faire pour mettre une limite au nombre d'emojis affiché dans mon server info ?
genre j'ai une commande serveur info qui affiche notamment les emojis spéciaux du serveur, sauf que quand y'en a trop, il me renvoi une erreur de l'api, donc j'aimerai qu'il mette les emojis jusqu'à un certain nombre, pour pas dépasser la limite.
mon code actuel :
{
name: 'Emojis :',
value: `${message.guild.emojis.map(emojis => emojis).join(' ')}`,
},
et l'erreur : embed.fields[12].value: Must be 1024 or fewer in length.
me mentionner dans la réponse svp
@fallen kindle tu peux .slice ton tableau d'emoji
pour ne garder que l'index de 0 à 20 par ex
j'ai sa comme error
eseque on pourait m'expliquer
ReferenceError: on is not defined
at c:\Users\33766\Desktop\Turbie\index.js:33:12
at Array.forEach (<anonymous>)
at c:\Users\33766\Desktop\Turbie\index.js:29:7
at FSReqCallback.oncomplete (fs.js:146:23)
de ton client.on('... (ou bot.on(
pas besoin de tout m'envoyer
juste de screen la ou est le probleme
Hey! vous savez si y'a moyen de calculer le temps passé par qqn dans un vocal ?
Yep
Par exemple:
s?user @queen ocean
YES
le bot peu pas parler ici 
Mais du coup oui tu peux
Tu dois utiliser un event (voiceUpdate ou un truc du genre) pour save le moment ou le mec se co en vocal puis quand il deco (via le meme event) tu compare le temps entre les deux
Salut ya moyen de démarrer un serveur gmod a distance via une commande bot ? (j'utilise pterodactyl)
oui, y a le module nodeactyl pour ça 🤔
Ok merci Agent Verhaegen
Bonjour mon bot a aucune error mais je comprend pas il ne fait pas les commandes demander
comme si le dossier index etaits pas relier a mes fichier commande ou events
si quelque pourrai m'aidez
Sans code, il n'est pas possible de t'aider @strong spruce
@boreal edge je tenvoie l'index ?
Fait gaffe, ta drop ton token
att ya le token
const Discord = require('discord.js');
const client = new Discord.Client();
const fs = require("fs");
client.login("...");
client.commands = new Discord.Collection();
fs.readdir("./Commandes/", (error, f) => {
if(error) console.log(error);
let commandes = f.filter(f => f.split(".").pop === "js");
if(commandes.length <= 0) return console.log("Aucune commande trouvée!");
commandes.forEach((f) => {
let commande = require(`./Commandes/${f}`);
console.log(`${f} commande chargée !`);
client.commands.set(commande.help.name, commade);
});
});
fs.readdir("./Events/", (error, f) => {
if(error) console.log(error);
console.log(`${f.length} events en chargement`);
f.forEach((f) => {
const events = require(`./Events/${f}`);
const event = f.split(".")[0];
client.on(event, events.bind(null, client));
});
});
@boreal edge si tu a bessoin de plus on va en appelle
Comment on teste la différence de position entre deux rôles ?
Genre pour empêcher un modo de mute un admin
@fallen kindle Tu fais un role.position
Et ensuite tu compares
Moi ce que j'ai fait perso c'est qu'on peut pas mute un admin
alors pq çça sa marche pas ?
if (toMute.highestRole.position >= message.member.highestRole.position)
TypeError: Cannot read property 'position' of undefined
AH
Et t'es sûr que t'a bien get ton mec
Test fait un console log de toMute.id
Pour voir
Et il me semble que le highestRole est foireux
nan ça je suis sur
Discord.js v11 ou v12 déjà?
c'est pas plutot .roles.highest ?
Et il me semble que le highestRole est foireux
@cyan iron ah tu fais comment toi ?
Discord.js v11 ou v12 déjà?
@west plover 11
parce que v12 y a plus de highestRole
Ok
vérifie que toMute est un GuildMember 🤔
D'accord j'ai trouvé Pierre
Il faut que tu get ton mec
Alors att
const player = client.users.get(msg.mentions.members.first().id)
Tu fais comme ça
Et tu met player.highestrole
non, faut un GuildMember pas un User
@cyan iron déjà fait ça
Mais c'est pour ça que ce que je lui ai filé fonctionne normalement
Ah ok
Bah alors att
const player = msg.guild.users.get(msg.mentions.members.first().id)
Test ça
fuck it
alors qu'il te faut un GuildMember
Ouais mais comment il fait alors
donc faut aller sur la collection members au lieu de users
Oui mais comment faire
et puis c inutile de faire ça
msg.mentions.members.first()
t'as déjà ton member là
donc je fais ça : const toMute = bot.members.get(idmbr);
idmbr c'est égal à quoi?
l'id du membre
et pour utiliser la commande tu dois mettre l'id du membre? 🤔
Non le mention
ou l'id ouais
Ah bon
bah si faut le mention, autant utiliser message.mentions.members.first()
donc je fais ça :
const toMute = bot.members.get(idmbr);
@fallen kindle nope ça marche pas, il me disTypeError: Cannot read property 'get' of undefined
C'est pas client ?
oui forcément, les members sont définis sur les guilds et pas le bot
Ah t'as appelé ton client bot
oui
ah ok
sinon :
bah si faut le mention, autant utiliser
message.mentions.members.first()
non, pcq je veut que le modo puisse mettre soit l'id soit la mention
alors, tu check si la mention existe
AH
let idmbr;
if (message.mentions.members.first()) {
idmbr = message.mentions.members.first().id;
}
else {
idmbr = args[0];
}
je sais tout ça, j'ai déjà fait, c'est pas mon pblm
j'aurais plutôt fait une var member, et récupérer le member à partir de là au lieu de l'id, mais oé 🤔
Je vois pas pk le
const player = msg.guild.members.get(msg.mentions.members.first().id)
que j'ai suggéré ne pourrais pas marcher
Essaye ça on va bien voir
encore une fois parce que ça renvoie un User
déjà test ça
et le highestRole est défini sur le GuildMember
const toMute = bot.guild.members.get(idmbr);
TypeError: Cannot read property 'members' of undefined
oé faut renseigner la bonne guilde
remplace ton bot par msg
effectivement mdr 😅
msg.guild.createChannel("💎❘𝐋𝐨𝐠𝐬")
Salut
Je ne comprends pas pourquoi ça marche pas 😐
(node:9388) UnhandledPromiseRejectionWarning: DiscordAPIError: Invalid Form Body type: Value "text" is not int.
sans avoir le reste essaye juste de rajouter un 2ème paramètre avec
{ type: ‘text’ }
Normalement c’est en default mais pour tester
Donc je fais quoi, je fais msg.guild.createChannel(":gem:❘𝐋𝐨𝐠𝐬",{ type: ‘text’ })
, entre les 2
Ok comme ça ?
ok
Je test
Ah ça a l'air de fonctionner
Merci
J'ai un problème sur mon programme juste
??
top
ok
quelqu'un pourrais m'aider a faire un bot giveaway et auto rôle geure YAGPDB
pourquoi tu le prends pas xD?
Parce que cesr plus propre d'avoir son bot
ça dépend du code que tu fais aussi, là il a pas l'air de savoir donc je suis plus de l'avis de Lartaxx
Sinon @signal marsh #618846980298375168
Oui
Ui remarque c'est vrai, s'il fait pas de dev pas c'est pas facile
s'il fait pas de dev pas c'est pas facile
Pas comprendre
Bonjour à tous.
J'ai besoin d'aide concernant mon bot fait maison.
Ce matin je constate qu'il n'est pas en ligne et je lis des erreurs dans le log.
Etant débutant, j'essai de comprendre la documentation Node.js...
Apparemment, il me manque dans mon code une fonction pour capturer les erreurs ( catch() ).
Si tel est le cas, je ne sais pas trop où l'implémenter dans mon code...
Merci d'avance pour votre aide.
Car tu pars du principes que chacune de tes requetes vont aboutir
Sauf que en cas d'erreut tu ne le gères pas
il te faut faire un try {} catch () {}
dans ton try tu auras ta requete, et dans le catch tu pourras log l'erreur que l'api de discord te renvoie
ca peut donner ce genre de truc
try {
const data = await .....
} catch (err) {
console.err(err)
}
Merci @slim anvil. Ca me parle ce que tu me suggère.
En fait, je dois insérer chacune de mes fonctions ou requêtes de mon bot dans un try ?
tu uses la librarie discord ou tu fais vraiment chaque requête à la main ?
oui en gros, après à voir car le probleme du try catch c'est que si une requete passe pas, le reste du code n'est pas lu (de la fonction bien évidemment)
donc à voir comment bien implémenter le truc
Sinon tu uses les promises, et tu fais du promises chaining
ca te permettra de gérer mieux le truc que de fais un try catch global yes
Je ne vois pas trop ce que tu veux dire. En tout cas, sur plusieurs mois de fonctionnement, c'est le première fois que j'ai une erreur alors je me demande si ça vaut le coup. Après j'utilise la librairie Discord oui. Mon bot réalise des fonctions simple du genre : "message de bienvenue", "sondage", "écriture dans le channel ou en privé", "messages récurrent", "gestion des rôles", ...
ah yes je pensais que quand tu disais "fait main" tu étais vraiment aller jusque use juste les routes api de discord et tout faire 
Mais sinon oui tu peux simplement try catch dans ta fonction, comme ça si ca pète tu auras ton log
Pardon, je voulais seulement dire que je me suis amusé à essayer de comprendre la documentation discord.js et à écrire mon code tout seul comme un grand
yes carrément tu fais bien
Mais effectivement je n'ai aucun try{} dans mon code...
Quand tu dis que si la requête échoue, le reste du code n'est pas lu. Tu parle seulement du contenu du bloc try{} lui même ou toute l'application ?
juste dans le bloc try yes
si imagine tu as 3 requetes l'une a la suite des autres, la premiere passe, la deuxieme bloc, le code s'arrete et vas dans le catch
par contre ensuite tu as le finally {}
qui permet d'en tout els cas d'éxécuté le code
Avoir un exemple si tu fais un systeme de loading au click tu vas avoir un truc comme ça
click () => {
this.loading = true
try {
const { data } = message.channels....
this.loading = false
} catch (err) {
console.err(err)
this.loading = false
}
}
tu peux alléger en faisant un
Avoir un exemple si tu fais un systeme de loading au click tu vas avoir un truc comme ça
click () => {
this.loading = true
try {
const { data } = message.channels....
} catch (err) {
console.err(err)
} finally {
this.loading = false
}
}
car dans tout les cas que ce soit bon ou pas tu veux loading false
bon la je te prend un exemple + orienté web avec le loading mais tu vois le truc
ca te permet le block finally de quand meme exécuter le code que tu mettras dedans
Effectivement, c'est plus orienté Web. Je dois réfléchir à ce que je vais mettre dans finally {} car si par exemple l'envoi du message automatique de bienvenu échoue lors de l'arrivée dans nouveau membre, je ne vois pas quoi faire à la place...
Ah oui bien sur c'est juste un exemple après à toi d'adapter en fonction de tes besoins etc, après généralement l'api discord elle marche assez bien, essaye peut etre déjà de repéré a quel endroit ça a pété exactement
Je pense que cela à péter sur ma fonction de message automatique de restart de mon serveur. Je vais chercher l'heure et minutes de ma plateforme (HEROKU) et j'envoi quelques messages un peu avant le restart...
Je constate quand même que j'ai mis des catch{} sur l'envoi des messages du genre :
return channel
.send("MSG")
.catch(console.error);
Ok je vais essayer
oui
Bonjour, j'aimerais savoir comment faire pour que le bot poste un message lorsqu'il est ajouter un serveur. Merci d'avance
Ah Nice je cherchais aussi
D'accord, merci beaucoup, mais comment fait on pour send ce message dans le channel des "Message systémes"
No sé mais je pense que si tu fetch les channels tu dois avoir une clé à true pour te dire que c’est le channel système
yo quand je tape la commande pour la premiere fois "gsw", apres demarrage du bot, tout marche bien, le blé s'enleve de mon inventaire, et la money est ajouter, je retape la commande a la suite, et clique sur la reaction, et le probleme c'est que le bot me deduit le blé a 2 reprises a m'ajoute la money a 2 reprises, et m'envoye le meme message en 2x, je reretape la commande (donc 3x a la suite) et la tout en x3... et ainsi de suite, si vs avez savoit de quoi sa vient je prend
Merci (probleme qui dure depuis 1 semaines et c'est soulant...)
voici le code
const Discord = require('discord.js');
const fs = require("fs");
const money = require("../money.json");
const ressourceOfUser = require("../storageressource.json");
module.exports.run = async (client, message, args) => {
if(!args[0]){
var user = message.author;
} else {
var user = message.mentions.users.first() || client.users.cache.get(args[0])
}
// MESSAGE EMBED
let sellWheatEmbed = new Discord.MessageEmbed()
.setColor("#e3aa00")
.setAuthor(`GoodFarm Shop 🌾 (${ressourceOfUser[user.id].wheatRessource} 🌾)`, "https://media.discordapp.net/attachments/693829568720535664/697087222146400336/logo_GoodFarm.png?width=670&height=670")
.addField("**Selling Wheat 🌾**", "Price : 0.50 💸")
.addField("**Tractor Level 🚜**", "Level 1")
.addField("Colors Panel Selling : ", "🟨 = 1 🌾, 🟥 = 10 🌾, 🟧 = 100 🌾, 🟫 = 500 🌾, 🟩 = 1000 🌾, 🟦 = 5000 🌾, 🟪 = 10000 🌾,")
.setTimestamp()
// REACTION DU MESSAGE
message.channel.send(sellWheatEmbed)
.then(message => {
message.react('🟨')
message.react('🟥')
message.react('🟧')
message.react('🟫')
message.react('🟩')
message.react('🟦')
message.react('🟪')
});
// 🟨🟨🟨🟨🟨🟨 EMOJI YELLOW 🟨🟨🟨🟨🟨🟨🟨
if(reaction.emoji.name === '🟨' && user.id !== client.user.id){
const wheatToDeleteYellow = 1;
const moneyToAddYellow = wheatToDeleteYellow * 0.5;
// COMMANDES MONEY
if(money[user.id]){
money[user.id] = {
name: client.users.cache.get(user.id).tag,
money: money[user.id].money += moneyToAddYellow
}
fs.writeFile("./money.json", JSON.stringify(money, null, 2), (err) => {
if(err) console.log(err)
});
} else {
message.reply(" ⚠️ you don't have a Wallet to stock your Money ! (``gmoney``)")
}
// COMMANDES WHEAT
if(ressourceOfUser[user.id] && money[user.id]){
ressourceOfUser[user.id] = {
name: client.users.cache.get(user.id).tag,
wheatRessource: ressourceOfUser[user.id].wheatRessource -= wheatToDeleteYellow,
cornRessource: ressourceOfUser[user.id].cornRessource,
potatoRessource: ressourceOfUser[user.id].potatoRessource
}
fs.writeFile("./money.json", JSON.stringify(money, null, 2), (err) => {
if(err) console.log(err)
});
} else {
message.reply(" ⚠️ you don't have a Inventory to stock your Crops ! (``ginventory``)")
}
message.reply("you sell " + wheatToDeleteYellow + " 🌾 wheat, and earn : " + moneyToAddYellow + " 💸 money")
}```
Et voici un screen du probleme :
fais des screens a la limite qu'on est une bonne indentation, etc
ou met sur pastebin
@slim anvil ok
voila voila @slim anvil
EDIT: ce code est dédiée a l'emoji jaune, mais c'esst du copier/coller pr les autres emoji
de? @slim anvil
ah oké
Met un console.log dans ton memberAddReaction
pour voir si il est appelé 2 fois aussi
ca va nous situer plus facilement le probleme
tjrs moi? Xd
yess
Yep
oula a l'infini

je sais pas trop
c'est bizarre l'endroit ou tu as mis ton event reaction add
laisse le dans l'index
au meme endroit ou tu déclares ton cient.on('ready')
pour voir 🤔
je me demande si du coup il boucle pas lui sur meme
je pense que oui
car, att regarde
quand je tape "qsw" pour la premiere fois, tout marche, deuxieme fois a la suite, il affiche deux fois, et troisiemem fois, il affiche 3x le message... donc
essaye de bouger ton addReaction au meme endroit que ton client.on('ready') pour voir 🤔
c'est a dire?
là ou tu as ton client.on('ready')
oui mai mon client.ready est dans mon index or la je suis pas sur mon index surun autre fichier
yes justement essaye juste de le déplacer a l'index
voir si le probleme persiste
comme tu boucles sur tes fichiers pour les appeler
je me demande si ca vient pas de là
ok jvais essayer, euuh je copier tt le code pour l'moji jaune?
Tout le clien('on')
yep
nan la meme choses sa spam de "reaction" si jle met ds le main.js, mais je pense que dans mon scipt je n'ai pas de mit de ReactionCollector
franchement la comme ca no sé
oké....
Bonsoir j'ai un problème avec mon bot
Quel est le problème ?
Quelle est l'erreur ? Quel est le code ?
Si Sa te dérange pas je voudrais t'envoyer le code et l'erreur en mp
Vsy
Après on va pas te voler ton code issou
Surtout si c'est un tuto 
ok bas si vous voulez
Code d'erreur :
C:\Program Files\nodejs\node.exe --inspect-brk=29436 index.js
Debugger listening on ws://127.0.0.1:29436/6ae092c0-3fb5-4cae-8192-34bb612a58a9
For help, see: https://nodejs.org/en/docs/inspector
8ball.js chargé!
ban.js chargé!
botinfo.js chargé!
clear.js chargé!
doggo.js chargé!
SyntaxError: Unexpected end of input
at new Script (vm.js:79:7)
at createScript (vm.js:251:10)
at Object.runInThisContext (vm.js:303:10)
at Module._compile (internal/modules/cjs/loader.js:656:28)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:699:10)
at Module.load (internal/modules/cjs/loader.js:598:32)
at tryModuleLoad (internal/modules/cjs/loader.js:537:12)
at Function.Module._load (internal/modules/cjs/loader.js:529:3)
at Module.require (internal/modules/cjs/loader.js:636:17)
at require (internal/modules/cjs/helpers.js:20:18)
'}' expected.
The parser expected to find a '}' to match the '{' token here.
merci mais maintenant j'ai un autre problème
?
est ce que tu pourrais rejoindre le discord que je t'ai envoyer ,pour que tu voie le nouveau problème
fais des screens
ReferenceError: client is not defined
at users.array.filter.u (c:\Users\Desktop\bot\commands\gstart.js:68:84)
at Array.filter (<anonymous>)
at Timeout.setTimeout [as _onTimeout] (c:\Users\Desktop\bot\commands\gstart.js:68:47)
at ontimeout (timers.js:436:11)
at tryOnTimeout (timers.js:300:5)
at listOnTimeout (timers.js:263:5)
at Timer.processTimers (timers.js:223:10)
Bah client n'est pas définit, il suffit de lire
donc il faut que je fasse quoi ?
Que tu définisse client
Si tu fais du JS tu devrais quand même trouver
Sinon ya la doc pour définir une variable, tout est expliqué 
J'espère que t'as appris le JS ava't de copier, parce que c'est beau de copier, mais faut savoir modifier
sa serais la meilleur qui ne connaisse r au JS
Mais bon, on est la pour aider avant tout
exacte
car ducoup le client est au hasard ,c'est pour un bot giveaway
Alors il ya un problème au niveau de la fonction qui choisit le joueur
ha bon
Ou non attend
je vais test moi
Tu 3z sur d'avoir initialisé client ?
let re = m.react('🎉');
setTimeout(() => {
let users = m.reactions.get("🎉").users
let list = users.array().filter(u => u.id !== m.author.id !== client.user.id);
let gFilter = list[Math.floor(Math.random() * list.length) + 0]
let endEmbed = new Discord.RichEmbed()*
La ya pas client
donc ducoup je fait comment ?
Ya un moment où tu dois mettre let client?=........
pour moi la commande marche meme pas
Mr Dupont tu es sur quelle version discordjs ?
hein ,||c'est quoi ? deso si je suis nul mdr ||
Oof
OOOFFF
L'api discord
tu la trouvé ou le code ?
Pas grave tkt, mais avant tout apprends le JS et puis commence à dev des bots, je te dis pas ça méchamment hein
je l'ai touver la
pour voir ta version
tu vas dans ton package.json
et tu regardes "discordjs": "xxx"
montre ton fichier principal en capture d'écran, la ou tu utilises client
11.5.1
Tu sais pas pourquoi mon bot veut pas détecter "onReactionAdd"?
Du coup mr Dupont tu as que son fichier ? car a aucun moment il import discord
Genre il lance pas l'évent
Il détecté rien
Mais les events marchent bien pourtant
Genre guild member add etc Marche, mais pas "onReactionAdd"
Oui mais lance ton bot, ajoute une reaction et dis moi si ça passe
et essaye sur un ancien message et dis moi si ça passe pas
Ça passe pas du coup
Si c'est ça il faut juste que tu gères l'event raw
meme sur un new message ?
que tu as publié après le lancement du bot
Je crois que j'avais essayé oe
réessaye pr me dire
si meme comme ca ça ne passe pas
envoie juste un screen de l'event pour voir
A bah ui j'avais essayé vu que le bot envoie un message quand il se lance et je mets la réaction à ce message
https://discordapp.com/channels/223070469148901376/617677968474636298/703347376781394022 quelqu'un ses ou pas ?
Je suis sur tel là
Oui mais essaye sur un message ajouté par toi
Oe j'essaye dans 30 min environ et je te dis
Mais t'as pas d'idée à part le raw message?
tu l'as cet event ?
si non je pense que ca vient de là
tu synchro pas les messages "anciens"
Okay, et t'as une piste pour les synchro ?
regarde sur google l'event raw tu auras des trucs tout fait
A mais ya un event pour ça? OK nice, merci
yep
Ducoup comment puis-je faire pour ajouter un client ? let re = m.react('🎉');
setTimeout(() => {
let users = m.reactions.get("🎉").users
let list = users.array().filter(u => u.id !== m.author.id !== client.user.id);
let gFilter = list[Math.floor(Math.random() * list.length) + 0]
let endEmbed = new Discord.RichEmbed()
J'ai rien dit 🙂
Bonjour, j'ai téléchargé les dossiers du BOT Zira qui se trouve sur github et j'aimerai l'intégré sur un bot personnel, cependant je ne sais pas comment attribué le Token, peut être que je vois mal mais il le propose pas sur le code et j'ai essayé de mettre la ligne de code mais sa me met une erreur .. Quelqu'un pourrait m'aider
Merci bonne soirée 😉
Bonjour, j'ai une petite question, car j'ai un problème avec mes réactions, en fait elles ne sont pas détecté, Enzo m'avait dit de voir les messages raw, sauf qu'ils n'y sont plus sur la dernière version, une idée de comment faire ?
Yes v12 c'est ce que @timid loom m'a dit, je pourrais pas t'aider là dessus pas encore testé
peut-etre que lui pourrait quand il sera dispo
y a pas mal de tuto qui en parle tu peux trouver je pense
J'ai justement essayé de filtrer les recherches sur google du dernier mois, et j'ai rien trouvé :/
https://youtu.be/1f6nAaRUa_8 il explique bien
In this video, we're going to take a look at partials, talk about what they are, how they work, and how you can use them. Partials are new in the Discord.JS v12. They allow you to handle uncached data much easier rather than using the raw event, which is not documented and sup...
Ah mais oui effectivement @timid loom ça va être carrément mieux sur la v12
Enfin ça l’est déjà du coup, mais ouais c’est carré
merci ! Mais c'est vrai que c'est beaucoup plus simple que ces raw event la
Bonjour,
Comment je peux faire en sorte de détecter quand une personne réagis avec une réaction sur un message svp ? (V12.2.0) ?
Merci d'avance 🙂
l’évent messageReactionAdd
Merci 🙂
Je dois bien m'en servir comme ça ?
module.exports = function(bot) {
bot.on("messageReactionAdd", (react, user) => {
console.log(react)
console.log(user)
});
};
si ton fichier est load avec la fonction qui s'exécute, oui j'imagine
J'ai testé de console.log(bot), sa fonctionne exécute mais dés que j'ajoute une réaction du genre ✅ sa ne fonctionne pas...
sur un ancien message ou sur un que tu as posté apres le restart du bot
Je viens de tester sur un message après le restart du bot sa fonctionne mais je peux faire comment pour les anciens messages ?
look l'historique c'est ce que j'ai dis a superburger
regarde l'event raw
mais remonte un peu et tu verras

Bah regarde quand même plus haut ce que j’ai envoyé à superburher
Ça marche dans tt les cas 
Ok merci Enzo 🙂
Les partial 👌 hyper simple à utiliser
Il faut activer les partials avant ouais
Hello, je ne suis pas trop le chanel,
savez vous si il y à un bot simple pour serveur gmod (statut , joueur connecté ?)
Merci beaucoup 🙂
(je ne fait pas ça dans #618846980298375168 , car il doit déjà avoir des bot de ce type)
Bonjour,
bot.guilds.get(channelinfo.guild).channels.find(v => v.id === channelinfo.channel).then(channel => {
console.log(channel);
});
Je ne comprends pas pourquoi est ce qu'il me dit TypeError: bot.guilds.get is not a function alors que dans un autre bot, je me suis servi de la même chose.
Est ce que quelqu'un aurait une solution svp ?
Merci 🙂
tu dois pas avoir la même version de Discordjs
là ça doit être la v12
et sur ton autre bot la v11
et sur la v12, c'est des Manager
Donc tu dois mettre cache
donc bot.guilds.cache.get
des classes qui gère des collections
genre le GuildManager pour gérer les guilds
etc.
Ok
Merci 🙂
Et aussi, une autre question, je peux faire comment pour récupérer quand une personne réagis avec une réaction mais dans un message qui a été écrit avant que le bot soit ON ? Car Enzo m'avait dit qu'il fallait utiliser les partiels mais je comprends pas trop comment on doit s'en servir...
enzo avait donné une vidéo : https://www.youtube.com/watch?v=1f6nAaRUa_8
In this video, we're going to take a look at partials, talk about what they are, how they work, and how you can use them. Partials are new in the Discord.JS v12. They allow you to handle uncached data much easier rather than using the raw event, which is not documented and sup...
regarde si ça peut y répondre 
J'ai essayé de refaire le code mais sa n'avais pas fonctionné 👀
t'as mis l'option partials lors de l'instanciation de ton client? https://github.com/ansonfoong/discordjs-youtube-tutorials/blob/master/partials-reaction-bot/bot.js#L3
Où ?
y a pas MESSAGE_REACTION_ADD sur la doc 🤔
autrement y a REACTION 
bot.on("messageReactionAdd", async(messageReaction, user) => {
if(messageReaction.message.partial) {
try {
let message = await messageReaction.message.fetch();
console.log(message.id);
}
catch(err) {
console.log(err);
}
}
else {
console.log("Not a partial.");
}
})
Même quand je console.log(messageReaction); sa ne fonctionne pas 🤔
A oui autant pour moi, il faut mettre REACTION et non message reaction add
bot.on("REACTION", async(messageReaction, user) => { ? 👀
No'
Ah x)
A l'initialisation des partials
Au lieu de message ?
Oe
Sa ne fonctionnes pas non plus 🤔
Après je veux récupérer la réaction d'un message envoyé avant l'initialisation du bot
C'est bizarre 🤔 Je préfère que t'attende des gens plus expérimentés que moi
Je comprends pas non plus 🤔 merci beaucoup quand même 🙂
l'event messageReactionAdd est clair, c'est quand une reaction va être ajouté et non te log un ancien message qui a une reaction
tu peux fetch ton message au démarrage du bot pour récupérer les reactions
Et je n'ai pas moyen de fetch le message puis que dés qu'il y a une réaction qui s'y ajoute pouvoir lancer la suite ?
Je comprend pas, tu veux faire quoi exactement
Dés qu'on appuie sur un réaction d'un message que j'ai envoyé dans un salon, sa envoie un message à la personne en MP
Mais pourquoi tu veux récupérer les reactions a l'initialiation ?
si jamais il y a eu des reactions quand le bot etait off ?
Oui
Vu que tu leurs envoie un message, comment tu vas savoir a qui tu l'as deja envoyé ou non par contre
Et que si jamais il redevient on, dés qu'il y a une nouvelle réaction sa passe à la suite
Dés qu'il aura envoyé un message, le bot vas automatiquement supprimé la réaction qu'il a mis
Ah yes ok
Du coup ce sont 2 choses bien différentes, occupes toi déjà du messageReactionAdd
( et sa enregistrera aussi en JSON où il en est okaou qu'il le refasse une deuxième fois ).*
Ok
Puis ensuite occupes-toi du restart du bot, car ce sont 2 choses "différentes"
tu traiteras pas les reactions mis pendant que le bot est off dans le meme event que quand il est on du coup, fais le step by step tu t'y retrouveras plus facilement
Sa marche
Je viens faire ce qu'il faut pour l'event (j'ai juste mis l'event avec un console.log des informations pour après pouvoir faire une fonction globale pour les deux parties (bot on, bot off)
yep carrément
Je vais testé un truc car j'y avais pas pensé pour récupérer les réactions des messages, je te tien au courant 🙂
Du coup ce sont 2 choses bien différentes, occupes toi déjà du messageReactionAdd
J'viens d'y pensé mais comment je peux faire pour le récupérer sur un ancien message qui a donc été envoyé avant le lancement du bot stp ?
tu es sur la v12 ? avec les partials, la vidéo qu'à renvoyé guthen tout a l'heure
Oui mais sa ne fonctionnais pas c'est pour sa
J'avais fait sa
const bot = new Discord.Client({
partials: ['MESSAGE']
});
bot.on("messageReactionAdd", async(messageReaction, user) => {
console.log(messageReaction);
if(messageReaction.message.partial) {
try {
let message = await messageReaction.message.fetch();
console.log(message.id);
}
catch(err) {
console.log(err);
}
}
else {
console.log("Not a partial.");
}
})
Mais sa ne fonctionnes pas...
['MESSAGE', 'CHANNEL', 'REACTION']
met message et reaction
channel pas obligé juste c'est le truc de la doc
Merciiiiii !
normalement la si tu réagis a un ancien message, tud evrais avoir le log dans ton bot event reactionAdd
Et pour checker les réactions sur le message quand le bot est off, je peux faire comment tu penses ?
( edit )
dans ton event ready
Donc je fetch le message, et je vérifie toutes ses réactions ?
tu fetch les reactions de ton messages, tu boucles dessus et tu envoies un dm à tout ceux qui ont react puis tu clear les reactions
yep
Ok sa marche, merci
Et j'ai besoin d'utiliser Promise pour fetch le message on est d'accord ?
met ta fonction en asynchrone
et tu met juste un await devant ton fetch pour qu'ils attendent que tu l'es pour passer à la suite
je crois que now tu peux direct fetch les messages, donc juste
const message = await ....messages.fetch(messageID)
Ok je vais test
juste vu que je n'ai jamais fait de fonction async dans un module.exports, c'est bien comme ça : module.exports = async(bot) => { ?
oui
Ok merci
pour ton fetch messages tu dois avoir fetch le channel, puis ensuite le message
bot.channels.fetch(ChannelID).messages.fetch(messageID)
un truc comme ça je crois
Faut pas fetch la guild avant ?
Tu l'as pas deja au start la guild ? je crois que si, connais pas les trucs par ❤️ mais si tu l'as pas oui tu le fetch
Nan je l'es pas
pas sur de tout ce que je t'ai passé, mais tu as la doc de la v12 avec tt les changements bien expliqué
si jamais un truc ne fonctionne pas
Rebonjour,
Est ce que quelqu'un sait comment je peux faire pour récupérer les personnes qui réagissent avec une réaction ?
Merci 🙂
J'avais déjà essayé console.log(message.reactions.users); mais sa me return undefined