#javascript-typescript

1 messages · Page 45 of 1

cyan iron
#

Non

#

Je n'ai rien

slim anvil
#

pas d'erreur ?

cyan iron
#

non

slim anvil
#

hmmmm

cyan iron
#

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

slim anvil
#

Yes mais ca a l'air plutot bon

cyan iron
#

Et rien dans le compass

#

Je vais retenter

slim anvil
#

alors attend

#

ta const user = renomme la

#

en test et fais un test.save

cyan iron
#

ok

slim anvil
#

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)

cyan iron
#

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

cyan iron
#

@slim anvil ?

slim anvil
#

je regarde après wait

cyan iron
#

ok

cyan iron
#

😢

cyan iron
#

Bon finalement je n'utilise pas mongodb

keen narwhal
cyan iron
#

Je te conseille de coder en Js c'est beaucoup plus sympathique

keen narwhal
#

DBM utilise JS

cyan iron
#

Et si tu veux pas t'ennuyer fait comme moi, code une IA

#

😉

#

Et j'ai pas d'idée particulière sinon

queen ocean
#

Et si tu veux pas t'ennuyer fait comme moi, code une IA
@cyan iron On peux voir ce qu'elle fait cette IA ? 👀

cyan iron
#

Pas fini mais oui

slim anvil
#

yes curieux de voir

cyan iron
#

Quand elle sera finie je vous montrerez à tous si vous voulez

slim anvil
#

un aperçu ?

cyan iron
#

Oui je rédige ça alors

glass gate
#

j'espère qu'elle fait des sandwichs sinon je mets qu'une étoile

slim anvil
#

quel genre de sandwich @glass gate ?

glass gate
#

tu mets en argument les composants du sandwich

queen ocean
#

poulet andalouse 👀

glass gate
#

owi

queen ocean
#
makeSandwich('poulet', 'andalouse');
glass gate
#

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

cyan iron
#

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à)

glass gate
#

pas mal :D

cyan iron
#

Voilà c'est a peu près tout

slim anvil
#

Du coup c'est pas vraiment de l'IA

cyan iron
#

Non pas encore

slim anvil
#

c'est juste un tableau de string et tu regardes si la string existe et envoie des réponses auto

cyan iron
#

Mais je vais faire un truc bientot

#

Alors je vous explique

slim anvil
#

yes vas-y

glass gate
#

ça dépend qu'est-ce que tu définis comme IA

slim anvil
#

l'IA apprend seul

#

du machine learning quoi

cyan iron
#

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

slim anvil
#

Comme va le faire l'assistant téléphonique de google par ex, ou meme le bot twitter

cyan iron
#

Et je ferais d'autres trucs dans le futur

slim anvil
#

Oui mais c'est pareille ça @cyan iron c'est quand meme pas de l'IA info_player_think

cyan iron
#

Oui mais ça commence à le devenir quand même

slim anvil
#

Tu auras juste dans ta db un champ "type" avec des niveaux

#

Bah non pas vraiment

cyan iron
#

Yep
Mais après quand je dit IA c'est façon de parler

glass gate
#

@cyan iron tu veux dire que tu vas littéralement refaire le système de point sociaux chinois ?

cyan iron
#

C'est plus un "système de communication"

glass gate
#

@slim anvil c'est vrai c'est vrai

cyan iron
#

@glass gate Le système de points chinois ?!

glass gate
#

ui

slim anvil
#

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é

cyan iron
#

oui c'est ça

#

Il fait exactement ça

slim anvil
#

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

cyan iron
#

Si vous voulez tester venez Mp je vous envoie le lien

#

@slim anvil Ca le fait déjà

slim anvil
#

Yes cool

cyan iron
#

Euh

#

Bah j'ai vu ton message mais j'ai pas lu x)

glass gate
#

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 ?

cyan iron
#

🤷

#

Bah le premier mdr

slim anvil
#

C'est pas forcément bon

cyan iron
#

Bah en même temps on peut pas faire mieux

slim anvil
#

Si

#

Tu devrais te baser au clavier

cyan iron
#

Si un humain tu lui dis smt il comprends pas

slim anvil
#

le m est plus proche du l

#

que du v

cyan iron
#

ah ouf oui

slim anvil
#

par exemple

cyan iron
#

ouaaah merci pour l'idée

slim anvil
#

donc l'erreur est plus probable

cyan iron
#

Bon je dois vous laisser je reviens

slim anvil
#

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

glass gate
#

biz

cyan iron
#

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 ?

glass gate
#

et si l'utilisateur a un clavier qwerty

cyan iron
#

ouf ah oui

slim anvil
#

Tu peux le savoir marks

#

Et sinon chaque tout a un number associé je crois si je dis pas de connerie

glass gate
#

Maks

cyan iron
#

possible mais ... Je verrais plus tard

glass gate
#

Comment tu pourrais faire ?

cyan iron
#

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

slim anvil
#

Tu as des keycode associé à chaque touche

#

le K par exemple c'est le 107, donc le J le 106

glass gate
#

ui, mais là c'est un bot discord

slim anvil
#

Il peut se faire un tableau clé -> valeur

glass gate
#

nan mais je parlais de détecter si un gars à un clavier qwerty ou azerty

cyan iron
#

Oui il a raison

slim anvil
#

Bah en vrai c'est assez simple, si du coup il sait que le keycode de a = 90 par exemple

cyan iron
#

Et le chiffre le plus proche c'est le gagnant

slim anvil
#

tu peux te baser juste là dessus

cyan iron
#

Je verrais plus tard

slim anvil
#

les keycode ne seront plus les memes par ex

cyan iron
#

Je finis ce que ej fais déjà

slim anvil
#

Oui tu as raison stay focus haha

glass gate
#

les keycodes sont les même que ça soit AZERTY ou QWERTY, je comprends pas ce que tu veux dire 🤔

slim anvil
#

je suis pas sur de ça

glass gate
#

attends je vais vérifier

slim anvil
#

sachant que le a n'est pas au meme endroit le keycode doit etre diff no ?

#

je sais pas pour le coup

glass gate
#

¯_(ツ)_/¯

#

ç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

slim anvil
#

Ah yes ok j'aurai pensé que oui

#

Mais oui pas faux

cyan iron
#

Voilà ce qui arrive quand on demande à la communauté de proposer des dialogues 😂😂

humble storm
#

J'ai un trou de mémoire, c'est sur quel site la liste de libs js ?

slim anvil
humble storm
#

Y'a pas de liste de librairies suefort

slim anvil
#

Bah si 🤔 fais une recherche

humble storm
#

Abadakor ils ont juste changé l'apparence.. Autant pour moi

hearty minnow
#

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}

timid loom
#

Qu'est-ce que tu utilise ? Discord.js ? Si oui, quelle version ?

hearty minnow
#

oui discord js version 11.5.1

cyan iron
#

11.5.1 la vie

hazy mirage
hearty minnow
#

Personne ne sais ?..

slim anvil
#

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()

hearty minnow
#

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}

slim anvil
#

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

hearty minnow
#

je suis en handler

wind imp
#

Quand je fait mon guild.memberCount j'ai une erreur comme quoi il ne peut pas lire la propriété

grizzled sable
#

Bonsoir , comment on fait pour avoir un message qui se modifie automatiquement en embed ? pour un système de statut

hearty minnow
#

message.edit("") non ?

#

Bonjour quelqu'un utilise discord.js-commando ??

slim anvil
#

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

queen ocean
#

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 un RichEmbed et si tu fetch un message tu vas récupérer un MessageEmbed

Mais il me semble que dans la v12 ils ont tous passer sur MessageEmbed

slim anvil
#

Ah cool qu'il ai amélioré ce truc

hearty minnow
#

v12 = MessageEmbed oui

cyan iron
#
    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 ?

slim anvil
#

no

#

fais juste un

#

if (rows.length)

cyan iron
#

A la place du if (rows[0] === undefined) { ?

slim anvil
#

oui, le === compare la valeur, le double == compare le type

#

si je me trompe pas

cyan iron
#

ah d'accord

#

Donc je met

slim anvil
#

et la dans ton cas

#

autant faire if rows.length

cyan iron
#
        if (rows.lenght === undefined)
slim anvil
#

Ah sauf si il te renvoie un tableau vide

#

Nop

cyan iron
#
        if (rows.lenght)

Ah comme ça

slim anvil
#

Si il te renvoie [] quand il y a rien, tu peux juste faire un rows.length > 0 par ex

cyan iron
#

bah sur le tuto que j'ai vu c'était if rows.lenght < 1

#

Mais ça marchais pas de ouf

slim anvil
#

euhhh attend oui

#

tu veux créer

#

pas update my bad

cyan iron
#

oui

slim anvil
#

donc oui si la length < 1 ou === 0

cyan iron
#

ok merci

slim anvil
#

mais en sql si tu fous un limit = 1 dans ta requete

#

il te renverra quand meme un tableau ? ou un object ? idk

cyan iron
#

🤷

#

mais en fait quand je fais un -solde ça crash en me disant que rien n'a été entré !

slim anvil
#

je fais pas de sql donc idk

cyan iron
#

Ah ok

slim anvil
#

mais deja il rentre bien dans ta condition si il existe pas et que tu dois crée ?

cyan iron
#

Oui je pense

#

Je vais checker

slim anvil
#

met juste un log

cyan iron
#

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 😉

slim anvil
#

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(....
slim anvil
#

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

slim anvil
#

Si tu logs ton message.guild.channels tu as quoi

slim anvil
#

Sur la doc tu choisis la version que tu uses sinon

boreal nacelle
#

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 !

keen narwhal
#

C'est possible de faire un system de SetPresence animé genre toute les 5 secondes ça change

slim anvil
#

tu fais un setInterval

red snow
#

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

slim anvil
#

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

red snow
#

Il aurait pu vouloir faire des conditions, d'où le fait que je le prévenais

spring dock
#

devra c’est pas la même chose que pouvoir

slim anvil
#

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

red snow
#

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

slim anvil
#

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

hazy mirage
#

@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 thinkintense

#

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

slim anvil
#

Pas besoin de isArray

#

Si il check le row[0]

spiral cave
#

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 ?

slim anvil
#

Le token est le bon ?

#

tu as 0 erreur ?

spiral cave
#

Non c'est bon j'ai su réglé c'est un node modules qui ne téléchargé pas

cyan iron
#
 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

slim anvil
#

log ton top10 mais il doit pas avoir encore get tes datas du coup tu boucle surement sur une valeur undefined

cyan iron
#

Ouais le log du top 10 me rend undefined

spring dock
#

Faut faire un await du coup si je me trompe pas

cyan iron
#

Ok je tenterais merci 🙂

cyan iron
#
      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 sadgun

brisk raptor
#

tu utilises sqlite3 ?

cyan iron
#

Non

#

Mysql

brisk raptor
#

query est un callback, pas une fonction alors

cyan iron
#

càd ?

#

Comment je pourrais faire pour prendre les 10 lignes qui ont le plus grand solde ?

slim anvil
#

const top10 = await db.query()

brisk raptor
#

nan, c'est un callback pas un async

cyan iron
#

Ah ok je test

brisk raptor
#

selon la docu en tout cas

cyan iron
#

C'est à dire ?

brisk raptor
#

tu dois faire :

db.query('requete sql', function(error, results, fields) {
  // code
}```
slim anvil
#

le await va fonctionner

cyan iron
#

Ok merci

slim anvil
#

ou tu peux passer par un .then a la suite

#

mais je trouve le await plus propre

cyan iron
#

Je vais tester vos deux méthodes 🙂

slim anvil
#

pas fan du chaining

cyan iron
#

Le await ne fonctionne pas

brisk raptor
#

après le await faut que ta fonction soit async donc c'est chiant si t'as pas envie

slim anvil
#

elle l'est regarde son code

brisk raptor
#

¯_(ツ)_/¯

cyan iron
#

@brisk raptor Oui mais ta méthode je fais comment

#

results correpond à quoi et fields à quoi ?

brisk raptor
#

att je t'envoie la documentation

cyan iron
#

ok merci

brisk raptor
cyan iron
#

OK

#

Merci

brisk raptor
#

de rien

#

tu me dis si tu sais pas parler anglais, je peux t'expliquer vite fait

cyan iron
#

Ok

#

Je tente

#

Wow

#

Ca a l'air de marcher

brisk raptor
#

parfait alors

cyan iron
#

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 ?

brisk raptor
#

peut-être

cyan iron
#

oui

#

merci

#

Ca fonctionne !

#

J'vous aime

#

<3

brisk raptor
#

🥳

spring epoch
#

😂

brisk raptor
#

je préfère qu'on reste amis

cyan iron
#

x)

spring epoch
#

?

keen narwhal
#
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

brisk raptor
#
  1. Bonjour
  2. Possible de m'aider
cyan iron
brisk raptor
#

t'es que 10ème, faut monter

cyan iron
#

nope je suis premier x)

#

C'est juste le footer que je vais enlever

brisk raptor
#

désolé j'entends pas les rageux

cyan iron
#

Mais x)

slim anvil
#

@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

keen narwhal
#

dsl , j'ai oublié de dire bonjour pis svp , je m'excuse de celà

#

Comment je pourrais les déclares ?

slim anvil
#

elles le sont déjà regarde les paramètres de ta fonction

keen narwhal
#

Ok

#

"Message sort de nul part" c'est à dire ?

slim anvil
#

tu utilises la variable message mais elle est déclaré nul part dans ta scope

keen narwhal
#

Et pour la déclares ?

#

Je mais ça dans ma fonction ?

slim anvil
#

utilise une des 2 dans ta fonction

#

pourquoi la redéclarer

keen narwhal
#

Car elle es pas déclares dans mon scope

slim anvil
#

donc utilise une des 2 de ta fonction

#

newMessage par exemple

#

ça fonctionnera je pense, car dans newMessage tu as le .guild aussi

keen narwhal
#

Euh ok

keen narwhal
#

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 ?

brisk raptor
#

je ne comprends pas la question

keen narwhal
#

Mon channel.name + channel.type ne marche pas , il y aurai des alternatives ?

brisk raptor
#

oui tu peux faire, et d'ailleurs c'est recommandé :
setDescription(`blabla${variable}blabla`)

keen narwhal
#

Genre .setDescription("Nom du channel :" + ${channel.name} + "Type du channel" + ${channel.type})

brisk raptor
keen narwhal
#

Ok merci

#
.setDescription(`Nom du channel :` + `${channel.name}` + `Type du channel` + `${channel.type}`)
brisk raptor
#

pas besoin du +

keen narwhal
#

Ok

#
.setDescription(`Nom du channel :` `${channel.name}` `Type du channel` `${channel.type}`)
brisk raptor
#

c'est juste en un seul truc

keen narwhal
#
.setDescription(`Nom du channel : ${channel.name} Type du channel ${channel.type}`)
brisk raptor
#

yup parfait

keen narwhal
#

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);
});
brisk raptor
#

¯_(ツ)_/¯

#

channel est undefined donc il doit y avoir un problème sur le callback

keen narwhal
#

**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

brisk raptor
#

enlève message,

#

y'a pas de message

#

client.on("channelDelete", async (channel) => {

keen narwhal
#

pas faux

#

@brisk raptor Je suis obligé sinon => Message is undefined

brisk raptor
#

remplace message par channel

keen narwhal
#

Ok

cyan iron
#
           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

west plover
#

je serai tenté de dire parce que tu n’as pas mis les '' autour de l’id

#

🤔

cyan iron
#

AH

#

Bah d'habitude ça fonctionne

west plover
#

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 🤔

violet knot
#

il manque une ' dans WHERE id = 393378313663676427'

west plover
#

no ça c’est l’erreur qui mets le texte entre guillemets

violet knot
#

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
cyan iron
#

Ok bah je test

#

merci 🙂

violet knot
cyan iron
#

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

west plover
#

sinon tu peux mettre le mot desc entre `` il me semble

cyan iron
#

J'ai mis Fdesc comme ça trql

willow frigate
#

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

cyan iron
#

Montre nous ton fichier

#

Et la ligne de code ou tu rentres events.bind

#

En prennant soin de chacher ton token 🙂

willow frigate
#

ok

cyan iron
#

Euh

#

Et à quoi est censé servir ton code

#

Ne me dit pas que tu l'as copié bêtement

hazy mirage
cyan iron
#

Mdr

slim anvil
#

Regarde le tuto que t’as suivis ça ira plus vite je pense

cyan iron
#

Ca a pas trop de sens

#

Ouais

#

TOn tuto est bizarre

#

J'ai jamais vu ça de ma vie x)

willow frigate
#

jsp je le suivai a la lettre

#

nn sa c'est moi qui l'ai modifié par contre

cyan iron
#

🤷‍♂️

willow frigate
#

bon jsp je vais essayer de trouver

cyan iron
#

regarde la fin de ton tuto déjà

willow frigate
#

je lai déja regarder

cyan iron
#

Ou regarde en un autre

#

Parceque ça sert à rien de réexpliquer y'a des milliers de tutos qui existent

willow frigate
#

bon attends je vais voir

#

ok

cyan iron
#

🙂

willow frigate
#

probléme regler ( :

#

je suis vraiment trés con

cyan iron
#

Nice

willow frigate
#

j'avais mit un fichier pas en .js dans mon dossier

cyan iron
keen narwhal
#

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

slim anvil
#

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)

humble storm
#

Oui c'est embed.addField( titre, description, inline )

keen narwhal
#

Merci les boys

keen spade
#

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

slim anvil
#

show ton code

#

mais a premiere vue tu essayes de Number() une variable null

keen spade
slim anvil
#

en screen

keen spade
#

le code est très long

#

183 lignes

slim anvil
#

envoie la partie qui contient le problème

#

en screen

keen spade
#

justement jcp

slim anvil
#

c'est quand tu le run le bot direct ? ou quand tu run une commande ?

keen spade
#

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

keen spade
#

@slim anvil

slim anvil
#

je suis au taff je regarde ce soir

keen spade
#

ok

fallen kindle
#

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

slim anvil
#

@fallen kindle tu peux .slice ton tableau d'emoji

#

pour ne garder que l'index de 0 à 20 par ex

fallen kindle
#

d'accord, je vais essayer

#

ça marche parfaitement, merci bcp

strong spruce
#

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)

slim anvil
#

show ton code

#

ce sera + d'aider

strong spruce
#

Tu serai dispo vocal que je te face un partage ?

#

@slim anvil

slim anvil
#

nop je suis au taff

#

ton erreur vient dès le début du code

strong spruce
#

Ok jte drop mes 3 page Att

#

Je deco gmod

slim anvil
#

de ton client.on('... (ou bot.on(

#

pas besoin de tout m'envoyer

#

juste de screen la ou est le probleme

strong spruce
#

j'ai trouvée merci j'avait taper client;on au lieux de client.on

#

meri bro

cyan iron
#

Hey! vous savez si y'a moyen de calculer le temps passé par qqn dans un vocal ?

queen ocean
#

Yep

#

Par exemple:

#

s?user @queen ocean

#

YES

#

le bot peu pas parler ici pepesueur

#

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

floral bolt
#

Salut ya moyen de démarrer un serveur gmod a distance via une commande bot ? (j'utilise pterodactyl)

west plover
#

oui, y a le module nodeactyl pour ça 🤔

cyan iron
#

Ok merci Agent Verhaegen

strong spruce
#

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

boreal edge
#

Sans code, il n'est pas possible de t'aider @strong spruce

strong spruce
#

@boreal edge je tenvoie l'index ?

boreal edge
#

Fait gaffe, ta drop ton token

strong spruce
#

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

fallen kindle
#

Comment on teste la différence de position entre deux rôles ?
Genre pour empêcher un modo de mute un admin

cyan iron
#

@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

fallen kindle
#

alors pq çça sa marche pas ?

if (toMute.highestRole.position >= message.member.highestRole.position)
cyan iron
#

Et qu'il faut être admin pour mute

#

🤷‍♂️

#

Ca te met quoi en erreur ?

fallen kindle
#

TypeError: Cannot read property 'position' of undefined

cyan iron
#

AH

#

Et t'es sûr que t'a bien get ton mec

#

Pour voir

#

Et il me semble que le highestRole est foireux

fallen kindle
#

nan ça je suis sur

west plover
#

Discord.js v11 ou v12 déjà?

brisk raptor
#

c'est pas plutot .roles.highest ?

fallen kindle
#

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

west plover
#

parce que v12 y a plus de highestRole

cyan iron
#

Ok

west plover
#

vérifie que toMute est un GuildMember 🤔

cyan iron
#

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

west plover
#

non, faut un GuildMember pas un User

cyan iron
#

Si je dis pas de bêtise ça marche

#

Cà d?

west plover
cyan iron
#

ah oui

#

je vois

#

Oui oui

fallen kindle
#

@cyan iron déjà fait ça

cyan iron
#

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

west plover
#

toujours la même chose les gens

#

ça ça renvoie un User

cyan iron
#

fuck it

west plover
#

alors qu'il te faut un GuildMember

cyan iron
#

Ouais mais comment il fait alors

west plover
#

donc faut aller sur la collection members au lieu de users

cyan iron
#

Oui mais comment faire

west plover
#

et puis c inutile de faire ça

#

msg.mentions.members.first()

#

t'as déjà ton member là

cyan iron
#

Bah si

#

Non mais il le get comme ça

fallen kindle
#

donc je fais ça : const toMute = bot.members.get(idmbr);

cyan iron
#

ah

#

Essaye ça peut marcher

west plover
#

idmbr c'est égal à quoi?

fallen kindle
#

l'id du membre

cyan iron
#

L'id du mec mentionné il me semble

#

Ouais voilà

west plover
#

et pour utiliser la commande tu dois mettre l'id du membre? 🤔

cyan iron
#

Non le mention

fallen kindle
#

ou l'id ouais

cyan iron
#

Ah bon

west plover
#

bah si faut le mention, autant utiliser message.mentions.members.first()

cyan iron
#

Pourquoi t'utilises le msg.mentions.members.first()

#

alors

fallen kindle
#

donc je fais ça : const toMute = bot.members.get(idmbr);
@fallen kindle nope ça marche pas, il me dis TypeError: Cannot read property 'get' of undefined

cyan iron
#

C'est pas client ?

west plover
#

oui forcément, les members sont définis sur les guilds et pas le bot

cyan iron
#

Ah t'as appelé ton client bot

fallen kindle
#

oui

cyan iron
#

ah ok

west plover
#

sinon :

bah si faut le mention, autant utiliser message.mentions.members.first()

cyan iron
#

oui

#

Utilise ça Pierre

#

Enfin moi ça marche

fallen kindle
#

non, pcq je veut que le modo puisse mettre soit l'id soit la mention

west plover
#

alors, tu check si la mention existe

cyan iron
#

AH

west plover
#

sinon tu get l'id

#

et si y a pas d'id, bah tu arrêtes la commande

fallen kindle
#
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

cyan iron
#

bah perfect

#

Bah ui c'est ça en fait

west plover
#

j'aurais plutôt fait une var member, et récupérer le member à partir de là au lieu de l'id, mais oé 🤔

cyan iron
#

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

west plover
#

encore une fois parce que ça renvoie un User

cyan iron
#

ah non

#

ui

#

Fail

#

Voilà là ça va fonctionne @fallen kindle

#

Normalement

fallen kindle
#

déjà test ça

west plover
#

et le highestRole est défini sur le GuildMember

cyan iron
#

FUCK IT

#

Ca te return quoi

fallen kindle
#

const toMute = bot.guild.members.get(idmbr);

#

TypeError: Cannot read property 'members' of undefined

cyan iron
#

non mais pas bot.guild

#

msg.guild

west plover
#

oé faut renseigner la bonne guilde

cyan iron
#

remplace ton bot par msg

fallen kindle
#

effectivement mdr 😅

cyan iron
#

Et là normalement 🙂

#

Ca fonctionne

fallen kindle
#

et là..

#

ça fonctionne héhé 😉

#

merci

cyan iron
#

🥳

#

Nice

cyan iron
#
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.

slim anvil
#

sans avoir le reste essaye juste de rajouter un 2ème paramètre avec

#

{ type: ‘text’ }

#

Normalement c’est en default mais pour tester

cyan iron
#

Donc je fais quoi, je fais msg.guild.createChannel(":gem:❘𝐋𝐨𝐠𝐬",{ type: ‘text’ })

slim anvil
#

, entre les 2

cyan iron
#

Ok comme ça ?

slim anvil
#

Oui

#

C’est que visuel mais use tes quotes habituel sur tel je peux pas les faire bien

cyan iron
#

ok

#

Je test

#

Ah ça a l'air de fonctionner

#

Merci

#

J'ai un problème sur mon programme juste

slim anvil
#

??

cyan iron
#

J'essaye

#

Oe ça marche nickel

slim anvil
#

top

cyan iron
#

Et

#

Si je veux mettre un sujet ?

#

Je fait comment

#

{ topic: "sujet" }

#

?

slim anvil
#

look la doc tu auras tout dessus

#

Je connais pas les paramètres par coeur

cyan iron
#

ok

signal marsh
#

quelqu'un pourrais m'aider a faire un bot giveaway et auto rôle geure YAGPDB

oak turret
#

pourquoi tu le prends pas xD?

red snow
#

Parce que cesr plus propre d'avoir son bot

slim anvil
#

ç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

cyan iron
#

Oui

red snow
#

Ui remarque c'est vrai, s'il fait pas de dev pas c'est pas facile

humble storm
#

s'il fait pas de dev pas c'est pas facile
Pas comprendre

steel maple
#

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.

slim anvil
#

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)
}
steel maple
#

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 ?

slim anvil
#

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

steel maple
#

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", ...

slim anvil
#

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 sue
Mais sinon oui tu peux simplement try catch dans ta fonction, comme ça si ca pète tu auras ton log

steel maple
#

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

slim anvil
#

yes carrément tu fais bien

steel maple
#

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 ?

slim anvil
#

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

steel maple
#

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...

slim anvil
#

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

steel maple
#

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...

slim anvil
#

essaye juste de mettre ton try catch ici

#

a la limite

steel maple
#

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

slim anvil
#

tu fais uen requete pour récupérer l'heure et la date ?

#

de ta plateforme hero

steel maple
#

oui

slim anvil
#

Show me ton code

#

si tu peux

#

ce sera + simple comme ça

austere laurel
#

Bonjour, j'aimerais savoir comment faire pour que le bot poste un message lorsqu'il est ajouter un serveur. Merci d'avance

slim anvil
#

t'as l'event guildCreate

#
client.on("guildCreate", guild => {
    // send msg
})
cyan iron
#

Ah Nice je cherchais aussi

austere laurel
#

D'accord, merci beaucoup, mais comment fait on pour send ce message dans le channel des "Message systémes"

slim anvil
#

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

weak oar
#

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")

}```
slim anvil
#

fais des screens a la limite qu'on est une bonne indentation, etc

spring dock
#

ou met sur pastebin

weak oar
#

@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

slim anvil
#

???

#

ça va oui t'as pas l'impression que c'est imbitable

weak oar
#

de? @slim anvil

slim anvil
#

Ah non c'était pas pour toi il a del son message

#

il avait publié tt son code

weak oar
#

ah oké

slim anvil
#

Met un console.log dans ton memberAddReaction

#

pour voir si il est appelé 2 fois aussi

#

ca va nous situer plus facilement le probleme

weak oar
#

tjrs moi? Xd

slim anvil
#

yess

weak oar
#

oké jfait ca

slim anvil
#

Yep

weak oar
#

ok je lance le bot

#

ah bah dans la console ca a spamme "Reaction"

slim anvil
#

tu as react cb de fois

#

et cb de fois il apparait ?

weak oar
#

oula a l'infini

slim anvil
#

je sais pas trop

#

c'est bizarre l'endroit ou tu as mis ton event reaction add

#

laisse le dans l'index

weak oar
slim anvil
#

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

weak oar
#

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

slim anvil
#

essaye de bouger ton addReaction au meme endroit que ton client.on('ready') pour voir 🤔

weak oar
#

c'est a dire?

slim anvil
#

là ou tu as ton client.on('ready')

weak oar
#

oui mai mon client.ready est dans mon index or la je suis pas sur mon index surun autre fichier

slim anvil
#

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à

weak oar
#

ok jvais essayer, euuh je copier tt le code pour l'moji jaune?

slim anvil
#

Tout le clien('on')

weak oar
#

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

slim anvil
#

franchement la comme ca no sé

weak oar
#

oké....

signal marsh
#

Bonsoir j'ai un problème avec mon bot

red snow
#

Quel est le problème ?

signal marsh
#

J'ai fait un tuto sur Youtube pour la commande giveaway

#

Et le code ne marche pas

red snow
#

Quelle est l'erreur ? Quel est le code ?

signal marsh
#

Si Sa te dérange pas je voudrais t'envoyer le code et l'erreur en mp

red snow
#

Vsy

cyan iron
#

Bruh pourquoi en MP

#

Ca serait mieux si plusieurs personnes t'aidait

red snow
#

🤷‍♂️

#

Pis même ça donne la solutio' à d'autres personnes

cyan iron
#

Après on va pas te voler ton code issou

red snow
#

Surtout si c'est un tuto kappa

signal marsh
#

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.

slim anvil
#

Tu as oublié un }

#

Recopie mieux

#

Et ça ira

signal marsh
#

merci mais maintenant j'ai un autre problème

slim anvil
#

?

signal marsh
#

est ce que tu pourrais rejoindre le discord que je t'ai envoyer ,pour que tu voie le nouveau problème

slim anvil
#

fais des screens

signal marsh
#

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)

red snow
#

Bah client n'est pas définit, il suffit de lire

signal marsh
#

donc il faut que je fasse quoi ?

red snow
#

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é kappa

keen narwhal
#

mdr

#

le copier coller ses male

red snow
#

J'espère que t'as appris le JS ava't de copier, parce que c'est beau de copier, mais faut savoir modifier

keen narwhal
#

sa serais la meilleur qui ne connaisse r au JS

red snow
#

Mais bon, on est la pour aider avant tout

keen narwhal
#

exacte

signal marsh
#

car ducoup le client est au hasard ,c'est pour un bot giveaway

red snow
#

Alors il ya un problème au niveau de la fonction qui choisit le joueur

keen narwhal
#

ha bon

red snow
#

Ou non attend

keen narwhal
#

je vais test moi

red snow
#

Tu 3z sur d'avoir initialisé client ?

signal marsh
#

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()*

red snow
#

La ya pas client

signal marsh
#

donc ducoup je fait comment ?

red snow
#

Ya un moment où tu dois mettre let client?=........

keen narwhal
#

pour moi la commande marche meme pas

red snow
#

Mr Dupont tu es sur quelle version discordjs ?

signal marsh
#

hein ,||c'est quoi ? deso si je suis nul mdr ||

red snow
#

Oof

keen narwhal
#

OOOFFF

red snow
#

L'api discord

keen narwhal
#

tu la trouvé ou le code ?

red snow
#

Pas grave tkt, mais avant tout apprends le JS et puis commence à dev des bots, je te dis pas ça méchamment hein

signal marsh
#

je l'ai touver la

keen narwhal
#

au pire

slim anvil
#

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

red snow
#

Enzo!

#

J'ai une question

signal marsh
#

11.5.1

red snow
#

Tu sais pas pourquoi mon bot veut pas détecter "onReactionAdd"?

slim anvil
#

Du coup mr Dupont tu as que son fichier ? car a aucun moment il import discord

red snow
#

Genre il lance pas l'évent

slim anvil
#

il détecte que les nouveaux messages ?

#

et les anciens no ?

red snow
#

Il détecté rien

keen narwhal
#

heuu

red snow
#

Mais les events marchent bien pourtant

#

Genre guild member add etc Marche, mais pas "onReactionAdd"

slim anvil
#

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

red snow
#

Ça passe pas du coup

slim anvil
#

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

red snow
#

Je crois que j'avais essayé oe

slim anvil
#

réessaye pr me dire

#

si meme comme ca ça ne passe pas

#

envoie juste un screen de l'event pour voir

red snow
#

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

keen narwhal
ancient sonnetBOT
#
Citation de 🅼🅰🆇 LaMenace#9861 posté dans #aide-bots

Cliquez sur 📄 pour accéder au message.
Cliquez sur 📎 pour ouvrir le fichier.

Ce message est un fichier sans message suplémentaire.

red snow
#

Je suis sur tel là

slim anvil
#

Oui mais essaye sur un message ajouté par toi

red snow
#

Oe j'essaye dans 30 min environ et je te dis

#

Mais t'as pas d'idée à part le raw message?

slim anvil
#

tu l'as cet event ?

#

si non je pense que ca vient de là

#

tu synchro pas les messages "anciens"

red snow
#

Non je synchro pas

#

Il faut le faire ?

slim anvil
#

pour ça

#

ouep

red snow
#

Okay, et t'as une piste pour les synchro ?

slim anvil
#

regarde sur google l'event raw tu auras des trucs tout fait

red snow
#

A mais ya un event pour ça? OK nice, merci

slim anvil
#

yep

signal marsh
#

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()

cyan iron
#

J'ai rien dit 🙂

viral marten
#

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 😉

red snow
#

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 ?

slim anvil
#

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

red snow
#

👌 merci

#

Je vais trouver une alternative le temps

slim anvil
#

y a pas mal de tuto qui en parle tu peux trouver je pense

red snow
#

J'ai justement essayé de filtrer les recherches sur google du dernier mois, et j'ai rien trouvé :/

slim anvil
#

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é

spring dock
red snow
#

merci ! Mais c'est vrai que c'est beaucoup plus simple que ces raw event la

boreal edge
#

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 🙂

slim anvil
#

l’évent messageReactionAdd

boreal edge
#

Merci 🙂

boreal edge
#

Je dois bien m'en servir comme ça ?

module.exports = function(bot) {
    bot.on("messageReactionAdd", (react, user) => {
        console.log(react)
        console.log(user)
    });
};
west plover
#

si ton fichier est load avec la fonction qui s'exécute, oui j'imagine

boreal edge
#

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...

slim anvil
#

sur un ancien message ou sur un que tu as posté apres le restart du bot

boreal edge
#

Je viens de tester sur un message après le restart du bot sa fonctionne mais je peux faire comment pour les anciens messages ?

slim anvil
#

look l'historique c'est ce que j'ai dis a superburger

#

regarde l'event raw

#

mais remonte un peu et tu verras

spring dock
#

@slim anvil c'est la v12 il a dit donc y a pas de trucs raw si

#

?

slim anvil
#

Ah oui mince v12

#

J’avais oublié

spring dock
slim anvil
#

Bah regarde quand même plus haut ce que j’ai envoyé à superburher

#

Ça marche dans tt les cas harold

boreal edge
#

Ok merci Enzo 🙂

red snow
#

Les partial 👌 hyper simple à utiliser

timid loom
#

Il faut activer les partials avant ouais

red snow
#

On les active ou ?

#

Parce que c'est simple, mais pas trouvé comment les utiliser

keen narwhal
#

Hello, je ne suis pas trop le chanel,
savez vous si il y à un bot simple pour serveur gmod (statut , joueur connecté ?)

Merci beaucoup 🙂

boreal edge
#

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 🙂

west plover
#

tu dois pas avoir la même version de Discordjs

#

là ça doit être la v12

#

et sur ton autre bot la v11

boreal edge
#

Ah...

#

Oui c'est sa 🙂

west plover
#

et sur la v12, c'est des Manager

red snow
#

Donc tu dois mettre cache

boreal edge
west plover
#

donc bot.guilds.cache.get

boreal edge
#

Sa marche, merci

#

C'est quoi des managers juste ?

west plover
#

des classes qui gère des collections

#

genre le GuildManager pour gérer les guilds

#

etc.

boreal edge
#

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...

west plover
#

regarde si ça peut y répondre thinkgeometric

boreal edge
#

J'ai essayé de refaire le code mais sa n'avais pas fonctionné 👀

west plover
boreal edge
#

Oui

#
const bot = new Discord.Client({
    partials: ['MESSAGE']
});
red snow
#

Met MESSAGE_REACTION_ADD

#

Je crois

boreal edge
#

Où ?

west plover
#

y a pas MESSAGE_REACTION_ADD sur la doc 🤔

#

autrement y a REACTION thinkgeometric

boreal edge
#
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 🤔

red snow
#

A oui autant pour moi, il faut mettre REACTION et non message reaction add

boreal edge
#

bot.on("REACTION", async(messageReaction, user) => { ? 👀

red snow
#

No'

boreal edge
#

Ah x)

red snow
#

A l'initialisation des partials

boreal edge
#

Au lieu de message ?

red snow
#

Oe

boreal edge
#

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

red snow
#

C'est bizarre 🤔 Je préfère que t'attende des gens plus expérimentés que moi

boreal edge
#

Je comprends pas non plus 🤔 merci beaucoup quand même 🙂

slim anvil
#

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

boreal edge
#

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 ?

slim anvil
#

Je comprend pas, tu veux faire quoi exactement

boreal edge
#

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

slim anvil
#

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 ?

boreal edge
#

Oui

slim anvil
#

Vu que tu leurs envoie un message, comment tu vas savoir a qui tu l'as deja envoyé ou non par contre

boreal edge
#

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

slim anvil
#

Ah yes ok

#

Du coup ce sont 2 choses bien différentes, occupes toi déjà du messageReactionAdd

boreal edge
#

( et sa enregistrera aussi en JSON où il en est okaou qu'il le refasse une deuxième fois ).*

#

Ok

slim anvil
#

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

boreal edge
#

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)

slim anvil
#

yep carrément

boreal edge
#

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 🙂

boreal edge
#

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 ?

slim anvil
#

tu es sur la v12 ? avec les partials, la vidéo qu'à renvoyé guthen tout a l'heure

boreal edge
#

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...

slim anvil
#

['MESSAGE', 'CHANNEL', 'REACTION']

#

met message et reaction

#

channel pas obligé juste c'est le truc de la doc

boreal edge
#

Merciiiiii !

slim anvil
#

normalement la si tu réagis a un ancien message, tud evrais avoir le log dans ton bot event reactionAdd

boreal edge
#

Et pour checker les réactions sur le message quand le bot est off, je peux faire comment tu penses ?

#

( edit )

slim anvil
#

dans ton event ready

boreal edge
#

Donc je fetch le message, et je vérifie toutes ses réactions ?

slim anvil
#

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

boreal edge
#

Ok sa marche, merci

#

Et j'ai besoin d'utiliser Promise pour fetch le message on est d'accord ?

slim anvil
#

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

boreal edge
#

donc let msg = await ....fetch(v => v.id === messageID)?

slim anvil
#

je crois que now tu peux direct fetch les messages, donc juste

const message = await ....messages.fetch(messageID)
boreal edge
#

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) => { ?

slim anvil
#

oui

boreal edge
#

Ok merci

slim anvil
#

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

boreal edge
#

Faut pas fetch la guild avant ?

slim anvil
#

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

boreal edge
#

Nan je l'es pas

slim anvil
#

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

boreal edge
#

Ok

#

Merci

boreal edge
#

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 🙂

west plover
boreal edge
#

J'avais déjà essayé console.log(message.reactions.users); mais sa me return undefined