#javascript-typescript

1 messages · Page 44 of 1

slim anvil
#

et tu l’appelles ou du coup

#

Car là ce sera pas bon finalement comme ça

#

C’est là où tu appelles ta fonction que tu dois await

lone flax
#

Ici ?

slim anvil
#

Pour attendre l’exécution de celle ci

#

Voilà là en gros tu auras

#

const check = await sql.sendSQL....

lone flax
#

Ah ok, et j'dois mettre tout ça dans une function du coup j'imagine

#

Que j'appelle en bas

slim anvil
#

Bah si c’est pas déjà dans une fonction tu peux use une promise

lone flax
#

Ah yes je connais pas encore ça je vais aller voir

slim anvil
#

Tu vas voir c’est tout bête ça va en gros attendre l’exécution et quand ce sera bon hop ça passe à la suite

#

bon allez j’y goo bon courage wasied

lone flax
#

Ca marche merci

#

Waw comment ça semble compliqué sur Internet wtf

lone flax
#

C'est bon j'ai compris merci pour ton aide 😉

weak grove
#

Hello ! j'aimerais savoir comment dire quand il execute la commande !test et que c'est bien le user 283315291986067457 et qu'il est bien dans le channel 617677968474636298 et bah sa execute un script après, j'ai penser a un if(message.member === "283315291986067457 ") mais sa a par l'air de marcher

timid loom
#

Si tu utilises la librairie Discord.js

if (message.author.id == '283315291986067457' && message.channel.id == '617677968474636298') {
  // ton script
}```
weak grove
#

Ah cimer 🙂

lone flax
#

Bon désolé mais je galère de ouf avec je comprend pas les objets

#

En gros, j'aimerai bien renommer tout le monde sur mon serveur

#

En un coup

#

Genre dès que le bot se lance, tout le monde est renommé "Test" par exemple

#

Mais je pense qu'il faut encore faire des async et tout.. mais ça marche pas j'ai pas pigé l'utilité de ce truc

#

Quelqu'un peut m'aider 😦

west plover
#

t’es pas obligé d’utiliser des async

lone flax
#

Mais alors je pige rien aux objets parce que rien ne fonctionne

west plover
#

tu peux juste utiliser les Promises mais là t’en as pas besoin (à moins que tu veuilles log quand t’as fini de renommer les gens)

lone flax
#

Fin en même temps j'ai commencé sur le tas sans regarder de tutos du coup j'me retrouve paumé c'est sûr..

west plover
#

les objets c’est le même délire que les tables en Lua

#

donc devrait pas trop être paumé

lone flax
#

Bah ouais, sauf qu'en Lua ça marche :lul

#

Attends je refais mon code et je t'envoie

west plover
#

si tu veux parcourir sur une collection de membres, tu peux members.entries() dans un for [k, v] of 🤔

lone flax
#
bot.on('ready', function () {
    console.log("Je suis connecté !")

    const members = bot.guilds.get("511589599466749972").members;
    for (let[k, v] of Object.entries(members)) {
        console.log(`key ${k}, value ${v}`);
    } 
});
#

Rien que ça, ça ne me print rien

#

Et je comprend pas pourquoi

west plover
#

parce que members n’est pas un object au sens strict mais une Collection

lone flax
#

Ah okey, comment je peux faire du coup? :/

west plover
#

Et Collection est hérité de Map donc tu peux utiliser la méthode entries dessus

#

donc members.entries() au lieu du Object.entries( ... )

lone flax
#

waw

#

ça marche

#

incroyable

west plover
#

wé t’as vu

lone flax
#

Ok première étape maintenant va falloir test la suite ^^

#

Ok bah ça marche

#

Jtm

#

Merci 😄

#

Vu que j'ai testé en condition réelle tu saurais pas comment remettre les nicknames d'origine aux gens? lul

west plover
#

peut-être en récupérant leurs username?

lone flax
#

Ah bah yes bien vu merci

west plover
lone flax
#
    const members = bot.guilds.get("511589599466749972").members;
    for (let[k, v] of members.entries()) {
        var userName = v.username.split("").reverse().join("");
        if (userName) {
            v.setNickname(userName);
        }
    } 

@west plover désolé de te faire chier avec ça, mais pourquoi est-ce que par exemple v.username est égal à undefined dans ce code ?
J'ai du mal à comprendre ça m'arrive souvent malheureusement

timid loom
#

Go utiliser la méthode foreach qui facilite grandement la lecture

#

et évite les problèmes de manière générale

#
members.forEach((k,v,c) => {
  // k = clé dans la Collection, ici l'id du GuildMember
  // v = valeur dans la Collection, ici un GuildMember
  // c = la Collection sur laquelle on réalise un foreach, donc members
  let usrName =  v.username.split("").reverse().join(""); // je sais pas pourquoi tu veux faire ça mais osef après tout
  v.setNickname(usrName).catch(console.error);
});```
west plover
#

@lone flax parce que v est un membre est pas un user, donc tu dois v.user.username pour récupérer son nom

lone flax
#

Ok merci pour votre aide ;)

weak grove
#

Hello ! je n'arrive pas a faire en sorte de modifier le message du joueur quand il fait !test et bah le bot il dois modifier le contenu du message !test en un autre message, j'ai essayé
message.edit("coucou !") mais ca marche pas

west plover
#

tu peux pas modifier le message d'une autre personne

weak grove
#

ah ok :/

#

et pour faire en sorte que quand ont react un emoji sa supprime le message du bot c'est possible ?

west plover
#

#

regarde sur un event du Client

#

reactionAdd ou quelque chose du genre

weak grove
#

ok

floral bolt
#

salut, j'ai un soucis je fait une commande !ban @name raison

#

et pour recup juste la raison j'ai fait ca

#

let raison = message.content.split(" ").slice(2);

#

mais le probleme c'est que si il y a un espace alros ca saute de ligne

hard iris
#

Bonjour a tous, est-ce que quelqu'un connait la "fonction" pour créer un channel si la commande !createchannel a été utilisé ?

keen narwhal
#
hard iris
#

Merci de m'avoir donné, un site que je fouille depuis 30 minutes 🙂

keen narwhal
#

Bah il est simple le site

hard iris
#

"que je fouille depuis 30 minutes 🙂"

hard iris
#

Tu crois que j'ai pas cherché ?

keen narwhal
#

Bah oui

hard iris
#

J'ai même repris le code d'un gars dans une vidéo

#

Et devine : CA NE MARCHE PAS 😉

keen narwhal
#

Car tu t'y prend mal ?

#

No ?

#

Et tu pense que sans code ont va pouvoir t'aider a résoudre un problème ?

hard iris
#

Je demande juste la fonction c'est tout thinkingplayer

timid loom
#

guild.createChannel

hard iris
#

Bon c'est bien la fonction que j'utilisais donc ça vient pas de là merci Taink

timid loom
#

je la trouve plus dans la doc tiens 🤔

keen narwhal
#

same

timid loom
hard iris
#

Tout ce que j'i trouvé c'est un event

timid loom
#

ça dépend de ta version je pense

#

la v12 est sortie donc y a certains trucs qui ont disparu ou ont étés déplacés

hard iris
#

Ben je viens de refaire le bot donc avec les modules après là a chaque code que j'essaye "guild is not defined"

timid loom
#

bah guild tu dois l'obtenir

keen narwhal
#

message.guild

#

Ou tu le define avant

hard iris
#

C'est ce que j'utilse

timid loom
#

déjà t'as quelle version de Discord.js ?

hard iris
#

"message.guild.createChannel"

#

Normalement la derniere

timid loom
#

donc la 12

hard iris
#

J'ai installé les modules y'a même pas 1/2 heure

timid loom
#

ouais, ça doit être la 12

#

je t'avoue que je connais pas bien cette version donc il vaudrait mieux lire la doc un peu

#

ça je pense

#

je te laisse jouer avec

hard iris
#

Eh ben ça a marché !

timid loom
#

j'ai l'impression qu'il faut faire message.guild.channels.create(...)

hard iris
#

oui ça a marché après 80 ans de rage ça marche

timid loom
#

bon bah voilà en tout cas

#

bonne chance sur ce changement de version!

hard iris
#

Je crois que j'ai un backup d'une autre version mais je vais garder celle là pour l'instant

crimson fern
#

De toutes facons, il faut s'adapter

timid loom
#

@crimson fern c'est plus facile à dire qu'à faire -> par exemple pour le bot de gca on a plusieurs milliers de lignes de code à réécrire juste pour s'adapter à la nouvelle version... ça va demander un temps de réadaptation d'autant plus que pour l'instant peu de gens l'ont utilisé cette fameuse version

#

donc l'aide en ligne disponible est minime

subtle kernel
#

qlq si connais avec le bot voicemaster ?

floral bolt
#

salut j'ai une petite question

#

j'aurais besoin d'aide pour recup des infos via un site

#

en gros sur gmod je fais un http post et j'aimerais bien recevoir les information sur mon bot discord

ocean pine
#

Bonjours
Je voudrais savoir c'est quoi le plus simple entre le lua le java et le python pour commencer
Merci

timid loom
#

Ça dépend de ce que tu connais le mieux

ocean pine
#

Ok

icy salmon
#

Les trois se valent je dirais

keen narwhal
#

Je comprend pas

#

J'ai beau réinstallé les dépendance etc

#

Même nodejs

#

Mais il ne veut pas fonctionné

#

. . .

slim anvil
#

quelle version de discord tu utilises ?

keen narwhal
#

12

slim anvil
#

.fetch()

keen narwhal
slim anvil
#
keen narwhal
#

On ne peut plus get

slim anvil
#

Pas avec la version 12 à croire

timid loom
#

La v12 à changé plein de trucs @keen narwhal, je l'ai dit la dernière fois

slim anvil
#

ils changent le nom de leurs méthodes

keen narwhal
#

OUAHHHH

#

NON

#

Bruh

slim anvil
#

c'est normal c'est un changement majeur

keen narwhal
#

Ils ont chiant

#

Depuis 20 mins je rage 😭

slim anvil
#

donc faut s'y attendre, suffit de juste bien mettre la bonne version dans ton package

timid loom
#

Tu peux toujours retourner à la v11 hein @keen narwhal

keen narwhal
#

Ouai car att

#

Il ne veut pas me stock le channel

errant rampart
keen narwhal
#

@slim anvil Comment retourné a la 11

#

Car la

#

OOf

#

Sa me chauffe

slim anvil
#
"discord.js": "^11.5.1",
keen narwhal
#

discord.js@11

#

Ok

slim anvil
#

dans ton package.json

boreal edge
#
        maintenancetable = {
            status: 0,
            reason: reason,
            hours: hours,
            minutes: minutes,
            time: time
        }
        console.log(maintenancetable);
        fs.writeFileSync("../maintenance.json", JSON.stringify(maintenancetable));

Est ce que vous savez pourquoi est ce que ma table ne se marque pas dans mon fichier.json ?

keen narwhal
#

Je viens de capter mon erreur mdr

boreal edge
#

(

const fs = require('file-system')
const JSON = require('JSON')`

)

#

Je mets fs Fireless ?

timid loom
#

À la place de file-system ? Ouais

boreal edge
#

Niquel ! Mercii !

keen narwhal
#
client.on("ready", async () => {
    if (!data.id || !data.musique) return;
    const channel = await client.channels.fetch(data.id);
    const connection = channel.join()
    const dispatcher = connection.play(data.musique, { highWaterMark: 12 });
});```
#
TypeError: connection.play is not a function```
#

:/

#

Pourtant dans la maj ils ont modifier PlayStream en play

slim anvil
#

essaye déjà de voir si ton connection n'est pas undefined

#

si le problème ne vient pas de plus haut quoi

keen narwhal
#

Aucune erreur mais aucune musique

#
client.on("ready", async () => {
    if (!data.id || !data.musique) return;
    const channel = await client.channels.fetch(data.id);
    const connection = await channel.join()
    const dispatcher = connection.play(data.musique, { highWaterMark: 512, volume: true });
});```
#
VoiceConnection {_events: Object, _eventsCount: 4, _maxListeners: undefined, voiceManager: ClientVoiceManager, channel: VoiceChannel, …}```
keen narwhal
#

J'ai un petit problème de syntax json
J'essaie de mettre plusieurs valeurs dans une "table"
sauf que j'obtiens cette structure

#

Au lieu de cette la

#
    if (!warndata[user.user.id]) {
        warndata[user.user.id] = {
            "warns": [
                ""
            ],
        };
    }
    warndata[user.user.id].warns += reason;
    fs.writeFileSync("./warndata.json", JSON.stringify(warndata));```
slim anvil
#

.push(reason)

#

Et non +=

keen narwhal
#

D'accord je te remercie

keen narwhal
#

J'ai fais des recherche et je ne trouve pas comment supprimer un une value d'un array :/

west plover
#

pop?

keen narwhal
#

Alors j'ai trouvé, mais sa la supprime pas mais la define en null :/

#
delete warndata[user.user.id][args[1]];```
slim anvil
#

si tu veux supprimer tu splices ou tu filter ton array

#

le filter c’est cool car il te renvoie un tableau direct sans la/les valeurs

#

le filter ça ressemblerait à ça à peu près, array.filter(item => item._id === id)

#

Et il va supprimer tous les éléments avec cet id

keen narwhal
#

const queue = new Map();

client.on('message', async message => {
if (message.author.bot) return;
const serverQueue = queue.get(message.guild.id);
if (!message.content.startsWith(prefix)) return;

if (message.content === prefix + "play") {
    execute(message, serverQueue);
    return;
} else if (message.content === prefix + "skip") {
    skip(message, serverQueue);
    return;
} else if (message.content === prefix + "stop") {
    stop(message, serverQueue);
    return;
} else {
    message.channel.send('Tu dois être en vocal pour faire cette commande !')
}

})
L'image explique le problème

crimson fern
#

Car t'as mis un else qui envoie un message sans une commande spécifique

#

Mais un message commencant par !

timid loom
#

C'est pas ça le problème

crimson fern
#

Ah

timid loom
#

normalement en mettant "!play" ça devrait faire play

#

et là ça va dans le else

crimson fern
#

Ah oui j'avais pas vu

timid loom
#

pourquoi pas faire un message.content.slice(1) == 'play' cependant ?

#

ah

#

nan

#

ok

#

c'est littéralement le message que tu as mis qui explique ton erreur

#

j'avais pas vu ta fonction execute

#

@keen narwhal va dans un channel vocal

#

et retente ta commande

keen narwhal
#

Je comprend pas trop att

#

Je suis perdu

timid loom
#

en gros

#

ton truc tu l'as c/c, nan?

keen narwhal
#

c/c C'est a dire (Je suis un peux con x))

timid loom
#

copié/collé

keen narwhal
#

Je les fait a partir d'une vidéo

timid loom
#

ouais

#

c'est la même chose

keen narwhal
#

Ok

timid loom
#

en gros ton truc t'as fait un else qui affiche le machin vous devez etre en vocal pour faire cette commande

#

sauf que n'importe quel message va trigger la commande

#

@crimson fern t'avais raison dsl j'ai juste mal lu

crimson fern
#

Np

keen narwhal
#

Des que je suis en vocal sa fait pareil

timid loom
#

pour !play ?

#

t'es certain?

keen narwhal
#

Ouais

timid loom
#

ok

#

par message.member.voice.channel

#

il faut lire la doc

keen narwhal
#

Je vais essayer

lone flax
#

Salut, j'ai besoin d'aide pour les Promise...

J'ai une fonction qui fait des requêtes SQL et qui retourne automatiquement la valeur récupérée, mais malheureusement il y a un délai et donc ça retourne une valeur nulle avant même qu'on ai été la cherchée.

Il me faudrait de l'aide avec les Promise ou les Async funcs parce que j'ai du mal, merci ^^

#

Et c'est résolu 🙂

timid loom
#

resolve();

lone sonnet
#

Bonjour bonjour, je commence tout juste dans la création de bots en Discord.JS et je souhaiterais faire une commande où quand on l'a fait ça fait une réponse au hasard dans une embed (ça je sais faire une embed)
Par exemple j'écrit ".fromage" et ça me mets une image au hasard de fromage 🙃
Mais je ne sais pas du tout comment fonctionne le random 😬

timid loom
#

Ça dépend de comment tu as stocké tes images
Mais globalement tu dois utiliser Math.random() : https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Math/random

lone sonnet
#

Merci, je vais m'informer sur tout ça et comment je vais stocker les images 🙂

lone sonnet
#

Me revoilà !
Bon du coup j'ai fait mon petit code qui choisi entre deux personnages d'un jeu et qui le mets dans un embed :

if (msg.content === '$ac-ours') {
    let o_random = getRandomInt(2);

  if (o_random === 0 ){
    const o1 = new Discord.RichEmbed()
    .setColor('#9B65C9')
    .setTitle("Doudou")
    .setDescription("Vous êtes tombé sur Doudou 🐻")
    .setImage("https://cdn.discordapp.com/attachments/685889722190790661/685889749365424157/175px-Dozer_PG.png")
    .setFooter('Demandé par :', msg.author.username,msg.author.avatarURL)
    msg.channel.send(o1);
    }
  if (o_random === 1 ){
    const o2 = new Discord.RichEmbed()
    .setColor('#A36C74')
    .setTitle("Oursula")
    .setDescription("Vous êtes tombé sur Oursula 🐻")
    .setImage ("https://cdn.discordapp.com/attachments/685889722190790661/685889814087991314/latest.png")
    .setFooter('Demandé par :', msg.author.username,msg.author.avatarURL)
    msg.channel.send(o2);
    }
}```
Mais lorsque je fait la commande ($ac-ours), ça ne fait rien et cette erreur apparaît dans ma console :
```js
ReferenceError: getRandomInt is not defined```
#

(plus tard je compte en mettre beaucoup plus)

marsh drift
#

tu n'as pas définis le fonction qu'il y a dans la doc je suppose, cette fonction n'est pas native

#
function getRandomInt(max) {
  return Math.floor(Math.random() * Math.floor(max));
}
lone sonnet
#

Ah oui c'était ça, ça fonctionne, merci énormément 😄

cyan iron
#

Hey salut

#

j'aimerais bien savoir quelque chose

#

je fait actuellement un système qui supprime les messages de personnes quand on rentre la commande -msgsclear @mention

#

J'ai fait un embed qui s'envoie et qui dit suppression en cours

#

et j'aimerais que l'embed soit supprimé une fois la commande finie (une fois que les messages de la personne mention soit supprimés), mais impossible j'y arrive pas

#

Voici mon code

#

     if (msg.guild && msg.content.startsWith(prefix + 'msgsclear ')) {
        msg.delete()
        const deleteper = msg.mentions.members.first();

        const chargementsup = new Discord.RichEmbed()
            .setColor('#ff0000')
            .setAuthor('Suppression des messages de ' + deleteper.displayName + ' en cours...', 'https://cdn.discordapp.com/emojis/645226752091619338.gif?v=1')
        msg.channel.send(chargementsup)

        msg.channel.fetchMessages()
            .then((msgCollection) => {
                msgCollection.forEach(msg => {
                    if (msg.author.id === deleteper.id) {
                        msg.delete()
                    }
                });
            });

            //J'aimerais que ça se supprime à ce moment là !
        }
            

#

La suppression de messages fonctionne parfaitement

#

mais voilà

#

merci de me mention

#

@cyan iron

crimson fern
#

Je sais pas si c'est la meilleur idée, mais tu peux faire un .then

slim anvil
#

Si le mec a 400 messages, tu vas en delete 400 donc 400 requetes d'un coup ? je connais pas le rateLimit de discord

#

mais y a moyen que sur certains cas tu manges un 429

#

Et comme tu gères nul part tes erreurs

crimson fern
#
        const chargementsup = new Discord.RichEmbed()
            .setColor('#ff0000')
            .setAuthor('Suppression des messages de ' + deleteper.displayName + ' en cours...', 'https://cdn.discordapp.com/emojis/645226752091619338.gif?v=1')
        msg.channel.send(chargementsup).then(c => {

          msg.channel.fetchMessages()
              .then((msgCollection) => {
                  msgCollection.forEach(msg => {
                      if (msg.author.id === deleteper.id) {
                          msg.delete()
                      }
                  });
              });
          }
          c.delete()
      )}
slim anvil
#

ça n'attendra pas la fin du delete pour le remove

timid loom
#
        const chargementsup = new Discord.RichEmbed()
            .setColor('#ff0000')
            .setAuthor('Suppression des messages de ' + deleteper.displayName + ' en cours...', 'https://cdn.discordapp.com/emojis/645226752091619338.gif?v=1')
        msg.channel.send(chargementsup).then(c => {

          msg.channel.fetchMessages()
              .then((msgCollection) => {
                  msgCollection.forEach(msg => {
                      if (msg.author.id === deleteper.id) {
                          msg.delete()
                      }
                  });
              })
              .finally(c.delete());
          }
      )}```
#

et là en effet sur 400 messages ça va faire une belle erreur

cyan iron
#

Nice merci ça a l'air de fonctionner

#

Je test

#

Ouais non ça marche pas...

#

Il se supprime tout de suite après

slim anvil
#

bawi

cyan iron
#

du coup je peux faire comment @slim anvil

#

😢

marsh drift
#

bah si tu supprime tout les messages en 0.5 secondes c'est normal qu'il se supprime "instantanément" si tu veux qu'il reste quelque seconde, il faudrais que tu ajoute un setTimeout avant de del ton richEmbed

cyan iron
#

Non justement les messages sont longs à se supprimer

#

Juste petite question comment je fais pour chopper l'ID d'un message que j'ai envoyé avec le bot

#

Quand je l'assigne à une variable ça marche pas

#

AH peut être avec un fichier.json

timid loom
#

Oula non

#

Dans une fonction asynchrone, tu fais par exemple
let msgId = (await chan.send(...)).id

#

Ça doit être un peu différent en réalité mais je suis sur téléphone

cyan iron
#

Oulah

#

Euuh

#

Await j'ai jamais utilisé

#

J'avais vu un tuto sur ça

#

Mais je vais regarder apres merci 🙂

west plover
#

Utilise les promises au lieu d’await sinon

cyan iron
#

Non mais j'ai trouvé le problème

#

en fait c'est au niveau de mon code qui supprime les messages

#

c'est à moitié bugé

#

c'est pas grave

cyan iron
#

Promise j'ai essayé

#

Au fait

ocean pine
#

Si je connais rien des 3 sorte de développement c'est quoi le plus simple

slim anvil
#

De commencer par apprendre un des 3 langages avant de vouloir utiliser des libs harold

cyan iron
#

Le javascript

ocean pine
#

Ok

#

Mrc

cyan iron
#
 guild.roles.forEach(r => {
                    msg.author.send("*Nom du rôle :* `" + r.name + "` | *Couleur du rôle :* `#" + r.color + "` | *ID du rôle :* `" + r.id + "` | Position : " + r.position)
            });

#

Ca affiche les rôles du serveur

#

Avec leur nom, couleur, etc

#

Comment je fais pour les envoyer dans la bonne position

keen narwhal
#

C'est a dire dans leurs bonne position ?

cyan iron
#

Oui

#

En fonction de leur position

#

J'ai mis r.position au pire pour le voir mais bon ce serait plus visible de le faire directement plutôt que de chercher l'ordre

#

Après si vous savez pas c'est pas grave

#

Tu vois dans le bon ordre comme ça

#

Et que dans ma liste ça fasse ça

#

Parceqye là ça fait ça

#

Pas ouf quoi

#

Aaah attends

#

Si je fais un tableau

#

Ptn j'ai eu une idée

#

Si je vais un tableau avec un élément une phrase

slim anvil
#

tu sort

#

si la position est un number

#

ca va le faire tt seul

#

de te trier ton array dans l'ordre asc ou desc

cyan iron
#

J'ai pas compris

slim anvil
#

Tu veux les afficher du plus grand au plus petit en terme de position ?

#

sur ton guild.roles tu fais un .sort()

cyan iron
#

Le plus grand en premier

#

Ah ok

#

Et le sort fait quoi

#

Ok merci je vais regarder

slim anvil
#

Il va te permettre de comparer a et b

#

donc la par exemple a.position - b.position

#

et du coup il va te les ranger par ordre desc

cyan iron
#

Oui sauf que là c'est tout le temps r.position

#

Avec foreach

slim anvil
#
guild.roles.sort((a, b) => a.position - b.position).map(item => {
  msg.author.send(`*Nom du rôle*: *${item;name}......`)
})
#

par ex

cyan iron
#

Oui mais à et b correspondent à quoi

#

Je te laisse j'ai cours

slim anvil
#

a et b correspondent a ta premiere valeur de ton tableau donc guild.roles[0] et b guild.roles[1] ou l'inverse mais je crois que c'est ça

cyan iron
#

Ah oui mais j'ai pas de tableau

#

Ah non j'ai rien dit ok

#

Ok je vais regarder quand je serais chez moi

cyan igloo
#

Quelqu'un sait comment stocker un objet (.Channel) dans un doc txt pour pouvoir le réutiliser par la suite

cyan iron
#

.json

#

Tu peux stocker des trucs

cyan igloo
#

On est sur du python

cyan iron
#

AH

#

Je peux pas t'aider déso

cyan igloo
#

On voudrait stocker l'objet surligné

#

Dans la console

hazy mirage
#

C’est horrible en Python 😭

cyan igloo
#

Personne n'a de solution

#

Sinon je vais devoir utiliser la méthode du shlag

cyan iron
#

Ou alors tu passe en JavaScript c'3st mieux

marsh drift
#

tu veux stocker un ou plusieurs objets ? En soit juste un file = open("myfile.txt","w") file.write(myObjectInStr) puis le récup avec file = open("myfile.txt","r") str = file.read()

#

puis le l'instancier en type que tu veux

#

si tu en veux plusieurs open ("myfile.txt", "a") pour en ajouter str = file.read() pour lire, puis filter(lambda k: 'id=0000000000000000000000000000000' in k, str )

cyan igloo
#

Je ne vais pas passer en JavaScript car c'est mon projet de fin d'année et on ne connait pas vraiment le JavaScript

#

Je vais essayer ta solution Frankich

keen narwhal
#

Bonsoir , Un amis ma passez un bots discord mais je ne sais pas comment le faire marcher qui pourrais m'aider ?

cyan iron
#

Bah envoie nous le code x)

keen narwhal
#

Ok :

#

@cyan iron alors ?

cyan iron
#

Euuh pourquoi MEGA ?

#

Envoie juste le code en JS dans le channel

keen narwhal
#

Ces a dire ?

cyan iron
#

Ouf

keen narwhal
#

Mais ces que il a plein de ficher et je sais pas comment lancer

cyan iron
#

Bah ton ami il est pas cool si il t'as tout balancé comme ça

#

Déjà est-ce que t'as visual studio ?

keen narwhal
#

Oueo

#

Ouep

#

Node.js aussk

#

Aussi

cyan iron
#

Ok nice

#

Le bot est en node.js ?

keen narwhal
#

Ouep

cyan iron
#

Bah tu lance le fichier index.js ou main.js

#

Ca dépend le nom

keen narwhal
#

Mais il a pas le config.json

cyan iron
#

Envoie un screen de ton dossier stp

keen narwhal
#

Ok attend

cyan iron
#

Pas besoin du config si il l'appelle pas

keen narwhal
cyan iron
#

OULA

#

Bah ouvre le .js y'a quoi dedans

#

gulpbabel chépakoa là

keen narwhal
#

quel js ?

#

a ok attend

cyan iron
#

gulpbabel chépakoa là

keen narwhal
cyan iron
#

Bah tu le lance x)

#

Si il a mis le token

#

Je dois y aller ++

#

Déso

keen narwhal
#

ah

slim anvil
#

c'est pas le fichier babel qu'il faut run lool

cyan iron
#

Bah y'a pas d'autre .js

#

T'es sur que c'est du nodejs ?

slim anvil
#

ça veut pas dire que c'est celui ci

#

Babel sert a compiler du code récent en gros

keen narwhal
slim anvil
#

car sur node certaines fonctions dispo en web ne sont pas encore dispo dessus par ex

#

voilà là ici

#

tu node index.js

keen narwhal
#

mais chez pas si mon config.js et bon

cyan iron
#

bah oui

slim anvil
#

Et bah tu vérifies

keen narwhal
#

chez pas si ces sa

slim anvil
#

Oui ici tu mets ton bot token

#

et le prefix que tu veux utiliser

keen narwhal
#

sa me met sa

slim anvil
#

tu as npm i avant ?

keen narwhal
slim anvil
#

re run pour voir

#

sinon demande a ton ami qui te l'a donné, no ??

cyan iron
#

Oui x)

keen narwhal
#

ben il ma dit il la pris sur internet x)

slim anvil
#

super safe ça

#

tant qu'à prendre un bot sur internet, autant en invité un déjà fait

keen narwhal
#

après j'en n'ai 1 autre mais il crash H24

cyan iron
#

OUF SUR INTERNET

#

OUF

keen narwhal
#

toute les commandes bug

slim anvil
#

c'est qu'il est mal fait

cyan iron
#

C'est pas safe du tout

#

Tu sais que le mec il introduit un programme qui détruit ton serveur discord c'est nimportequoi

#

Ca existe

keen narwhal
#

ah :/

cyan iron
#

Ou alors carrément un virus quand tu dl le dossier

keen narwhal
#

eu

#

tu me fais peur la 😢

cyan iron
#

Bah oui faut faire gaffe à ce que tu installe

slim anvil
#

et meme un dinosaure

keen narwhal
#

j'allais te le dire @slim anvil

keen narwhal
#

@slim anvil npm -g --add-python-to-path install windows-build-tools node-gyp Cette commande elle sert a quoi tu peux me dire ?

#

Sa va pas installé de merde dans mon PC ?

#

Je doit mettre sa dans PowerShell on ma dit

#

ca va faire un truc a mon PC ?

timid loom
#

ça installe des trucs classiques

#

donc non

keen narwhal
#

ok

timid loom
#

bah non

#

tant que tu ne peux pas rentrer d'autres commandes c'est pas fini

keen narwhal
#

Ok normal que sa reste figé

timid loom
#

ça veut dire que c'est en cours, il faut simplement le laisser faire

#

ça peut prendre du temps c'est tout

keen narwhal
#

ok

#

Ces finis 🙂

keen narwhal
#

J'ai enfin crée mon bots finis 🙂

scarlet echo
keen narwhal
#

A oui toi il et plus styler 😅

scarlet echo
#

J'ai mis 2 mois pour le faire mdr

keen narwhal
#

A moi non 😅

#

Une soirėes

scarlet echo
#

tu as quoi dessus ?

keen narwhal
#

Vien privė

fringe wyvern
cyan iron
#

@fringe wyvern ?

fringe wyvern
#

rien

queen ocean
#

@cyan iron il parlais d'un autre msg qui a été del

cyan iron
#

Ah ok

cyan iron
#
   if (msg.guild) {
        const bonjourtext = msg.content.slice(prefix.length).trim().split(/ +/g);
        QD(msg.author.id)

        if (!msg.author.id === "618796535869866004") {

            if (!client.quest[msg.author.id].badge_bjr === true) {

                for (let pas = 0; pas < bonjourtext.length; pas++) {
                    if (bonjourtext[pas] === "Bonjour" || bonjourtext[pas] === "bonjour" || msg.content.startsWith('Bonjour') || msg.content.startsWith('bonjour')) {
                        msg.react("656029708907053110")
                        msg.member.addRole("681874519077683220")
                        msg.channel.send("Quête réussie, tu obtient le badge suivant : `👻`").then(msg => msg.react("👻"))
                        client.quest[msg.author.id] = {
                            badge_bjr: true
                        }
                        fs.writeFile("./quests.json", JSON.stringify(client.quest, null, 4), err => {
                            if (err) throw err;
                        });
                        return;
                    }
                }

            }

        }

    }
#
    if (msg.guild) {
        const firetext = msg.content.slice(prefix.length).trim().split(/ +/g);
        QD(msg.author.id)

        if (!msg.author.id === "618796535869866004") {

            if (!client.quest["Fire badge :" + msg.author.id].badge_fire === true) {

                if (cooldownFire.has(msg.author.id)) { }
                else {
                    for (let pas = 0; pas < firetext.length; pas++) {
                        if (firetext[pas] === "🔥" || msg.content.startsWith('🔥')) {
                            client.quest["Fire badge :" + msg.author.id] = {
                                badge_fire: false,
                                badge_fire_count: client.quest["Fire badge :" + msg.author.id].badge_fire_count + 1
                            }
                            fs.writeFile("./quests.json", JSON.stringify(client.quest, null, 4), err => {
                                if (err) throw err;
                            });
                            cooldownFire.add(msg.author.id);

                            if (client.quest["Fire badge :" + msg.author.id].badge_fire_count >= 20) {
                                client.quest["Fire badge :" + msg.author.id] = {
                                    badge_fire: true
                                }
                                fs.writeFile("./quests.json", JSON.stringify(client.quest, null, 4), err => {
                                    if (err) throw err;
                                });
                                msg.member.addRole("681875077951651840")
                                msg.channel.send("Quête réussie, tu obtient le badge suivant : `🔥`").then(msg => msg.react("🔥"))
                            }
                            return;
                        }
                    }
                }
                
            }

        }


    }
#

Bonjour, vous êtes mon dernier espoir, j'aimerais savoir pourquoi ca fonctionne une fois sur deux ? Ca viens du return ?

slim anvil
#

lequel bout de code

#

fais une capture d'écran de ton editeur ce sera + visible que le codeview de discord

cyan iron
#

Ouais

#

}

slim anvil
#

c'est pas bon

#

!message.author.id signifie si il n'y a pas d'id

cyan iron
#

Ah oui ok x)

slim anvil
cyan iron
#

bah j'ai tenté de supprimé les return

#

ok merci

slim anvil
#

vérifie toutes tes conditions

#

car tu as ce truc là partout

cyan iron
#

Pareil pour les autres oui

#

Mais c'est pas la source du problème

slim anvil
#

same, pas besoin de vérifier si

client.quest[].badge_bjr === true
#

Bah ca en fait partie

cyan iron
#

Parceque ça je l'ai rajouté après

slim anvil
#

car tes conditions ont aucun sens

#

donc elles seront pas bonnes

cyan iron
#

Hop c'est bon

slim anvil
#

les methodes que tu appeles du genre msg.react, msg.channel.send, met des await devant, pour attendre que chaque soit fini pour passer à la ligne suivante aussi

#

si t'as un truc qui va plus vite que l'autre ca peut te faire merder le reste de ton code

cyan iron
#

AAAAAH

#

Ok merci je savais pas ça

#

Je le fais

slim anvil
#

Ta condition pour checker le bonjour, tu fais juste ça à la place aussi, ce sera plus propre

if (bonjourtext[pas].toLowerCase().includes('bonjour')) {
//code here
}
#

pas besoin de faire les 4 checks, celui ca suffira

cyan iron
#

Hmmm

#

Ok

#

Oui mais si on fait Bonjour ou bonjour ça fonctionne ?

#

Ah oui

slim anvil
#

Yes

cyan iron
#

ca le met en miniscule

slim anvil
#

le toLowerCase

cyan iron
#

ok j'ai compris

#

En gros ca prend le mot ca le met en miniscule c'est ça ?

#

et ca verif si c'est bonjour du coup

#

ok nice

slim anvil
#

yes, et ensuite je regarde si dans la string il y a le texte bonjour

#

Du coup pour ton client.quest[id] etc

cyan iron
#

Oui

slim anvil
#

tu peux soit faire

client.quest[msg.author.id]['badge_bjr'] = true
// ou
client.quest[msg.author.id] = {
  ...client.quest[msg.author.id],
  badge_bjr: true
}
#

mais pour le 2ème c'est quand a la limite tu as + de data a ajouter que un seul champ

#

du coup tu peux virer ton return, il aura pas grand intéret comme tu as riend 'autre après

cyan iron
#

Euuh ? J'ai pas compris

slim anvil
cyan iron
#

Oui

slim anvil
#

Sauf que si par exemple tu stockais d'autre truc dans le user associé a cet id tu vas tout écraser

#

car tu réecris complètement l'objet là

cyan iron
#

Ah en gros

slim anvil
#

Du coup si il avait le badge_fire a true

#

il va le perdre

#

entout cas tu vas perdre la data de ton côté

cyan iron
#
client.quest[msg.author.id]['badge_bjr'] = true

il écrase pas il edite

#

aaah

#

Ok

slim anvil
#

Yes

cyan iron
#

Ca c'est super merci

slim anvil
#

Sinon tu fais l'autre manière

#

toi qui vois

cyan iron
#

Parceque j'ai rencontré des pb avec ça

#

J'ai voulu faire un répertoir par personne

#

Je vais pouvoir le faire

slim anvil
#

Yes

cyan iron
#

Le fs.writefile je le laisse ?

slim anvil
#

yes tu vas en avoir besoin pour ajouter ta data du cp

cyan iron
#

ok

slim anvil
#

Du coup pour ton autre screen je te laisse t'occuper, mais c'est globalement les memes problèmes

cyan iron
#
                        client.quest[msg.author.id]['badge_bjr'] = true
                        fs.writeFile("./quests.json", JSON.stringify(client.quest, null, 4), err => {
                            if (err) throw err;
                        });
#

Du coup c'est ça ?

#

Ouais il faut que je refasse pas mal de trucs concernant mon .json aussi

slim anvil
#

Du coup juste si tu peux faire à la place

const newMessage = await msg.channel.send('....')
if (!newMessage) return // check si tu as bien le message
await newMessage.react('emojici')
#

Euhh je connais pas fs plus que ça, deja use mais si ça écrit bien dans ton fichier je pense que oui haha

cyan iron
#

Euuh après au niveau du msg.channel.send('").react("")

#

Ca ca marche pour l'instant

#

Mais après ca change grand chose ou pas ?

slim anvil
#

Yes, mais tant qu'à faire autant avoir la meme syntaxe partout

#

Juste plus propre

cyan iron
#

oK D4ACCORD

slim anvil
#

ca évite d'avoir des .then ou catch partout

cyan iron
#

Ok

slim anvil
#

pas fan du chaining

cyan iron
#

D'ailleur en parlant de catch j'en utilise pas x) C'est mauvais on me l'as dit

slim anvil
#

Tu gères jamais si tu as des erreurs du coup

cyan iron
#

Non 😐

#

Bah clairement si j'ai une erreur mon bot crash

slim anvil
#

ça t'évitera d'avoir ton bot qui saute

#

yep

cyan iron
#

Oui il faut que je le mette en place

#

Mais en fait j'ai pas trop compris comment ça fonctionnait

slim anvil
#

Bah en gros tu peux avoir un

try {
  const data = await .....
} catch (err) {
  await message.channel.send('oops une erreur est survenue')
}
#

et à partir du moment ou t'as un requête qui saute, ca va dans le catch

cyan iron
#

Ah ok d'accord

slim anvil
#

Après voilà le truc c'est que si tu as des requetes qui sont pas forcément grave si ca plante car tu peux faire autrement bah tu vas aller direct dans le catch => du coup c'est fini

cyan iron
#

oula

#

Attends

slim anvil
#

Donc encore une fois tu peux faire tout simple

const user = await message.guild.....

if (!user) return message.channel.send('Désolé utilisateur inconnu')

const xxx = user.send('yo')
#

par ex

#

du coup là tu vas gérer le fait que tu n'as pas de user donc il essayera pas d'envoyer le 'yo'

cyan iron
#

AH

#

Oui ok tout à fait

#

Ok j'ai capté

slim anvil
#

top

#

bon courage

cyan iron
#

Merci 😄

cyan iron
#

@slim anvil Le coup du await fonctionne pas

#

Le bot ne veux pas start

#

Ca met une erreur sur le await

slim anvil
#

Tu dois etre dans une fonction asynchrone

#

ton client.on('message', async (...) =>....

#

par ex

cyan iron
#

Ah ok

cyan iron
#

@slim anvil Y'a un moyen de calculer le temps qu'à passer un membre sur un vocal ?

timid loom
#

[le temps où il rejoint] - [le temps où il quitte]

slim anvil
#

Comme l’a dit taink

cyan iron
#

Aaaah

#

@timid loom @slim anvil Du coup vous connaissez la commande ou pas .... Je trouve pas 😐

slim anvil
#

avec l’évent voiceStateUpdate

timid loom
cyan iron
#

Merci

slim anvil
#

voilà

keen narwhal
#

Comment faire une commandes de hug exemple

/hug @personne

sa send

${message.author.tag} Vous fait un gros bisous @personne

cyan iron
#

msg.mention.first() sera la première personne mentionnée dans la commande

#

Et le reste tu sais faire j'imagine

keen narwhal
#

Vais essayer

crimson fern
#

@cyan iron msg.mentions.users.first()

cyan iron
#

Ah oui oups 🤭

crimson fern
#

PS: Desole de la mention j'avais pas vu le decalage entre ton message et maintenant

cyan iron
#

Je l'ai fait de tête et c'est mauvais

#

Pas grave tkt

#

Je suis tout le temps co

keen narwhal
#

Bonjour quelqu'un pourrait m'expliquer comment faire un bot status gmod server

sand shore
keen narwhal
#
client.on('message', message => {
    if (message.content === prefix + "hug") {
    if (message.mention.user.first === undefined){
    message.channel.send('Vous n\'avez pas séléctioner un membre')
    let member = message.mention.user.first
    let auth = message.author
    message.channel.send(`${auth} as dit ${message.content} à ${member} !`)
}}})

=> if (message.mention.user.first === undefined){
TypeError: Cannot read property 'user' of undefined

cyan iron
#

@keen narwhal un s a mention

#

if (message.mentions.user.first === undefined){

keen narwhal
#

Première foi que je fait une commande de se type x)

slim anvil
#

Ça change rien au reste

keen narwhal
#

Je commprend pas trop c'est truc la

slim anvil
#

juste de se relire et avoir la doc a proximité ça suffit

keen narwhal
#

Il reste une erreur maus je vais essayer de me débrouiller

cyan iron
#

C'est quoi l'erreur @keen narwhal

#

Dit moi je peux t'aider

#

j'attends comme un con la réouverture de paladium

keen narwhal
#

Oof tu va devoir attendre

cyan iron
#

😢

keen narwhal
#

Quand je fait *hug sa fait aucune erreur (cool)

mais quand je fait *hug <member> sa fait rien du tout :/

#
//--HUG--\\
client.on('message', message => {
    if (message.content === prefix + "hug") {
    if (message.mentions.users.first === undefined){
    message.channel.send('Vous n\'avez pas séléctioner un membre')
    let member = message.mention.user.first
    let auth = message.author
    message.channel.send(`${auth} fait un bisou à ${member} :kissing_heart:`)
}}})
cyan iron
#

ton prefix c'est * j'imagine

#

t'as oublié le s encore

#

a let member =

#

x)

#

et normalement ça fonctionne

timid loom
#
client.on('message', message => {
    if (message.content === prefix + "hug") {
      if (message.mentions.users.first === undefined){
        message.channel.send('Vous n\'avez pas séléctioner un membre')
        let member = message.mention.user.first
        let auth = message.author
        message.channel.send(`${auth} fait un bisou à ${member} :kissing_heart:`)
      }
    }
})
#

ça c'est ton code une fois indenté

keen narwhal
#

Je suis nul pas croyable

cyan iron
#

@timid loom le s

timid loom
#

j'espère que tu comprends ton erreur

#

c'est pas le plus gros problème

keen narwhal
#

J'oublie les s

timid loom
#

regarde bien ton if

#

ton deuxième if

#

enfin le scope de ton second if

cyan iron
#

@keen narwhal

keen narwhal
#

Je suis là

cyan iron
#

fait clic droit format document

#

tu va sur ton .js

#

et tu fait clic droit

#

et tu clique sur format document

#

c'est miraculeux

keen narwhal
#

xD

cyan iron
#

Parceque c'est la meilleure mise en forme

#

tu l'as fait ?

#

t'es sur Vs ?

keen narwhal
#

Je sur Visual Studio Code , pas besoin de mettre en format

cyan iron
#

Bah si vu comment t'as envoyé l'autre en haut y'a besoin

keen narwhal
#
client.on('message', message => {
    if (message.content === prefix + "hug") {
        if (message.mentions.users.first === undefined) {
            message.channel.send('Vous n\'avez pas séléctioner un membre')
            let member = message.mention.user.first
            let auth = message.author
            message.channel.send(`${auth} fait un bisou à ${member} :kissing_heart:`)
        }
    }
})
#

J'ai fait se que tu ma dit pis voilà le résulta

timid loom
#

Ouais

cyan iron
#

bah oui

#

voilà

timid loom
#

et il y a un gros problème

cyan iron
#

c'est ça

#

Je vois pas le problème perso

#

c'est quoi @timid loom ?

timid loom
#

member sera toujours undefined

cyan iron
#

AH MAIS OUI x)

#

x)

#

Il faut que tu fasse un else

keen narwhal
#

else: au niv du message.channel.send('Vous n'\avez séléctioner un membre')

cyan iron
#
client.on('message', message => {
    if (message.content === prefix + "hug") {
        if (message.mentions.users.first !== undefined) {
            message.channel.send('Vous n\'avez pas séléctioner un membre')
            let member = message.mention.user.first
            let auth = message.author
            message.channel.send(`${auth} fait un bisou à ${member} :kissing_heart:`)
        }
    }
})
#

Ou ça il me semble

#

c'est ça non @timid loom

#

Je suis pas sûr de mon coup avec le !==

timid loom
#

Bon

#

message.content sera toujours égal à *hug, sinon tu fais rien

#

c'est ce que ton code fait

keen narwhal
#

Ok

timid loom
#

C'est plus clair ?

cyan iron
#

Ah oui aussi

keen narwhal
#

Un peux plus

cyan iron
#

AH OUI y'avais deux erreurs je suis vraiment mauvais pour repérer les erreurs x)

timid loom
#

En gros, tu fais que tester si le message est EXACTEMENT égal à [ton prefixe]hug

keen narwhal
#

Ok

cyan iron
#

c'est message.content.startWith(prefix + "hug") et là ça teste si le message commence par *hug

#

et un conseil aussi met

if (message.guild && message.content.startWith(prefix + "hug"))
#

en gros là ça teste si ton message viens d'un serveur et si il commence par *hug

timid loom
#

Ensuite, tu fais une autre erreur monumentale :
mettons que ta première condition est valide, il faut que tu teste ensuite si il y a une mention, ce que tu fais avec if (message.mentions.users.first !== undefined). Le problème c'est que la portion de code ```js
let member = message.mentions.users.first
let auth = message.author
message.channel.send(${auth} fait un bisou à ${member} :kissing_heart:)

un code correct serait de ce genre là :
```js
client.on('message', message => {
    if (message.content.startsWith(prefix + "hug")) {
        if (message.mentions.users.first !== undefined) {
            let member = message.mention.user.first
            let auth = message.author
            message.channel.send(`${auth} fait un bisou à ${member} :kissing_heart:`)
        } else {
            message.channel.send('Vous n\'avez pas séléctioner un membre')
        }
    }
})
keen narwhal
#

Ok

cyan iron
#

Ouais le code parfait

#

on peut pas être plus clair x)

keen narwhal
#

J'ai fait comme vous m'avez dit mais encore des erreur

#

C'est des erreur de s

slim anvil
#

du coup tu peux aussi juste faire

if (message.mentions.users.first) {
timid loom
#

ah j'ai oublié des s

#

vu que j'ai juste copié collé

keen narwhal
#

let member = message.mention.user.first
TypeError: Cannot read property 'user' of undefined

timid loom
#

mais en gros voilà

#

ouais

#

tu mets mentions et users pour let member

#

yep @slim anvil c'est sensiblement la même chose

slim anvil
#

Non parce que il peut etre a null

#

donc la condition sera bonne

timid loom
#

mais je pense que c'est mieux qu'il le fasse de façon plus verbeuse pour mieux comprendre

keen narwhal
#

Bot SEXKEYBOTAujourd’hui à 13:33
@keen narwhal fait un bisou à first(count) {
if (count === undefined) return this.values().next().value;
if (typeof count !== 'number') throw new TypeError('The count must be a number.');
if (!Number.isInteger(count) || count < 1) throw new RangeError('The count must be an integer greater than 0.');
count = Math.min(this.size, count);
const arr = new Array(count);
const iter = this.values();
for (let i = 0; i < count; i++) arr[i] = iter.next().value;
return arr;
} 😘

#

C'est pas normal xD

timid loom
#

c'est pas ton code ça

#

ah ouais @slim anvil bien vu

#

j'ai tendance à oublier null

keen narwhal
#

J'ai prit celui que tu ma passer , pis ajouter des s

#

et sa ma fait ça

cyan iron
#

WHAT

#

Pas possible

keen narwhal
#

C'est bizarre

#
client.on('message', message => {
    if (message.content.startsWith(prefix + "hug")) {
        if (message.mentions.users.first !== undefined) {
            let member = message.mentions.users.first
            let auth = message.author
            message.channel.send(`${auth} fait un bisou à ${member} 😘`)
        } else {
            message.channel.send('Vous n\'avez pas séléctioner un membre')
        }
    }
})
#

Pourtant voilà

timid loom
#
client.on('message', message => {
    if (message.content.startsWith(prefix + "hug")) {
        if (message.mentions.users.first()) {
            let member = message.mentions.users.first()
            let auth = message.author
            message.channel.send(`${auth} fait un bisou à ${member} :kissing_heart:`)
        } else {
            message.channel.send('Vous n\'avez pas séléctioner un membre')
        }
    }
})```
#

ça c'est mieux

#

avec les parenthèses

#

il faut regarder la doc, ça m'a induit en erreur en corrigeant ton code haha

keen narwhal
#

🙂

cyan iron
#
client.on('message', message => {
    if (message.content.startsWith(prefix + "hug")) {
        if (message.mentions.users.first()) {
            let member = message.mentions.user.first
            let auth = message.author
            message.channel.send(auth +  " fait un bisou à," + member + " :kissing_heart:")
        } else {
            message.channel.send('Vous n\'avez pas séléctioner un membre')
        }
    }
})

Moi je fais comme ça perso

keen narwhal
#

Merci ça marche

#

x)

cyan iron
#

nice

#

voyons montre

slim anvil
#

je connais pas les methodes par coeurs, mais ça me parait bizarre ça

if (message.mentions.users.first()) {
            let member = message.mentions.user.first

unn coup users, un coup user, un coup first() un coup .first

timid loom
#

c'est toujours .first()

cyan iron
#

ah oui

#

bizarre mais si ça marche

#

🤷‍♂️

timid loom
#

il a dû prendre mon code

cyan iron
#

Je peux pas utilser mes smileys c'est vrai 😢

#

Triste

#

Comment j'ai le grade debutant dev bots ?

slim anvil
#

en passant un éval avec @timid loom ou @queen ocean

timid loom
#

go voir ça avec @queen ocean en ce moment je suis un peu occupé

cyan iron
#

Ouais c'est ce qui est écrit

#

Bah je vais vous présenter mon projet de communication inter serveur

#

il faut montrer le code ou pas la peine ?

timid loom
#

évidemment

cyan iron
#

d'accord

#

très bien merci

cyan iron
#

Et voilà je lui ai envoyé !

keen narwhal
#
//--kiss--\\
client.on('message', message => {
    if (message.content.startsWith(prefix + "kiss")) {
        if (message.mentions.users.first()) {
            let member = message.mentions.users.first()
            let auth = message.author
            message.channel.send(`${auth} fait un bisou à ${member} 😘`)
            message.channel.send(`https://tenor.com/view/bear-blow-akiss-love-hearts-kissing-gif-11674749`)
        } else {
            message.channel.send('Vous n\'avez pas séléctioner un membre')
        }
    }
})

Sa marche pour se qui veullent

cyan iron
#

Nice le grade

keen narwhal
#

j'aurai encore besoin d'aide , c'est une erreur que je comprend pas pourquoi elle es la

slim anvil
#

?

keen narwhal
#
client.on('guildMemberAdd', async member => {
const myGuild = client.guilds.get('669660128839991338');
const channel = myGuild.channels.find(channel => channel.name === "welcome");
if (!myGuild) return;

Cannot read property 'channels' of undefined

west plover
#

t'as la nouvelle version de discordjs?

slim anvil
#

look ds tn package.json

west plover
#

enfin je pense pas sinon ça t'aurais dis que guilds.get n'est pas une fonction

#

sinon, c que tout simplement l'id de la guild est mauvais 🤔

slim anvil
#

log ton myGuild et tu seras fixé

west plover
#

pour le coup, il va te return undefined

timid loom
#

@keen narwhal un code lisible commence déjà par être bien indenté donc indente ton code

west plover
#

vu que 'channels' of undefined

slim anvil
#

d'ou le log ton myGuild et tu seras fixé

keen narwhal
#

je vous send tout le code

slim anvil
#

pas besoin

keen narwhal
#

Ok

slim anvil
#

ton probleme il est là

keen narwhal
#

Oh

west plover
#

🤔

keen narwhal
#
client.on('guildMemberAdd', async member => {
const myGuild = client.guilds.get('669660128839991338');
console.log(myGuild)
const channel = myGuild.channels.find(channel => channel.name === "welcome");
if (!myGuild) return;

j'ai mit un console.log

#

On va voir se que ça nous dit

west plover
#

undefined 100% 🤔

slim anvil
#

Bah c'est sur

#

si le channels il l'est aussi

#

mais c'est histoire de le faire chercher et de log pour remonter son pb petit à petit

keen narwhal
#

@west plover GG c'est un undefined

#

Bot test#8094 est connecté
undefined

west plover
#

c t sûr

keen narwhal
#

yep

west plover
#

l'erreur l'indique déjà

keen narwhal
#
client.on('guildMemberAdd', async member => {
const myGuild = client.guilds.get('669660128839991338');
console.log(myGuild)
if (!myGuild) return;

j'ai supr le const channel

slim anvil
#

ca changera rien

#

tu uses quelle version de discordjs

keen narwhal
#

Je sais pas :/ il y a pas une commande pour voir la version ?

west plover
#

package.json a dit Enzo

keen narwhal
#

Ah oui dsl j'avais pas vue x)

#

"discord.js": "^11.1.0",
"lodash": "^4.17.4",
"request": "^2.81.0"

west plover
#

donc t'as l'ancienne

#

good

#

tu veux faire quelque chose sur une guild spéciale ou juste la guild où le membre est entré?

keen narwhal
#

J'ai un welcome , je voudrais que ça rentre sr une guild spécial

west plover
#

vérifie que le bot est sur la guild spéciale du coup

#

et l'ID de la guild aussi

keen narwhal
#

Il peux tout faire le bot

slim anvil
#

Il te demande de vérifier si ton bost est bien invité dans le server "spéciale"

#

car si il y est pas il sera pas lister dans ces guilds

keen narwhal
#

Oh oki

#

Il et bien invité

west plover
#

vérifie que c'est le bon ID de guild aussi

keen narwhal
#

Déjà fait

slim anvil
#

log ton client.guilds voir déjà si dedans il est ton item

#

ça me parait zarb

keen narwhal
#

Il me mais undefined encore

slim anvil
#

sur le client.guilds tu as undefined ?

keen narwhal
#

Yep

#
//--Welcome--\\
client.on('guildMemberAdd', async member => {
const myGuild = client.guilds.get('669660128839991338');
console.log(client.guild)
if (!myGuild) return;

const canvas = Canvas.createCanvas(900, 589);
const ctx = canvas.getContext("2d");

const background = await Canvas.loadImage("./welcome.jpg");
ctx.drawImage(background, 0, 0, canvas.width, canvas.height);

ctx.strokeStyle = "#FFFFFF";
ctx.strokeRect(8, 11, 880, 569);

const { body:buffer } = await snekfetch.get(member.user.displayAvatarURL);
const avatar = await Canvas.loadImage(buffer);
ctx.drawImage(avatar,362 , 60, 200, 200);
// premier = gauche/droite
ctx.font = "45px Consolas";
ctx.fillStyle = "#FFFFFF";
ctx.fillText("Bienvenue sur le serveur", 150, 294);
// = gauche/droite
ctx.font = "45px Consolas";
ctx.fillStyle = "#FFFFFF"; 
ctx.fillText("TEST", 275, 375);
ctx.font = "45px Consolas";
ctx.fillStyle = "#FFFFFF";
ctx.fillText("@" + member.displayName, 125, 450);

const attachment = new Discord.Attachment(
    canvas.toBuffer(),
    "welcome-image.jpg"
);
    channel.send(`Bienvenue sur le serveur TEST ! ${member}!`, attachment);
})
slim anvil
#

franchement stp relis toi

#

client.guilds

#

dans ton log

keen narwhal
#

Ah

#

Je te donne se que le console.log(client.guilds)

slim anvil
#

665770285231767562

#

je vois que ça en ID de guild

#

donc logique

#

t'es sur de l'avoir invité dans les 2 discords ?

#

le meme bot ?

keen narwhal
#

Il es sur un seul serv

slim anvil
#

Bah alors

#

on te pose la question 2 fois tu nous dis que si, et là non ? pfiou débrouilles-toi j'ai du taff

keen narwhal
#

Je comprend plus rien :/

sand shore
#

Hello, vous savez comment je peut passer mon code en async ? js rcon.connect().then(() => { let interval = setInterval(function () { return rcon.command('inovalist').then(inovalist => client.user.setActivity(`Inova Roleplay | ${inovalist}`, { type: 'WATCHING' })); }, 1 * 1000); });

cyan iron
#

oui

#

tu rajoutes async dans ton client.on

sand shore
#

c'est un module

#

ducoup pas de client.on :/

cyan iron
#

Ah bah jsp alors désolé

#

Je débute comme le montre mon grade 😂

sand shore
#

😂

slim anvil
#

c'est pourtant pas compliqué

#

ça dépend ou tu veux l'use

#

mais par exemple dans ton .then( async () => ...

sand shore
#

Je sais pas ou je veux l'use

#

c'est la console qui me dit de l'use

#
(node:7974) UnhandledPromiseRejectionWarning: Error: Command lost
    at handleUnexpectedData (/home/inovarp/node_modules/srcds-rcon/index.js:127:39)
    at dataHandler (/home/inovarp/node_modules/srcds-rcon/index.js:106:32)
    at Socket.dataHandler (/home/inovarp/node_modules/srcds-rcon/lib/connection.js:77:22)
    at Socket.emit (events.js:203:15)
    at addChunk (_stream_readable.js:288:12)
    at readableAddChunk (_stream_readable.js:269:11)
    at Socket.Readable.push (_stream_readable.js:224:10)
    at TCP.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)
(node:7974) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 133)
(node:7974) UnhandledPromiseRejectionWarning: Error: Command lost```
slim anvil
#

Pourquoi tu veux une fonction asynchrone ?

sand shore
#

Quand mon bot exécute le code dans l'interval js rcon.connect().then(() => { let interval = setInterval(function () { return rcon.command('inovalist').then(inovalist => client.user.setActivity(`Inova Roleplay | ${inovalist}`, { type: 'WATCHING' })); }, 1 * 1000); }); il spam l'erreur

slim anvil
#

forcément qu'il la spam tu fais un interval

#

t'as pas d'autres erreur ?

sand shore
#

Non

#

Mais ducoup, je le fais ou mon async ?

slim anvil
#

Tu sais à quoi ça sert un async

#

ou tu l'utilises bêtement

#

setInterval(async () => {

#

ou dans ton .then( async inovalist =>

#

à chaque fonction

sand shore
#

Je vais pas te mito, je l'utilise bêtement, j'ai jamais regardé a quoi cela servait

slim anvil
#

Ce serait peut etre le moment du coup

sand shore
#

Yep :/

slim anvil
#

chercher avant de demander, c'est important pour apprendre

sand shore
#

Okk, pas de problème merci a toi !

cyan iron
#

J'espère que vous voyez bien

#

La 2nde image

cyan iron
#

Vraiment personne ne peut m'aider là ?

slim anvil
#

Ta connexion mongo fonctionne ?

keen narwhal
#

Bonsoir, je créer mon bot Discord et lorsque je le lance la console de Visual Studio ne s'affiche pas.

Comment faire ?

slim anvil
keen narwhal
#

Oui ?

slim anvil
#

dans l'onglet terminal nouveau terminal

keen narwhal
#

Merci

slim anvil
#

je peux pas faire plus clair

keen narwhal
#

C'est bon

slim anvil
#

Top

keen narwhal
#

Mais ouais toujours un problème avec mon bot

slim anvil
#

??

cyan iron
#

Oui ma connexion mongo fonctionne Enzo

slim anvil
#

Du coup tu dois te créer des modèles @cyan iron

#

Tu te crée par exemple un dossier de modeles

keen narwhal
#

J'ai ceci dans la console

slim anvil
#

show me ton code loupYTB

cyan iron
#

Bon je vais attendre que t'ai terminé avec @keen narwhal 😉

#

Ca va être mieux

slim anvil
#

et en gros wailrone, tu auras un truc semblabe a celà

const mongoose = require('mongoose')

const userSchema = mongoose.Schema({
    _id: mongoose.Schema.Types.ObjectId,
    name: String,
    firstName: String
})

module.exports = mongoose.model('User', userSchema)
keen narwhal
#

J'ai suivis à partir d'un tuto YouTube

#

Stuv je peux vocal

slim anvil
#

Là ou tu veux créer une entrée dans ta bdd, tu import ton model User par exemple, et ensuite tu feras un truc comme ça

/// User = le modele que tu import
const user = new User({
  _id: mongoose.Types.ObjectId(),
  user: message.author.username,
  etc...
})

user.save()
#

par exemple

#

sorry j'étais en call

#

tu as trouvé ton code ou @keen narwhal ? no sorry je opeux pas je suis au taff

keen narwhal
#

Je t'ai envoyer un screen au-deesus

#

sinon je me rappelle plus comment on envois en ligne de type code sur Discord

cyan iron
#

Désolé j'étais parti

#

Je crois avori saisi

#

Mais en fait ce que j'aimerais faire ç'est ça

keen narwhal
#

C'est une première fois que j'utilise Visual Studio, donc voilà

cyan iron
#

Et en gros j'aimerais mettre un tableau
Qui est remplis au fur et à mesure

slim anvil
#

ca change pas grand chose l'éditeur @keen narwhal

#

Là ton erreur vient de events.bind

#

car ton import de events = import....

#

doit etre a null

#

dans ce cas tu te créer une table "Informations" de la maniere dont je t'ai montré

#

et a chaque fois que tu veux add un truc tu le saves en base

#

et ensuite pour get tes informations, tu pourrais faire ça

keen narwhal
#

J'ai pas tout compris

slim anvil
#
User.find(....

@cyan iron pour get tout tes users, bon là toi ce sera informations mais voilà tu saisis le truc

cyan iron
#

Ok je vais voir merci 😄

#

Si je galère je reviens merci

cyan iron
#

@slim anvil c'est bon ce que j'ai fait ?

#

"flm" c'est ce que j'ai créé

#

ensuite y'a encore flm dedans

#

Et là j'importe mes fichiers ?!

slim anvil
#

flm.flm c'est bizarre

#

normalement tu as une collection "flm"

#

et dedans tu auras tes datas

cyan iron
#

Oui

#

C'est ça

#

Mais en fait la bdd s'apelle flm

#

et la collection aussi x)

slim anvil
#

ah ok !

cyan iron
#

Je vais peut être changer

slim anvil
#

donc oui c'est good

cyan iron
#

Ok nice

#

merci beaucoup

cyan iron
#

et en gros wailrone, tu auras un truc semblabe a celà

const mongoose = require('mongoose')

const userSchema = mongoose.Schema({
    _id: mongoose.Schema.Types.ObjectId,
    name: String,
    firstName: String
})

module.exports = mongoose.model('User', userSchema)

@slim anvil Euh du coup je galère (désolé) mais ça je le met où ? dans le index.js ?

#

Là ou tu veux créer une entrée dans ta bdd, tu import ton model User par exemple, et ensuite tu feras un truc comme ça

/// User = le modele que tu import
const user = new User({
  _id: mongoose.Types.ObjectId(),
  user: message.author.username,
  etc...
})

user.save()

Et ça ?

#

Je débute vraiment je suis NUL

#

Je ne sais rien faire x)

#

J'ai ça

#

en fichiers

#

exports.DBCONNECTION = "mongodb://Localhost:27017/discordBOT"et ça dans db.js

slim anvil
#

En gros, sans avoir un truc hyper développé dans sa structure mais fonctionnel dans un premier temps

#

Imaginons que dans ton fichier de commande !addinfo Salut ca va tu veux créer l'information et l'ajouter en base:
Dans le fichier de cette commande tu import mongoose, tu va faire ce truc la:

/// User = le modele que tu import
const user = new User({
  _id: mongoose.Types.ObjectId(),
  user: message.author.username,
  etc...
})

user.save()

en important comme je t'ai dis le model que tu auras crée au préalable

const User = require('./../models/User.js')

et dans le fichier User.js (ton model), tu auras cela:

const mongoose = require('mongoose')

const userSchema = mongoose.Schema({
    _id: mongoose.Schema.Types.ObjectId,
    name: String,
    firstName: String
})

module.exports = mongoose.model('User', userSchema)
cyan iron
#

oui mais moi j'utilise pas plusieurs fichiers j'en utilise qu'un seul ...

#

Ca fait une différence ou pas ?

#

Je vais tenter

slim anvil
#

Non du tout

#

mais crée ton fichier de model a l'extérieur quand meme pour le coup

cyan iron
#

Oui

slim anvil
#

Mais ensuite le reste sera dans ton index.js si tu veux

#

mais pas le model

cyan iron
#

et mon model je le met où dans la base de données via mongodb compass ?

#

@slim anvil J'ai une erruer mais je pense que c'est normal

#

(node:16620) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'ObjectId' of undefined

#

J'ai presque tout saisi à part la dernière partie...

slim anvil
#

tu as bien import mongoose ?

#

dans ton fichier

cyan iron
#

J'ai ça dans User.js

#

et dans mon index.js ça

#

Donc normalement oui

#

Ah et ça au niveau de la commande aussi

#

Mais c'est tout

#

en fait je met quoi dans la base de données

#

@slim anvil Ah je crois avoir compris, je dois mettre le User.js ?

#

c'est pas du .json normalement

slim anvil
#

le const user tu peux le mettre tout en haut aussi comme l'import de mongoose

#

Pourquoi tu uses /utils/mongoose ?

cyan iron
#

jsp j'ai vu ça dans le tuto

slim anvil
#

je comprend pas tu le sors d'ou le mongoose

#

Ah bizarre ça

#

Car tu doup le objectId ne doit pas exister dans ton mongoose que tu import

cyan iron
#

Oui mais en fait dans mon mongoose y'a rien

#

C'est le vide

#

En fait je sais pas quoi mettre

slim anvil
#

ah dans le fichier ily a rien ?

#

du coup fais un const mongoose = require('mongoose')

#

a la place

#

ca devrait etre mieux

cyan iron
#

Bah en fait y'a même pas de fichier

#

Je suis un peu perdu 😅

slim anvil
#

Ah euh chelou ton tuto

cyan iron
#

🤷

slim anvil
#

Quand tu require mongoose

#

tu le require de ton package

#

donc juste require('mongoose')

#

remplace ça deja

cyan iron
#

Dans le index.js ?

slim anvil
#

Oui partout

cyan iron
#

Oui c'est fait

slim anvil
#

Ok, tu as tjrs l'erreur du ObjectID ?

cyan iron
#

je teste

slim anvil
#

tes require se font en haut de page aussi

#

pas en pleins milieu du code

#

je parle pour le const User = ...

cyan iron
#

j'ai des erreurs bêtes je les corrige

#

Pas d'erreur cette fois ci, mais je ne sais pas ce qu'il s'est passé 😅

#

Est -ce que je dois supprimer le fichier mongoose.js

#

Avec ceci dedans

slim anvil
#

Tu as appelé ta commande

#

pour créer le truc ?

cyan iron
#

càd ?

#

En fait j'ai utilisé ma commande -ia

#

QUi fait ceci

#

Masi je n'ai pas de crash

slim anvil
#

et du coup

#

dans compass

#

tu as l'info qui s'est ajouté ?

#

tu devrais avoir une nouvelle collection "User"