#javascript-typescript

1 messages · Page 49 of 1

keen narwhal
crimson fern
#

j'ai compris

#

met cet url

keen narwhal
#

Et ça devrait marché ?

crimson fern
#

Ca va t'envoyer un object dans ta console

keen narwhal
crimson fern
#

Faut trouver le bon lien maintenant

#

Je vais devoir y aller bonne chance

#

Si tu n'y arrives toujours pas, je reviendrai demain

keen narwhal
#

Okay a+ et a demain surement :3

red snow
#

Je peux ptet t'aider mais je connais pas super agent 😅

keen narwhal
#

( trop con pour comprendre ce que je dois faire :3 )

#

On peut essayé :3

red snow
#

Il faut mettre list et la recherche du joueur non ?

#

Genre "blablabla/search/list/${recherche}

#

Et tu remplace recherche par l'argument du joueur

keen narwhal
#

Bah en gros je veux que lorsque le joueur fait example a!search Nature de Chakra bah ça envoit un lien naruto.fandom

#

Avec au bout la recherche du joueur

red snow
#

A

#

Je vais voir l'api de superagent et Fandom j'arrive

keen narwhal
#

Oki :3

red snow
#

Oof laisse tomber

#

Je peux pas lire une Api comme ça moi OwO

keen narwhal
#

Tu veux un screen sur pc ?

red snow
#

Vsy

keen narwhal
#

Tu as seulement à me dire ce que tu cherche et je te prend un screen

#

Envoit le lien du coup :3

red snow
#

Ah

#

Je sais pas ce Je cherche justement

keen narwhal
#

Merde ;-; ( Envoit le lien de la page de base :3 )

red snow
keen narwhal
red snow
#

Vsy tu feras ça avec Samuel demain mdrr, la je suis claque

keen narwhal
#

Oki bah va dormir :3

floral bolt
#

@keen narwhal tu cherche a faire quoi ?

keen narwhal
#

Faire en sorte que lorsque je fais a!search ( La recherche ) bah sa nous redirige vers la page ( fandom ) du site ... un peu comme le wiki glua

floral bolt
keen narwhal
#

?

floral bolt
#

bah tu as la liste des api

keen narwhal
#

Oui, mais je ne sais pas comment faire ce que je veux ;-;

floral bolt
#

et ca renvois plusieurs resultats

#

query=test

keen narwhal
#

Met du coup query serait égal à x et x est égal à args 1 ?

#

Comme j’ai fais pour mon embed

keen narwhal
#

J'ai fait une commande qui demandait certaine permission, mais lorsque j'essaie la commande ça me met une error dans la console...

if(!message.guild.member(message.author).hasPermission("MENAGE_MESSAGES")) return message.channel.send("***`Si je te dis que j'ai la flemme tu me crois ?`***");

Pourtant j'ai cette erreur (node:5552) UnhandledPromiseRejectionWarning: RangeError [BITFIELD_INVALID]: Invalid bitfield flag or number.

#

Je viens de trouvé, j'avais fait une faute dans Manage, j'avais mis Menage

oak turret
#

oui voilà xD

keen narwhal
#

:3

oak turret
#

vrai flemmard ton bot dis donc mdrr

keen narwhal
#

xDDD

crimson fern
#

d'ailleurs, tu devrais faire

    if(!message.guild.me.hasPermission("MANAGE_MESSAGES")) return message.channel.send("***`Si je te dis que j'ai la flemme tu me crois ?`***");
keen narwhal
#

Ouais, je verrais. Merci :3

#

Dit moi quand tu es dispo pour m'aide Samuel :3

keen narwhal
slim anvil
#

tu vas boucler sur tes résultats, et chaque tour de boucle = un .addField()

keen narwhal
#

Ouais, mais il va falloir déjà que je réussis à utiliser l'API :3

slim anvil
#

bah tu dois fetch sur l'url indiqué

oak turret
#

addField avec un inline: true

plain crystal
#

Y'a une api pour le wiki gmod ?

oak turret
#

pour les bots discord ?

plain crystal
#

yes ou autre

crimson fern
#

Quel wiki ?

fringe wyvern
#
#

lui

oak turret
#

Par contre comment on exploite les callbacks de gameserver-query genre le nom du serveur etc ?

hazy mirage
#

tu parle bien de ça ?

oak turret
#

ye

#

p

#

j'ai bien toutes mes infos, mais je les récup comment, genre récup le nom etc

#

state c'est global

hazy mirage
#

Si c'est le cas, suis cet exemple: JS var query = require('game-server-query'); query( { type: 'minecraft', host: 'mc.example.com' }, function(state) { if(state.error){ console.log("Server is offline"); } else { console.log(state); // ça te mettra dans la console le tableau avec toutes les infos, et donc ce sera sous ce format là: a = "coucou" je crois } } );

#

et donc tu auras juste à faire state.valeur

oak turret
hazy mirage
#

et ça te retournera la valeur a droite

#

quel est le code/qu'est-ce qui est affiché dans la console ?

oak turret
#

yep

#

dans la console ça fonctionne

#

et pour les call dans une const je fais quoi ?

#

j'ai trouvé je crois bien xD

cedar cloud
#

Hey j'ai un problème avec un event qqun peut m'aider ?

#
        updateStatus(member.guild);
                            ^

TypeError: Cannot read property 'guild' of undefined
    at Client.<anonymous> (/home/pi/Desktop/JeanMarc/events/counter.js:18:29)
    at Client.emit (events.js:315:20)
    at PresenceUpdateAction.handle (/home/pi/Desktop/JeanMarc/node_modules/discord.js/src/client/actions/PresenceUpdate.js:39:19)
    at Object.module.exports [as PRESENCE_UPDATE] (/home/pi/Desktop/JeanMarc/node_modules/discord.js/src/client/websocket/handlers/PRESENCE_UPDATE.js:4:33)
    at WebSocketManager.handlePacket (/home/pi/Desktop/JeanMarc/node_modules/discord.js/src/client/websocket/WebSocketManager.js:386:31)
    at WebSocketShard.onPacket (/home/pi/Desktop/JeanMarc/node_modules/discord.js/src/client/websocket/WebSocketShard.js:436:22)
    at WebSocketShard.onMessage (/home/pi/Desktop/JeanMarc/node_modules/discord.js/src/client/websocket/WebSocketShard.js:293:10)
    at WebSocket.onMessage (/home/pi/Desktop/JeanMarc/node_modules/ws/lib/event-target.js:125:16)
    at WebSocket.emit (events.js:315:20)
    at Receiver.receiverOnMessage (/home/pi/Desktop/JeanMarc/node_modules/ws/lib/websocket.js:800:20)
    at Receiver.emit (events.js:315:20)
    at Receiver.dataMessage (/home/pi/Desktop/JeanMarc/node_modules/ws/lib/receiver.js:436:14)
    at Receiver.getData (/home/pi/Desktop/JeanMarc/node_modules/ws/lib/receiver.js:366:17)
    at Receiver.startLoop (/home/pi/Desktop/JeanMarc/node_modules/ws/lib/receiver.js:142:22)
    at Receiver._write (/home/pi/Desktop/JeanMarc/node_modules/ws/lib/receiver.js:77:10)
    at doWrite (_stream_writable.js:403:12)
#
module.exports = (client) => {
    const channelOn = "714507595871813642";
    const channelOff = "714507663987179651";
    const bots = "9";

    client.on("guildMemberAdd", function (member) {
        updateStatus(member.guild);
        updateStatus1(member.guild);
        
    })
    
    client.on("guildMemberRemove", function (member) {
        updateStatus(member.guild);
        updateStatus1(member.guild);
    })
    
    client.on("presenceUpdate", function (member) {
        updateStatus(member.guild);
        updateStatus1(member.guild);
    })
    
    function updateStatus(guild){
        let max = guild.memberCount-bots;
        let online = guild.members.cache.filter(m => m.presence.status != "offline").size-bots;
        let formatString = ":heartbeat: En ligne : " + online + "/" + max ;
        let channel = guild.channels.cache.get(channelOn);
        if(channel.name !== formatString){
            channel.setName(formatString);
        }
    }
    function updateStatus1(guild){
        let max = guild.memberCount-bots;
        let online = guild.members.cache.filter(m => m.presence.status != "offline").size-bots;
        let offline = max-online;
        let formatStringoff = ":zzz: Hors ligne : " + offline + "/" + max ;
        let channel = guild.channels.cache.get(channelOff);
        if(channel.name !== formatStringoff){
            channel.setName(formatStringoff);
        }
    }
  }```
oak turret
#

Hello, j'use gameserver-query, et pour show le nombre de joueurs co j'use : state.players mais je veux avoir le nombre donc j'ai pensé à un .size vu que c'est un array mais ça me met undefined des idées ?

#

code :

              const players = state.players.size;
crimson fern
#

.length

#

au lieu du size

oak turret
#

oo merci Samuel ^^

oak turret
#

Bonsoir, comment pourrais-je faire pour faire un \n dans mon tableau à chaque nouvelle valeur, en gros je vous montre mon code vous allez comprendre

#
        const admin = ["Michael Wood", "Nom du staff", "Nom du staff"];
        .addFields(
                {name: `Administrateur(s) [${admin.length}]`, value: `${admin}`, inline: false},
            )

J'ai pris que les lignes concernées, et j'aimerais qu'à chaque nom de staff ça \n mais je vois pas comment

#

Je fais une boucle, ou je fais juste un "\n" après chaque nom dans mon array

red snow
#

Ui

#

Tu fais ce que t'as dis

oak turret
#

Lequel ?

#

La boucle je sais pas quoi mettre dedans

red snow
#

Je fais une boucle, ou je fais juste un "\n" après chaque nom dans mon array

#

A

oak turret
#

le \n du coup me rajoute une valeur dedans du coup et ça rends pas bon mon array à la fin

#

fin pas le bon compte

red snow
#

Tu fais tonArray.forEach(trucMsg => {
Truc truc.send("\n" + trucMsg)
})

#

Je crois que ça marche

oak turret
#

je le mets à quel niveau ça du coup ?

#

et trucMsg etTruc truc je mets quoi xD ?

red snow
#

Mmh ça dépend tu veux le mettre ou ?

#

Dans un embed ?

oak turret
#

yep

#

dans la value de mon field

red snow
#

Aaaah OK

#

For(int i; i < array.length; i++) {
Embed.addfield("Adinistrateur", array[i])
})

#

Ça ça va t'ajouter un field pour chaque admin

#

Cest ça que tu veux ?

oak turret
#

alors pas une field mais une value dans ma field

red snow
#

A :smart: on va y arriver

#

Du coup

oak turret
#

xDDD

red snow
#

Tu fais un field avec ("Admins", tonArray.join("\n"))

#

Ca marche de base mais dans un embed jsp

oak turret
#

j'ai pas bien capté là

#

ahhh

#

euh

red snow
#

.addField("Admin", tonArray.join("\n"))

oak turret
#

en value ?

red snow
#

Jsp si ça marche dans un embed

#

Oui

#

En gros a chaques arguments de ton array ça va rajouter \n

oak turret
#

yep j'ai compris, si simpliste j'avais oublié ce genre de truc, au lieu de me cassé la tête ! Merci Burger !

red snow
#

Pas de soucis :)

keen narwhal
#

Quelqu'un peut me dire comment faire en sorte que dans un salon si la commande n'est pas détecté Bah le bot supprime le message de l'user ?

red snow
#

Tu fais ton évent message

#

Et tu fais que si message.content n'est pas ega' (ou ne commence pas par) ta commande

#

Message.delete()

keen narwhal
#

Merci

#

🙂

red snow
#

guild.members.blabla n'est pas définit

#

Cedt normal

#

Tu ne l'as pas définis

cedar cloud
#

oui mais je n'arrive pas a le définir

red snow
#

Tu vas sur la doc

cedar cloud
#

mais j'y suis de 4h

red snow
#

Et tu regarde les attributs de l'objet qui ressors de guildMemberAdd

#

Donc de member je crois

#

Et tu verras que c'est member.guild

#

Et non guild

cedar cloud
#

sauf que j'ai mit member.guild

red snow
#

Pas dans le code que tu as envoyé

cedar cloud
#

si

red snow
#

Non

cedar cloud
#

bah montre moi ou ?

red snow
#

A non excuse, j'avais pas vu les fonctions

cedar cloud
#

dcp je suis tjrs bloqué

red snow
#

Je crois que c'est juste que le guildMemberRemove ne renvoie pas le même objet que le add

#

Je vais voir

cedar cloud
#

bah il a tjr marché en 11

red snow
#

Ouais fu coup

#

Au lieu de member, tu mets (member, guild)

#

Et au lieu d'envoyer member.guild, t'envoie guild

cedar cloud
#

??

#

je met juste guild ?

red snow
#

Non

#

Tu vois la ou tu définis member

cedar cloud
#

oui

red snow
#

Au lieu de (member), tu mets (member, guild)

crimson fern
#

Quel event ?

cedar cloud
#
    client.on("guildMemberAdd", function (member, guild) {
        updateStatus(member.guild);
        updateStatus1(member.guild);
        
    })
    
    client.on("guildMemberRemove", function (member, guild) {
        updateStatus(member.guild);
        updateStatus1(member.guild);
    })
    
    client.on("presenceUpdate", function (member, guild) {
        updateStatus(member.guild);
        updateStatus1(member.guild);
    })
red snow
#

Parce que le deuxième paramètre de guildMemberRemove est la guilde je crois

#

Ouais comme ça

crimson fern
#

Si vous parlez de guildMemberAdd, y'as qu'un paramètres, member

#

pareil pour le remove

#

et ca c'est pour le presence update

red snow
#

Il prend aussi la guild

cedar cloud
#

le truc c que ca marche 10 minute et après le bot crash

crimson fern
#

euh, pas le guildMemberAdd

red snow
#

Le remove

#

Je crois

crimson fern
red snow
#

Il est sur la 12

crimson fern
#

ah

cedar cloud
#

bah la ca marche je vous dit demain si le bot a crash a cause de ca

crimson fern
red snow
#

S'il crash ya in problème OwO

crimson fern
#

met tes fonctions avant tes events @cedar cloud

cedar cloud
#

ok

crimson fern
#
        let max = guild.memberCount-bots;
```y'as un problème ![thinking_hard](https://cdn.discordapp.com/emojis/646063559284883456.webp?size=128 "thinking_hard")
cedar cloud
#

Bonne nuit a tous je vous tien au courant

crimson fern
#

-bots existe pas

cedar cloud
#

c ma variables

#

tt en haut

crimson fern
#

ca ressemble à quoi ?

#

ah oui

#

mais y'as quand même un problème

cedar cloud
#

const bots = "9";

crimson fern
#

bots doit être un number et pas un string

#

car memberCount te return un number

keen narwhal
#

Pq des fois j'ai des err comme ça ?

red snow
#

Envoie l'erreur entière

cedar cloud
#

ouai sinon tu connait pas comment je peu faire pour récup le nombre de bot sur le serveur ?

red snow
#

Je sais pas s'il ya plus opti, mais tu fais une boucle de tous les membres

crimson fern
#

tu utilises quoi ?

red snow
#

Et il ya un bool discord js qui vérifie si c'est jn bot

keen narwhal
#

La vie je suis trizo sorry

#

^^

cedar cloud
#

a ca y est le bot vien de crash

red snow
#

Donc !blabla.bot return
Blabla.bot i++;

#

En gros

#

Erreur ?

cedar cloud
#
/home/pi/Desktop/JeanMarc/events/counter.js:38
        updateStatus(member.guild);
                            ^

TypeError: Cannot read property 'guild' of undefined
    at Client.<anonymous> (/home/pi/Desktop/JeanMarc/events/counter.js:38:29)
    at Client.emit (events.js:315:20)
    at PresenceUpdateAction.handle (/home/pi/Desktop/JeanMarc/node_modules/discord.js/src/client/actions/PresenceUpdate.js:39:19)
    at Object.module.exports [as PRESENCE_UPDATE] (/home/pi/Desktop/JeanMarc/node_modules/discord.js/src/client/websocket/handlers/PRESENCE_UPDATE.js:4:33)
    at WebSocketManager.handlePacket (/home/pi/Desktop/JeanMarc/node_modules/discord.js/src/client/websocket/WebSocketManager.js:386:31)
    at WebSocketShard.onPacket (/home/pi/Desktop/JeanMarc/node_modules/discord.js/src/client/websocket/WebSocketShard.js:436:22)
    at WebSocketShard.onMessage (/home/pi/Desktop/JeanMarc/node_modules/discord.js/src/client/websocket/WebSocketShard.js:293:10)
    at WebSocket.onMessage (/home/pi/Desktop/JeanMarc/node_modules/ws/lib/event-target.js:125:16)
    at WebSocket.emit (events.js:315:20)
    at Receiver.receiverOnMessage (/home/pi/Desktop/JeanMarc/node_modules/ws/lib/websocket.js:800:20)
    at Receiver.emit (events.js:315:20)
    at Receiver.dataMessage (/home/pi/Desktop/JeanMarc/node_modules/ws/lib/receiver.js:436:14)
    at Receiver.getData (/home/pi/Desktop/JeanMarc/node_modules/ws/lib/receiver.js:366:17)
    at Receiver.startLoop (/home/pi/Desktop/JeanMarc/node_modules/ws/lib/receiver.js:142:22)
    at Receiver._write (/home/pi/Desktop/JeanMarc/node_modules/ws/lib/receiver.js:77:10)
    at doWrite (_stream_writable.js:403:12)

crimson fern
#

ca vient du presenceUpdate je suppose

red snow
#

T'as pas modifié

crimson fern
red snow
#

A non j'ai rien dis

crimson fern
#

simplement car ce que tu utilises n'existe pas

#

regarde mon lien

#

et regarde les parameters

#

il y en a deux et les deux sont des presences

red snow
#

Trop fast ce Samuel

crimson fern
cedar cloud
#

je comprend rien au truc old et new

crimson fern
#

et là, les deux te renvoie vers ca

#

old = ancienne "presence"
new = nouvelle "presence"

cedar cloud
#

oui mais je comprend pas comment les integré au code

crimson fern
#

https://discord.js.org/#/docs/main/stable/class/Presence
@crimson fern avec ca tu peux faire un <Presence>.member.guild

#

qui revient à la guild

#

tu renames juste tes variables, car là elles s'appellent member et guild

#

sauf que ca a aucun rapport

cedar cloud
#

genre dans mon cas faut que je fasse quoi ?

crimson fern
#

Je vais pas te donné le code kappa

#

avec ca tu peux faire un <Presence>.member.guild

cedar cloud
#

ca change quoi si je met old ou new ?

crimson fern
#

rien

#

car toi tu veux juste la guild

cedar cloud
#

old.member.guild

#

ca ca marche ?

crimson fern
#

montre moi ton code

#

modifié

#

ca va me permettre de check si y'as 0 soucis 🙂

cedar cloud
#
module.exports = (client) => {
    const channelOn = "714507595871813642";
    const channelOff = "714507663987179651";
    const bots = "9";

    function updateStatus(guild){
        let max = guild.memberCount-bots;
        let online = guild.members.cache.filter(m => m.presence.status != "offline").size-bots;
        let formatString = ":heartbeat: En ligne : " + online + "/" + max ;
        let channel = guild.channels.cache.get(channelOn);
        if(channel.name !== formatString){
            channel.setName(formatString);
        }
    }
    function updateStatus1(guild){
        let max = guild.memberCount-bots;
        let online = guild.members.cache.filter(m => m.presence.status != "offline").size-bots;
        let offline = max-online;
        let formatStringoff = ":zzz: Hors ligne : " + offline + "/" + max ;
        let channel = guild.channels.cache.get(channelOff);
        if(channel.name !== formatStringoff){
            channel.setName(formatStringoff);
        }
    }

    client.on("guildMemberAdd", function (member) {
        updateStatus(old.member.guild);
        updateStatus1(old.member.guild);
        
    })
    
    client.on("guildMemberRemove", function (member) {
        updateStatus(old.member.guild);
        updateStatus1(old.member.guild);
    })
    
    client.on("presenceUpdate", function (member) {
        updateStatus(old.member.guild);
        updateStatus1(old.member.guild);
    })
    

}

crimson fern
#

t'as fonction de presenceUpdate

cedar cloud
#

oui

crimson fern
#

regarde, tu définis member

cedar cloud
#

oui

crimson fern
#

mais comme je t'ai dit, y'as deux paramètres

cedar cloud
#

ouai

crimson fern
#

j'ai rien

#

et tu utilises old alors que tu le définis pas

#

donc remplace member par old

cedar cloud
#

ok

crimson fern
#

seulement dans presenceUpdate

cedar cloud
#

ok

#
module.exports = (client) => {
    const channelOn = "714507595871813642";
    const channelOff = "714507663987179651";
    const bots = "9";

    function updateStatus(guild){
        let max = guild.memberCount-bots;
        let online = guild.members.cache.filter(m => m.presence.status != "offline").size-bots;
        let formatString = "💓 En ligne : " + online + "/" + max ;
        let channel = guild.channels.cache.get(channelOn);
        if(channel.name !== formatString){
            channel.setName(formatString);
        }
    }
    function updateStatus1(guild){
        let max = guild.memberCount-bots;
        let online = guild.members.cache.filter(m => m.presence.status != "offline").size-bots;
        let offline = max-online;
        let formatStringoff = "💤 Hors ligne : " + offline + "/" + max ;
        let channel = guild.channels.cache.get(channelOff);
        if(channel.name !== formatStringoff){
            channel.setName(formatStringoff);
        }
    }

    client.on("guildMemberAdd", function (member) {
        updateStatus(member.guild);
        updateStatus1(member.guild);
        
    })
    
    client.on("guildMemberRemove", function (member) {
        updateStatus(member.guild);
        updateStatus1(member.guild);
    })
    
    client.on("presenceUpdate", function (old) {
        updateStatus(old.member.guild);
        updateStatus1(old.member.guild);
    })
    
    
  }
crimson fern
#

yep

#

ah non

#

ta const bots

#

j't'ai dit que tu devais mettre un number et pas un string

#
cedar cloud
#

genre un var ca marche ?

crimson fern
#

Ca change rien

cedar cloud
#

a

crimson fern
#

regarde les liens

#

et n'utilise jamais var 😉

cedar cloud
#

const bots = new Number("9");

#

c bon ?

crimson fern
#

Nop

#

fait direct :

const bots = 9;
cedar cloud
#

a ok

#

bah je v me coucher je te dirai si ca a crash et mrc

crimson fern
#

Normalement ca va plus crash

oak turret
#

Bonsoir, je reviens vers vous, car mon bot hébergé ne trouve plus mon module game-server-query :x et je ne comprends pas pourquoi

#

2020-05-27T21:19:40.003616+00:00 app[worker.1]: (node:4) UnhandledPromiseRejectionWarning: Error: Cannot find module 'game-server-query'

red snow
#

T'as npm i?

oak turret
#

sur heroku ?

red snow
#

Ui

oak turret
#

dans quoi ?xD

red snow
#

Bah jsp quand t'héberger tu npm i tes modules ?

oak turret
#

faut que je le refasse ?

crimson fern
#

essaye de le refaire

red snow
#

Pour le server query

oak turret
#

je le refais

#

ah peut-être ouais

crimson fern
#

Ok, essaye de faire npm i --save game-server-query

oak turret
#

attend je build et je test

#

Ok maintenant je saurais qu'il faut npm i une fois hébergé

crimson fern
#

essaye de save tous tes modules

#

je crois que sur heroku, ca les auto-download

oak turret
#

yep je npm i discord.js car il me mettait undefined client

#

et je test

#

je build je vous dis ça

#

maintenant il trouve plus mon client xD

#

je re build en ayant save les modules

#

(en ayant git add . et commit ^^)

crimson fern
#

a l'époque ou j'utilisais heroku, je faisais déjà tout le temps des --save

oak turret
#

ah :x

#

2020-05-27T21:27:44.032485+00:00 app[worker.1]: TypeError: Cannot read property 'client' of undefined

crimson fern
#

et j'ai jamais eu 0 problèmes

slim anvil
#

Plus besoin de —save aujourd’hui

crimson fern
#

ca s'auto save ?

slim anvil
#

oui depuis les nouvelles versions

crimson fern
#

2020-05-27T21:27:44.032485+00:00 app[worker.1]: TypeError: Cannot read property 'client' of undefined
@oak turret envoie ton Discord.Client()

slim anvil
#

le npm i le fait

oak turret
#

const client = new Discord.Client();

crimson fern
#

et ton discord ?

oak turret
#

const Discord = require('discord.js');

crimson fern
#

ca doit être une autre ligne

oak turret
#

je peux envoyer mon code en txt ^^ ?

crimson fern
#

t'as la ligne de l'erreur ?

oak turret
#

nop j'ai que ça

#

2020-05-27T21:27:37.200899+00:00 app[worker.1]: Le bot a démarré, avec 49 utilisateurs dans 3 serveurs.
2020-05-27T21:27:44.032447+00:00 app[worker.1]: /app/node_modules/discord.js/src/structures/MessageEmbed.js:13
2020-05-27T21:27:44.032483+00:00 app[worker.1]: Object.defineProperty(this, 'client', { value: message.client });
2020-05-27T21:27:44.032484+00:00 app[worker.1]: ^
2020-05-27T21:27:44.032485+00:00 app[worker.1]:
2020-05-27T21:27:44.032485+00:00 app[worker.1]: TypeError: Cannot read property 'client' of undefined
2020-05-27T21:27:44.032486+00:00 app[worker.1]: at new MessageEmbed (/app/node_modules/discord.js/src/structures/MessageEmbed.js:13:60)
2020-05-27T21:27:44.032486+00:00 app[worker.1]: at Object.callback (/app/index.js:34:27)
2020-05-27T21:27:44.032487+00:00 app[worker.1]: at ExtendedObject.done (/app/node_modules/game-server-query/lib/protocol.js:78:42)
2020-05-27T21:27:44.032487+00:00 app[worker.1]: at ExtendedObject.fatal (/app/node_modules/game-server-query/lib/protocol.js:38:8)
2020-05-27T21:27:44.032487+00:00 app[worker.1]: at Timeout.<anonymous> (/app/node_modules/game-server-query/lib/protocol.js:288:22)
2020-05-27T21:27:44.032487+00:00 app[worker.1]: at listOnTimeout (internal/timers.js:549:17)
2020-05-27T21:27:44.032488+00:00 app[worker.1]: at processTimers (internal/timers.js:492:7)
2020-05-27T21:27:44.070782+00:00 heroku[worker.1]: Process exited with status 1
2020-05-27T21:27:44.107131+00:00 heroku[worker.1]: State changed from up to crashed

crimson fern
#

ligne 34 de ton index ?

oak turret
#

const err = new Discord.MessageEmbed()

crimson fern
#

montre ton embed

oak turret
#
 if (command === "status") {
        query(
            {
                type: 'garrysmod',
                host: 'host',
                port: port
            },
            function(state) {
                if(state.error){
              const err = new Discord.MessageEmbed()
                    .setColor("#CB0000")
                    .addFields(
                        {name: 'État du serveur', value: 'Le serveur est actuellement éteint, vous ne pouvez donc pas voir les données.', inline: true},
                    );
                    message.channel.send(err);
            }
                else {
              const map = state.map;
              const players = state.players.length + state.bots.length;
              const name = state.name;
              const bots = state.bots.length;
              const maxplayers = state.maxplayers;
              const notes = state.notes;
              const Embed = new Discord.MessageEmbed() 
                    .setColor('#f05a29')
                    .addFields(
                        {name: 'Nom du serveur', value: `${name}`, inline: false},
                        {name: 'Carte', value: `${map}`, inline: false},
                        {name: 'Joueurs connectés', value: `${players}/${maxplayers}`, inline: false},
                        
                    );
                    message.channel.send(Embed);

            }
#

ça marchait en local ^^

crimson fern
#

hum

#
                host: 'host',
```faut pas mettre l'host ici ?
oak turret
#

si ^^ il y est dans mon code ^^

#

le port aussi

crimson fern
#

ok

#

Ah

#

Apres le dernier de tes objects pour les addFields

#

tu mets une virgule

#

essaye de la supprimer

oak turret
#

ah oui ! je build et je te dis ça

#

pareil :x

crimson fern
#

C'est bizarre

oak turret
#

trop :x

#

Il mets pas à jour je crois bien

#

j'ai changé client par bot

#

il s'en fou :x

#

j'ai trouvé

#

remove et npm i

#

et ça fonctionne

crimson fern
#

Ok

oak turret
#

Merci Samuel ^^

crimson fern
#

Désolé, j'avais pas eu l'idée :)

oak turret
#

pas de soucis ! Maintenant on l'aura ^^

#

c'est en faisant des erreurs qu'on apprend comme on dit ^^

crimson fern
#

Oui myman

oak turret
#

Dites moi je trouve pas comment delete un embed avec un timer de 60 000ms (message.delete()) ne fonctionne pas, c'est pas possible ?

#

(node:4) UnhandledPromiseRejectionWarning: TypeError [INVALID_TYPE]: Supplied options is not an object.

Et je trouve nul part quelqu'un qui supprime un embed xD

red snow
#

Message c'est quoi ?

#

C'est dans un event ?

oak turret
#

dans mon embed

red snow
#

?

oak turret
#

message c'est une classe

#

qui a l'attribut delete

#

mais ça marche pour un message mais pas pour un embed

red snow
#

Oui mais où est le message, il est définit par quoi ?

oak turret
#

et je vois personne qui l'a fait

#

dans le client.on perso

red snow
#

Et cest quel event ?

oak turret
#

bah delete

#

event delete de la classe message quoi xd

red snow
#

Na mais, client.on('ici'

oak turret
#

client.on("message"

red snow
#

Donc quand un message est posté tu veux delete un embed ?

oak turret
#

yep

red snow
#

Bah

#

Comment ça ce fait que ton message veut pas se delete

#

Normalement tu peux tout delete

oak turret
#

je mets lenomdemonembed.delete(60000);

#

et ça me dit

#

(node:4) UnhandledPromiseRejectionWarning: TypeError: help_embed.delete is not a function

red snow
#

Aaa mais c'est normal

#

Le nom de lembed.delete normal que ça marche pas par contre

#

Mais pour le is invalid truc object

#

C'est parce qu'au lieu de mettre message.delete(60) il faut mettre message.delete({timeout: 60})

oak turret
#

ahhh je vais tester

#

c'est en ms on est d'accord ?

crimson fern
#

60000*

#

pas 60 du coup

red snow
#

Oui enfin ton chiffre quoi

oak turret
#

ouais 60000 j'attends là xD

#

2020-05-27T22:31:22.937573+00:00 app[worker.1]: (node:4) UnhandledPromiseRejectionWarning: DiscordAPIError: Unknown Message

red snow
#

Uh

oak turret
#

message.delete({timeout: 60000});

#

comme ça ?

red snow
#

T'as du suppr ton message

#

Avant

oak turret
#
 if ( command === "help") {
        message.delete();
        const help_embed = new Discord.MessageEmbed()
        .setColor("#E5AD00")
        .setAuthor("SunCoast", "https://cdn.discordapp.com/attachments/715251504281419836/715256937083568218/suncoast_logo.png")
        .addFields(
            {name: '.staff', value: 'Permet de voir tous les staffs du serveur', inline: true},
            {name: '.forum', value: 'Permet d\'avoir le lien du forum', inline: true},
            {name: '.addons', value: 'Permet d\'avoir le lien du workshop', inline: true},
            {name: '.boutique', value: 'Permet d\'avoir le lien de la boutique', inline: true},
            {name: '.help', value: 'Permet de voir toutes les commandes du bot', inline: true},
            {name: '.status', value: 'Permet de voir en temps réel les informations du serveur Garry\'s Mod', inline: true}
        )
         message.channel.send(help_embed);
         message.delete({timeout: 60000});
}
crimson fern
#

Attend tu veux delete ta réponse ?

oak turret
#

oui je suppr le message avant

#

yep l'embed après 60s

crimson fern
#

fait un .then de message.channel.send

red snow
#

A mais normal que ça marche pas la

crimson fern
#

que tu nommes m par exemple et tu fais m.delete

red snow
#

Tu delete le message et tu le redelete

oak turret
#

Comme ça c'est good ?

#

message.channel.send(help_embed).then(message.delete({timeout: 60000}));

crimson fern
#

Nop

#

message.channel.send(help_embed).then(msg => msg.delete({timeout: 60000}))

oak turret
#

je test ^^

#

Nickel merci ^^

crimson fern
#

Avec plaisir yeah

cedar cloud
#

@crimson fern le bot a crash

crimson fern
#

🤔

#

montre moi l'erreur @cedar cloud

cedar cloud
#

ok @crimson fern

#
/home/pi/Desktop/JeanMarc/events/counter.js:38
        updateStatus(old.member.guild);
                         ^

TypeError: Cannot read property 'member' of undefined
    at Client.<anonymous> (/home/pi/Desktop/JeanMarc/events/counter.js:38:26)
    at Client.emit (events.js:315:20)
    at PresenceUpdateAction.handle (/home/pi/Desktop/JeanMarc/node_modules/discord.js/src/client/actions/PresenceUpdate.js:39:19)
    at Object.module.exports [as PRESENCE_UPDATE] (/home/pi/Desktop/JeanMarc/node_modules/discord.js/src/client/websocket/handlers/PRESENCE_UPDATE.js:4:33)
    at WebSocketManager.handlePacket (/home/pi/Desktop/JeanMarc/node_modules/discord.js/src/client/websocket/WebSocketManager.js:386:31)
    at WebSocketShard.onPacket (/home/pi/Desktop/JeanMarc/node_modules/discord.js/src/client/websocket/WebSocketShard.js:436:22)
    at WebSocketShard.onMessage (/home/pi/Desktop/JeanMarc/node_modules/discord.js/src/client/websocket/WebSocketShard.js:293:10)
    at WebSocket.onMessage (/home/pi/Desktop/JeanMarc/node_modules/ws/lib/event-target.js:125:16)
    at WebSocket.emit (events.js:315:20)
    at Receiver.receiverOnMessage (/home/pi/Desktop/JeanMarc/node_modules/ws/lib/websocket.js:800:20)
    at Receiver.emit (events.js:315:20)
    at Receiver.dataMessage (/home/pi/Desktop/JeanMarc/node_modules/ws/lib/receiver.js:436:14)
    at Receiver.getData (/home/pi/Desktop/JeanMarc/node_modules/ws/lib/receiver.js:366:17)
    at Receiver.startLoop (/home/pi/Desktop/JeanMarc/node_modules/ws/lib/receiver.js:142:22)
    at Receiver._write (/home/pi/Desktop/JeanMarc/node_modules/ws/lib/receiver.js:77:10)
    at doWrite (_stream_writable.js:403:12)

Oui mon bot s"apelle jean marc ^^

keen narwhal
#

Montre ton index.js

#

Et ton code

#

Old.member.guild n’existe pas... si j’ai bien cherché

#

Essaie plutôt GuildMember.old

#

@cedar cloud

#

Surtout pourquoi tu veux utiliser old ?

#

Il est censé faire quoi ton .old ?

hazy mirage
#

l'a t-il déclaré déjà

crimson fern
#

Il est normalement déclaré

keen narwhal
#

Peut-être mais il doit avoir quelque chose de définis avec son .old...

#

Si il n’y a pas c’est normal que ça ne marche pas...

#

Et comment il a formuler ça phrase aussi

#

Si j’étais lui j’essayerais (GuildMember.old);

hazy mirage
keen narwhal
#

Il faudrait voir son code...

hazy mirage
#

oui c'est clair

oak turret
#

Hello, je gère l'event messageUpdate pour check dès qu'un client édite un message, mais je n'arrive pas à choper l'old message (comme dans le doc) ils mettent un old & updated mais je ne sais pas comment les appelés, vous pouvez m'help merci ^^

#
client.on("messageUpdate", async message => {
    message.channel.send(`${message.author} a édité le message **${message.old}** en **${message.update}**`);
});

J'ai juste test mais ça me met undefined ce qui est normal ^^

keen narwhal
#

oldMessage

#

newMessage

slim anvil
#
client.on("messageUpdate", async (old, new) => {
#

euh l'appelle pas new my bad

#

interdit

#

mais tu as saisis le truc

oak turret
#

Il le veut pas le new

#

mais dans la doc c'est comme ça fin j'ai look sur ça

#

const { old, updated } = client.actions.MessageUpdate.handle(packet.d);

#
client.on("messageUpdate", async (message, old, updated) => {
    message.channel.send(`${message.author} a édité le message **${message.old}** en **${message.updated}**`);
});

Undefined xD

slim anvil
#

tu uses quelle version

#

Il le veut pas le new
yes j'ai dis juste plus haut ça fait parti des noms interdit

oak turret
#

de discordjs ?

#

6.12.1

slim anvil
#

harold 6 ?

#

tu regardes au bon endroit ?

oak turret
#

bah c'est bien npm --version discord.js ?

#

0.1.5 alors ? xD

slim anvil
#

regarde juste ton package.json

oak turret
#

"version": "0.1.5"

#

0.1.5 ouais du coup xD

slim anvil
#

no impo

#

tu dois etre dans ton package-lock

oak turret
#

bah le /collection ou le form-data ?

#

3.0.1 pour le form-data ou 0.1.5 pour le collection

slim anvil
oak turret
#

j'ai pas eu de package-json qui s'est create xD wtf

#

this c'est bon ?

#

"discord.js": {
"version": "12.2.0",

#

c'est plus cohérent là xD

slim anvil
#

yes

#

tu es en 12 du coup

oak turret
#

yep

slim anvil
#

Mais apr!ès j'ai check l'event est le meme

oak turret
#

chelou

slim anvil
#

ah mais ok pavu

#
client.on("messageUpdate", async (message, old, updated) => {
#

là tu passes 3 params

#

forcément que le 3eme sera undefined

#

c'est

oak turret
#

yep

slim anvil
#
client.on("messageUpdate", async (oldMsg, newMsg) => {
#

je l'ai mis au dessus pourtant 🤔 en disant de changer juste la clé new car elle est inutilisable

oak turret
#

ouais mais du coup mon message.channel veut plus xD

slim anvil
#

bah tu le changes par un newMessage.channel

#

ca revient au même

oak turret
#

faut que je la déclares du coup

slim anvil
#

bah tu l'as déjà

#

c'est les params que tu recois de l'event messageUpdate

#

oldMessage et newMessage

oak turret
#

Nickel merci ^^

#

ça fonctionne

#

Enzo le sauveur quoi

oak turret
#

Hello, je me remet à Enmap pour compter xD, et mon code semble marché mais il ne s'envoie pas, j'ai repéré à quelle ligne il y a un soucis, mais je ne vois pas pourquoi (j'ai console.log "ok" après la ligne en question pour voir si il passait mais il ne passe pas)

J'ai repris le code que m'avais fais Samuel pour les tickets et modif "tickets" en "warns" et "ticket" en "warn"

 if(!db.get(`user.${message.author.id}.warn`)) return db.ensure(`user.${message.author.id}.warn`, 0);
cedar cloud
keen narwhal
#

@cedar cloud Tu as essayé ce qu'on ta dit

#

?

cedar cloud
#

je vien de rentré je vais tester

crimson fern
#

@oak turret t'as ligne est bonne, ca doit être autre chose

keen narwhal
oak turret
#

@crimson fern ```js
if (command === "warn" ) {
const db = new Enmap({name: "warns"});
const warn = db.get(user.${message.author.id}.warn);
console.log(warn);
if(!db.get(user.${message.author.id}.warn)) return db.ensure(user.${message.author.id}.warn, 0);
console.log("ok");
const accused = message.mentions.users.first();
const reason = message.content.split(" ").slice(1).join(" ");
if(!reason || !accused) return message.channel.send("Vous devez mettre un accusé + raison !");
}

Je voulais tester le if juste pour voir mais :x
#

le log warn me met 0 mais le le ok ne passe pas

crimson fern
#

car tu return

#

donc ton code s'arrête

slim anvil
#

bah yes quand tu return tu stop tout

crimson fern
#
        if(!db.get(`user.${message.author.id}.warn`)) { db.ensure(`user.${message.author.id}.warn`, 0) }
oak turret
#

Je le fais tout le temps ça fonctionne :

#

ahh là

slim anvil
#

A la fin c'est normal que ca fonctionne

#

y a plus rien après

#

C'est juste de la relecture de code la qu'il faut faire ^^

oak turret
#

à force de trop chercher je deviens fou lolwhatthink

crimson fern
#

D'ailleurs, enzo, un gros bot public peux me permettre d'être évalué ou il faut plusieurs petits bots ?

slim anvil
#

C'est juste le code qui va te permettre d'être évalué

#

petit ou grand

crimson fern
#

Ah d'accord

slim anvil
#

faut que tu envoies ton bot à @queen ocean

#

Ca va etre en fonction de la propreté du code, des features etc etc

crimson fern
#

Ok

#

J'attendrai la prochaine version alors

red snow
#

Et si l'indentation est pas belle ?

cedar cloud
#

je croit que discord va pas tarder à DECEDER !!!!

/home/pi/Desktop/JeanMarc/events/counter.js:8
        let online = guild.members.cache.filter(m => m.presence.status != "offline").size-bots;
                                   ^

TypeError: Cannot read property 'cache' of undefined
    at updateStatus (/home/pi/Desktop/JeanMarc/events/counter.js:8:36)
    at Client.<anonymous> (/home/pi/Desktop/JeanMarc/events/counter.js:38:9)
    at Client.emit (events.js:315:20)
    at PresenceUpdateAction.handle (/home/pi/Desktop/JeanMarc/node_modules/discord.js/src/client/actions/PresenceUpdate.js:39:19)
    at Object.module.exports [as PRESENCE_UPDATE] (/home/pi/Desktop/JeanMarc/node_modules/discord.js/src/client/websocket/handlers/PRESENCE_UPDATE.js:4:33)
    at WebSocketManager.handlePacket (/home/pi/Desktop/JeanMarc/node_modules/discord.js/src/client/websocket/WebSocketManager.js:386:31)
    at WebSocketShard.onPacket (/home/pi/Desktop/JeanMarc/node_modules/discord.js/src/client/websocket/WebSocketShard.js:436:22)
    at WebSocketShard.onMessage (/home/pi/Desktop/JeanMarc/node_modules/discord.js/src/client/websocket/WebSocketShard.js:293:10)
    at WebSocket.onMessage (/home/pi/Desktop/JeanMarc/node_modules/ws/lib/event-target.js:125:16)
    at WebSocket.emit (events.js:315:20)
    at Receiver.receiverOnMessage (/home/pi/Desktop/JeanMarc/node_modules/ws/lib/websocket.js:800:20)
    at Receiver.emit (events.js:315:20)
    at Receiver.dataMessage (/home/pi/Desktop/JeanMarc/node_modules/ws/lib/receiver.js:436:14)
    at Receiver.getData (/home/pi/Desktop/JeanMarc/node_modules/ws/lib/receiver.js:366:17)
    at Receiver.startLoop (/home/pi/Desktop/JeanMarc/node_modules/ws/lib/receiver.js:142:22)
    at Receiver._write (/home/pi/Desktop/JeanMarc/node_modules/ws/lib/receiver.js:77:10)
#

@keen narwhal voila avec les changements

slim anvil
#

@red snow

en fonction de la propreté du code

#

Si il arrive pas à te relire, c'est compliqué

cedar cloud
#

Jpp Discord font des maj il faut rajouter cache et la il me dit qu'il faut l'enlever !!

#

@crimson fern tu c pk ?

oak turret
#

On est d'accord que ça ça ne mentionne pas un user wtf ?

#
        const reason = message.content.split(" ").slice(1).join(" ");
cedar cloud
#

moi ?

crimson fern
#

non

oak turret
#

me ?

crimson fern
#

oui

oak turret
#

yep

#

const args = message.content.slice(config.prefix.length).trim().split(/ +/g);

crimson fern
#

essaye de ca :

const name = args.slice(1).join(" ")```
oak turret
#

ça fonctionne mais maintenant il mets +1 aux warns même si je warn quelqu'un d'autre

crimson fern
#

montre comment tu add le nombre de warn a la db

cedar cloud
#

g t avant mais bon je suis gentil

crimson fern
#

?

cedar cloud
#

bah regarde plus haut

crimson fern
cedar cloud
#

xd j'était la hier soir

#

nn je dec

#

dcp en attendant @oak turret tu peux ptetre m'aider @crimson fern ?

oak turret
#

@crimson fern ```js
db.math(user.${message.author.id}.warn, "+", 1)

#
  • == "add" non ?
crimson fern
#

ah mais tu met l'autheur du message

oak turret
crimson fern
#

oui

#

mais d'ailleurs :

        if(!db.get(`user.${message.author.id}.warn`)) return db.ensure(`user.${message.author.id}.warn`, 0);
#

ici aussi tu t'es trompé

oak turret
#

il a pas l'attribut id accused xD

#

yep j'ai changé

crimson fern
#

t'as une erreur ?

oak turret
#

message.mentions.users.id.first();
Cannot read proprety "first" of undefined

#

en gros je veux chopé l'id de la personne mentionné quoi

cedar cloud
#

message.mentions.members.first()

#

normalement c bon ca

oak turret
#

ouais mais je veux chopé l'id

crimson fern
#

message.mentions.members.first().id

oak turret
#

Alors ouais mais ça fais toujours le plus 1 à tout le monde

#
 if (command === "warn" ) {
        const db = new Enmap({name: "warns"});
        const warn = db.get(`user.${message.author.id}.warn`);
        const accused = message.mentions.members.first();
        const id = accused.id;
        const name = args.slice(1).join(" ")
        if(!db.get(`user.${id}.warn`)) { db.ensure(`user.${id}.warn`, 0) }

        if(!name || !accused) return message.channel.send("Vous devez mettre un accusé + raison !");
        else {
            db.math(`user.${id}.warn`, "+", 1)
            
         }
         const warn_embed = new Discord.MessageEmbed()
            .setColor("#00ff00")
            .setAuthor(`${accused.tag} a reçu un avertissement`)
            .addFields(
                {name: "Joueur", value: `${accused}`, inline: true},
                {name: "Raison", value: `${name}`, inline: true},
                {name: "Modérateur", value: `${message.author}`, inline: true},
                {name: "Total", value: `${accused} cumule désormais ${warn} avertissement(s)`},
            );
            message.channel.send(warn_embed);


    }
#

ahh oui

#

oups

#

Nickel merci Sam

cedar cloud
#

mrc moi surtout ^^

#

dcp @crimson fern tu peux m'aider maintenant ?

crimson fern
#

?

#

guild = ?

#

ah mais ok je sais

#

remontre moi ton code

cedar cloud
#

bah il est pas changer

crimson fern
#

mais dans ton code, tu te complique la vie de fou

cedar cloud
#

pk ?

crimson fern
#

mais enfaite, counter.js, c'est quoi ? c'est un event ?

cedar cloud
#

oui

crimson fern
#

mais ton code est illogique

cedar cloud
#

😭

#

il est logique pour moi ^^

crimson fern
#

normalement, les events que tu crées, c'est ceux de discord

oak turret
#

Sam on peut relier deux db enmap (le warn marche bien) mais j'ai envie de le connecté avec une autre commande pour lui faire un -1 xD ?

cedar cloud
#

a bah moi g tjrs coder comme ca et je suis pas le seul

#

mais je comprend pas ce qui va pas

crimson fern
#

@oak turret fait t'as db autrement alors

#

met le dans tes const principales avec djs

oak turret
#

J'ai try de changé le nom de la db, puis de prendre les values de l'autre pour faire le -1 mais il me prend pas le nom de la new db

crimson fern
#

fait ta const dans tes principales

oak turret
#

me ?

crimson fern
#

genre, en dessous de const client = new Discord.Client()

#

oui

oak turret
#

pour les deux db ?

crimson fern
#

t'en a qu'une

#

c'est la même justement

#

le but est d'en avoir une commune pour les warns on est d'accord

oak turret
#

yep

crimson fern
#
        const db = new Enmap({name: "warns"});
```ca tu le met tout en haut de ton code
#

et t'auras juste a réutiliser db.math

oak turret
#

"Cannot access 'Enmap' before initialization"

#

du coup je peux pas l'use

crimson fern
#

Normal

#

faut que tu initialise enmap avant

oak turret
#

oauis j'suis con xD

#

Alors ça fonctionne mais ça me met tout le temps -1 xD (même pour warn)

#

ça fonctionne 1 fois sur deux en fait xD

crimson fern
#

J'ai pas compris thinking_hard

oak turret
#

En gros

#

quand j'unwarn ça marche

#

mais quand je veux re-warn il me re unwarn

#

xD

#

Warn


    if (command === "warn" ) {
        const accused = message.mentions.members.first();
        const warn = db.get(`user.${accused.id}.warn`);
        const id = accused.id;
        const name = args.slice(1).join(" ")
        if(!db.get(`user.${id}.warn`)) { db.ensure(`user.${id}.warn`, 0) }

        if(!name || !accused) return message.channel.send("Vous devez mettre un accusé + raison !");
        else {
            db.math(`user.${id}.warn`, "+", 1)
            
         }
         const warn_embed = new Discord.MessageEmbed()
            .setColor("#00ff00")
            .setAuthor(`${accused.tag} a reçu un avertissement`)
            .addFields(
                {name: "Joueur", value: `${accused}`, inline: true},
                {name: "Raison", value: `${name}`, inline: true},
                {name: "Modérateur", value: `${message.author}`, inline: true},
                {name: "Total", value: `${accused} cumule désormais ${warn} avertissement(s)`},
            );
            message.channel.send(warn_embed);


    }
#

Unwarn

if (command === "unwarn" ) {
        const accused_unwarn = message.mentions.members.first();
        const id_unwarn = accused_unwarn.id;
        const warn = db.get(`user.${accused_unwarn.id}.warn`);
        const name_unwarn = args.slice(1).join(" ");
        if(!name_unwarn || !accused_unwarn) return message.channel.send("Vous devez mettre un accusé + raison !");
        else {
            db.math(`user.${id_unwarn}.warn`, "-", 1);
            
         }
         const unwarn_embed = new Discord.MessageEmbed()
            .setColor("#00ff00")
            .setAuthor(`${message.author} a enlevé un warn de ${accused_unwarn}`)
            .addFields(
                {name: "Joueur", value: `${accused_unwarn}`, inline: true},
                {name: "Raison", value: `${name_unwarn}`, inline: true},
                {name: "Modérateur", value: `${message.author}`, inline: true},
                {name: "Total", value: `${accused_unwarn} cumule désormais ${warn} avertissement(s)`},
            );
            message.channel.send(unwarn_embed);


    }
crimson fern
#

c'est pas normal

oak turret
#

peut-être parce que je le restart beaucoup xD

crimson fern
#

nop

#

essaye de remplace - et + par respectivement sub et add

oak turret
#

Je l'éteins et restart pour voir xD

#

yep

#

je fais ça

crimson fern
#

j'avais mis l'inverse

oak turret
#

add pour warn on est d'accord xD

crimson fern
#

oui

cedar cloud
#

bon on peut m'aider maintenant svp ?

oak turret
#

yep c'était ça

#

merci Sam !

crimson fern
#

@cedar cloud autant mettre ce que tu as fait dans ton fichier principal

cedar cloud
#

ca changera rien

crimson fern
#

Non

#

Ca changera rien je suis d'accord

#

mais là, c'est pas un event

#

et au lieu de faire des grosses fonctions, tu fais direct :

<Channel>.setName(`💓 En ligne : ${guild.members.cache.filter(f => f.user.bot === false && f.user.presence.status !== "offline").size}/${guild.members.cache.filter(f => f.user.bot === false).size}`)```
cedar cloud
#

mouais et si je fait ca c bon ? :

    client.on("guildMemberAdd", function (member) {
        updateStatus(member.guild);
        updateStatus1(member.guild);
        
    })

    client.on('presenceUpdate', async (oldMember, newMember) => {
        updateStatus(newMember.guild);
        updateStatus1(newMember.guild);
    });
    
    client.on("guildMemberRemove", function (member) {
        updateStatus(member.guild);
        updateStatus1(member.guild);
    })
crimson fern
#

enleve tes fonctions

#

c'est inutile

cedar cloud
#

mais je prefere m'organiser comme ca

crimson fern
#

change tes fonctions alors

oak turret
#

Sam petite question, on est d'accord que mes warns dans la db sont des "Number" ?

crimson fern
#

oui

oak turret
#

je peux pas soustraire tous mes warns, car il me dit que warns sont des strings waitwhat

crimson fern
#

Fait un Math.floor de ta db

oak turret
#

console.log(Math.floor(db)); => NaN

crimson fern
#

non mais de ce que tu veux

#

dans ton cas :

console.log(Math.floor(db.get(`user.${id}.warn`)));
oak turret
#

ahh ^^

#

ça me donne 1818

crimson fern
#

Oula

oak turret
#

Pour enlever tous les warns du joueur je fais

#
            db.math(`user.${id_unwarn_all}.warn`, "add", `${warn}`);
#

et ça me refais le bug des + -

keen narwhal
#

Pauvre Lartaxx

oak turret
#

mon bot il suefort

#

il parle mandarins xD

keen narwhal
#

Starfoullilah je comprend rien

#

;-; trop évolué pour moi

oak turret
#

pourtant c'est tout con ce que je veux faire

keen narwhal
#

Je suis plus que con

#

;-;

oak turret
#

je veux que ça fasse +1 pour le nombre de warns et -1 pour unwarns xD

#

mais pour l'id de l"utilisateur mentionné

#

et unwarnall j'enlève tous les warns de l'id de l'utilisateur mentionné tout simplement

#

mais il sue mon bot il veut plus xD

keen narwhal
#

Ptdr

#

Bah get le nombre de warn que le mec à et ensuite tu le soustrais par se nombre quand tu fais unwarnall

#

Ou tu reset seulement son casier

oak turret
#

ouais mais je passe par enmap

#

j'ai fais ça

#

ça fonctionne bien

#

mais

#

il emmêle à un moment

#

on dirait qu'il n'applique pas les instructions de la commande

keen narwhal
#

Passe par un autre chemin non ?

oak turret
#

j'vais passer par une db "réelle" et faire mes requêtes je pense

#

mais j'attends l'avis de Sam

crimson fern
#

@oak turret

#

Du coup

oak turret
#

oui

#

i'm here

crimson fern
#

Pour le unwarnall, t'as juste a db.set()

#
db.set(`user.${id}.warn`, 0)```
oak turret
#

oui aussi xD

crimson fern
#

ensuite, remontre tes codes, et dit moi ce qu'il se passe

#

au pire, fait un js db.deleteAll()ca va te permettre de reset ta db

#

montre ton code en entier plutôt

oak turret
#

juste le delteAll rien dedans ?

#
 if (command === "unwarnall" ) {
        const accused_unwarn_all = message.mentions.members.first();
        console.log(Math.floor(db.get(`user.${accused_unwarn_all.id}.warn`)));
        const id_unwarn_all = accused_unwarn_all.id;
        const warn = db.get(`user.${accused_unwarn_all.id}.warn`);
        const name_unwarn_all = args.slice(1).join(" ");
        if(!name_unwarn_all || !accused_unwarn_all) return message.channel.send("Vous devez mettre un accusé + raison !");
        else {
            db.set(`user.${id_unwarn_all}.warn`, 0);
            
         }
         const unwarn_all__embed = new Discord.MessageEmbed()
            .setColor("#00ff00")
            .setAuthor(`${message.author} a enlevé tous les warnsde ${accused_unwarn_all}`)
            .addFields(
                {name: "Joueur", value: `${accused_unwarn_all}`, inline: true},
                {name: "Raison", value: `${name_unwarn_all}`, inline: true},
                {name: "Modérateur", value: `${message.author}`, inline: true},
                {name: "Total", value: `${accused_unwarn_all} cumule désormais ${warn} avertissement(s)`},
            );
            message.channel.send(unwarn_all__embed);


    }
crimson fern
#

deleteAll() te reset toute ta db

#

et envoie moi tout le code en mp via pastebin

oak turret
#

okay je fais ça merci pour ton temps ^^

cedar cloud
#

message.guild.roles.exists il est remplacer par quoi à la v12 ?

red snow
#

message.guild.roles.cache.exists

oak turret
#

.cache

#

roh

cedar cloud
#

mrc

#

nn c pas ca

red snow
#

alors c'est ton .exists

#

C'est pas .has ?

cedar cloud
#

bah c t .exists en v11

#

c pas has nn plus

oak turret
#

.find ?

#

message.guild.roles.cache.find

#

ou .get

#

avec l'id du grade

oak turret
#

get

#

message.guild.roles.cache.get('iddugrade');

brave coral
#

Comment ont créer une embeds genre j'aimerais dire a mon bot créer une commande !info et avoir l'embeds qui montre toute les info que je vais afficher

oak turret
#

@brave coral

#
const embed = new Discord.MessageEmbed()
  .setColor("#FFFFF")
  .setAuthor("tata");
message.channel.send(embed);
brave coral
#

Ho merci

#

et pour mettre un message a l'intèrieur ?

oak turret
#

tout dépend de ce que tu veux

#

envoie ton code

brave coral
#

Je n'est pas commencer la commande

#
bot.on('message', function (message) {
    if (message.content === '!info'){
    message.reply('message')
    }
})
#

A si

oak turret
#
bot.on('message', function (message) {
    if (message.content === '!info'){
    const embed = new Discord.MessageEmbed()
      .setColor("color")
      .setAuthor("Nom du bot", "icone du bot")
      .addFields(
      {name: "Test", value: "Test", inline: true},
      {name: "Test", value: "Test", inline: true}
);
message.channel.send(embed);
    }
})
brave coral
#

Ho ok

oak turret
#

et après va voir ce que tu peux mettre dans ton embed

#

.setColor etc

brave coral
#

Ok je vais allez sur la ducomentation discord

oak turret
#

discord.js

oak turret
#

Hello, quelqu'un a déjà crée un channel depuis une commande ?

 guild.channels.create('new-general', { reason: 'Needed a cool new channel' })
            .then(console.log)
            .catch(console.error);

Ne me prends pas le guild (undefined) c'est censé être une classe non ?

keen narwhal
#

Montre ton event sil te plaît

oak turret
#

je suis dans l'event client.on("message"

keen narwhal
#

Donc c'est, message.guild

#

Car tu veux récupérer la guild de message

#

CQFD

oak turret
#

Je crois que je suis fatigué suefort

#

trop dév aujourd'hui xD merci à toi

#

^^

#

Ah et dernière question ouch, on peut define la catégorie dans laquelle le channel pop ?

slim anvil
#

parentID

oak turret
#

je l'use comment ?

#
 type: 'text',
 parentID: '715671104387154020',

Po trouvé d'exemple sur le wiki

slim anvil
#

setParent

red snow
#

channel.setParent

slim anvil
#

et tu passes l'id pardon

oak turret
#

quand j'envoie mon contenu ?

red snow
#

Quand tu veux

#

Temps que channel est defined

#

Enfin que ton object Channel est defined

oak turret
#

ça fonctionne

#

mais

#

il m'envoie plus mon contenu

#
.then(chan => chan.setParent('715671104387154020').send(`Raison : ${raison}`)).then(chan => chan.react("❌"))
red snow
#

Normal

#

Le.send

#

Tu dois faire une autre ligne et mettre Chan.send("...")

oak turret
#

ah d'accord je pensais pouvoir en faire plusieurs de suite

red snow
#

Na vu que le.setParent ne retourne rien

oak turret
#

pas comme ça non ?

#
.then(chan => chan.setParent('715671104387154020'),
chan.send(`Raison : ${raison}`)).then(chan => chan.react("❌"))
keen narwhal
#

Non

red snow
#

Non plus

keen narwhal
#

Tu peut mettre le parent quand tu crée le channel

red snow
#

La virgule elle n'a rien à faire là

oak turret
#

ça me le met en rouge sinon :x

red snow
#

Il peut aussi le faire la

keen narwhal
#

C'est pas opti

red snow
#

Ça a la même optimisation

oak turret
#

et me dit que chan n'est pas define xd

keen narwhal
#

Tu envoie deux requête pour une action

#

useless

red snow
#

Et si tu créer un channel tu envoie deux requêtes aussi, la création, le set parent

#

Pour le coup, l'optimisation ne changera vraiment rien ici

#

C'est à son goût

keen narwhal
#
channels.create('new-channel', { 
  type: 'text', 
  permissionOverwrites: permissionOverwriteArray, 
  reason: 'New channel added for fun!',
  parent: 16465191916
});
#

Pour le coup, l'optimisation ne changera vraiment rien ici
Une requête en moins et toujours de l'optimisation

red snow
#

Tu n'as pas fais de requête en moins ici

keen narwhal
#

Si

#

Car j'envoie tous dans un object

red snow
#

Et l'objet sera plus "lourd" ... Vraiment entre les deux il n'y presque aucune différence

keen narwhal
#

Si

oak turret
#

J'ai use comme ça pour voir

#

mais il m'envoie plus dans la catégorie*

#
const chan = message.guild.channels.create(`ticket-de-${message.author.username}`, {
                type: 'text',
                parent: 715671104387154020,
                permissionOverwrites: [
                   {
                     id: message.author.id,
                     deny: ['VIEW_CHANNEL'],
                  },
                ],
              })
              .then(chan => chan.send(`Raison : ${raison}`)).then(chan => chan.react("❌"))
             

              if(user.client.reaction == "❌") {
                  message.chan.delete();
              }
}
red snow
#

Tes variables n'ont pas de sens

oak turret
#

pourquoi ?

#

le if marche pas ^^

keen narwhal
#
.then(chan => chan.send(`Raison : ${raison}`)).then(chan => chan.react("❌"))```
red snow
#

Parce que le.then après le message ne renvoie pas un channel

keen narwhal
#
.then(c => {
c.send(`Raison : ${raison}`))
c.react("❌")
)}```
red snow
#

Tu réagis au channel ?

keen narwhal
#

Non c'est tous a fait correct

#

Eu wait

red snow
#

T'as pas redéfinis c

keen narwhal
#

Tu le met au mauvais endroit ton .then

oak turret
#

Désolé, première fois que je fais ce genre de truc :x

#

et le .then marche pas Fire

#

le parent ne marche po non plus xD

red snow
#

Ctrl z

#

Et au lieu de la virgule met un ;

#

🤷‍♂️ c'est ptet ça

#

On est pas obligé de mettre { pour les then ?

keen narwhal
#
const chan = message.guild.channels.create(`ticket-de-${message.author.username}`, {
  type: 'text',
  permissionOverwrites: [
    {
      id: message.author.id,
      deny: ['VIEW_CHANNEL'],
    },
  ],
}).then(chan => {
  chan.send(`Raison : ${raison}`)
  chan.react("❌")
  chan.setParent("715671104387154020")
})```
#

Et si

red snow
#

Bah voilà pour ça que t'avais une erreur plus haut

keen narwhal
#

Car tu fais plusieurs actions dans ton .then

red snow
#

Tu fais plusieurs requêtes 👀

oak turret
#

ça me fais pas le setParent mais ça fonctionne sinon

red snow
#

Euh

keen narwhal
#

Tu met bien l'id de la catégorie au moins ?

red snow
#

Chan.react pas correct

keen narwhal
#

Yep

#
const chan = message.guild.channels.create(`ticket-de-${message.author.username}`, {
  type: 'text',
  
  permissionOverwrites: [
    {
      id: message.author.id,
      deny: ['VIEW_CHANNEL'],
    },
  ],
}).then(chan => {
  chan.send(`Raison : ${raison}`).then(msg => msg.react("❌"))
  chan.setParent("715671104387154020")
})```
red snow
#
msg.react("truc")
})
Chan.setparent('truc')
})
keen narwhal
#

C'est un int

oak turret
#

Nickel ça fonctionne

keen narwhal
#

Pas besoin de préciser ``

oak turret
#

et pour mon if vous auriez pas d'idée ?

slim anvil
#

il sert a rien le premier le premier const chan du coup Fireless

#

si tu promise

#

pas besoin d'assigner ton const chan

oak turret
#

Je trouve pas les bons attributs :x

violet knot
#

il la copier

red snow
#

.reaction.name je crois je sais plus

keen narwhal
#

Mec

red snow
#

Désolé si je mets pas les trucs dans les parenthèses mais je suis sur tel lartaxx

violet knot
#

wtf @red snow

keen narwhal
#

Tu dis n'imp @red snow

oak turret
#

tqt pas grave ^^

red snow
#

?

#

Pourquoi je dis nimp du coup, 0as compris

keen narwhal
#

.reaction.name je crois je sais plus

red snow
#

Dans mes souvenirs c'était ça

keen narwhal
#

Non

slim anvil
#

Il veut faire quoi

#

que a la redaction ça delete ?

oak turret
#

yep

#

chan.delete() du coup non ?

#

avec un message.author.reaction == "la reaction"

slim anvil
#

non car c'est un event différent

#

c'est messageReactionAdd

#

du coup tu vas recevoir 2 paramètres, le reaction et le user

#

reaction._emoji.name

#

ou avec l'id tu fais comme tu veux

red snow
#

A oui le emoji

slim anvil
#

Si tu fais des emojis custom c'est un peu différent

red snow
#

:smart:

slim anvil
#

Ensuite tu regardes d'ou ca a été react, et tu delete le channel yes

oak turret
#

je l'use comment du coup pour mon coup ?

red snow
#

Sinon ya pas le await pour les réactions?

slim anvil
#

Bah si vous faites des .then a gauche et des await à droite bof

#

sois tu promise chaining

#

sois tu await je trouve

#

mais sinon oui il aurait pu faire pour reagir
const msg = await chan.send(Raison : ${raison})
if (msg) msg.react('xx')

#

Mais pour récupérer l'event de reaction non je crois que c'est seulement l'evenement reactionAdd

red snow
#

const filter = (reaction, user) => {
	return ['👍', '👎'].includes(reaction.emoji.name) && user.id === message.author.id;
};

message.awaitReactions(filter, { max: 1, time: 60000, errors: ['time'] })
	.then(collected => {
		const reaction = collected.first();

		if (reaction.emoji.name === '👍') {
			message.reply('you reacted with a thumbs up.');
		} else {
			message.reply('you reacted with a thumbs down.');
		}
	})
	.catch(collected => {
		message.reply('you reacted with neither a thumbs up, nor a thumbs down.');
	}); ```
#

J'ai trouvé ça

slim anvil
#

Ah bah yes why not

oak turret
#

wah je suis plus trop là xd

keen narwhal
#

Je me demandais si ça serait possible de créer en genre de timer, que après exemple 1 jour, si la personne n’a pas fait une certaine vérification sur le serveur bah elle est kick ?

slim anvil
#

Essaye le truc de SB Lartaxx le awaitReactions idk ce que ca donne

#

mais ca a l'air cool

#

si tu peux le gérer comme ça c'est bien

oak turret
#

dans son if il détecte un réaction, mais j'voudrais détecter quand le message.author réagi avec l'émoji juste xD

red snow
#

Mmh alex

#

Je vais peut être te donner le truc le moins opti sur terre mais bon 🤷‍♂️

#

Ton member il a un rôle quand il est vérifié ?

keen narwhal
#

Oui, le rôle membre

slim anvil
#

@oak turret regarde ce que tu recois le "collected" tu as peut etre un member dedans pour savoir quel user

keen narwhal
#

Mais je veux juste qu’on me dise si c’est possible et avec quel truc le faire que j’apprenne à me débrouiller seul :3

red snow
#

OK

slim anvil
#

Alex tu regardes tt les jours en gros chaque membre d'un certains role le last message

red snow
#

Quelqu'un qui me dit si c'est bien ou pas 🤷‍♂️

slim anvil
#

si le lastMessage est plus vieux que xx/xx/xx

red snow
#

Tu vérifie toutes les 12h par exemple

slim anvil
#

alors tu le kick

oak turret
#

Enzo là j'ai rien changé à mon if, j'ai pas trop suivi le reactionAdd, fin pas d'exemple find

keen narwhal
#

Kk

slim anvil
#

Essaye l'exemple de SB Lartax

#

son awaitReactions, tu reagis et log ce que tu recois pour voir si tu as bien le member dedans

#

je pense que oui

#

donc tu pourras faire ton truc je suppose

#

idk

red snow
#

Si le member.joinedAt.getDay(Je sais pas si c'est ça) n'est pas égal au current Time.getDay bah tu kick

#

Un truc dans le genre

keen narwhal
#

Je fais ça dans le index on est d’accord

red snow
#

Mmh ouais

#

Enfin

#

Dans un truc où le setInterval se lancera

slim anvil
#

tu crées une task qui va etre appelé tout les soirs

#

un setInterval pas la bonne option si tu relances le serveur

#

ca peut complètement changer les heures de lancement

keen narwhal
#

Yep,

slim anvil
#

faire ca en journée vérifié chaque membre

red snow
#

Oe faut lancer aux bonnes heures effectivement

keen narwhal
#

Du coup, je fais quoi ?

slim anvil
#

ca peut etre touchi

#

je l'ai dis plus haut

#

tu as des modules npm

#

pour faire ça

#

simple à use

oak turret
#

ça me log this

#

Collection [Map] {}

red snow
#

T'as log quoi?

oak turret
#

collected

keen narwhal
#

ta collection est vide

oak turret
#

donc il détecte pas quand je réagis

keen narwhal
#

Tu as pris un truc de github ?

oak turret
#

c'est SB qui m'a dit de test

keen narwhal
#

Bah mec

#

Perso je n'aide pas pour des ressources github, surtout si par derrière la personne n'a pas les basses en js

red snow
#
const collector = message.createReactionCollector(filter, { time: 15000 });
 collector.on('collect', r => console.log(`Collected ${r.emoji.name}`)); collector.on('end', collected => console.log(`Collected ${collected.size} items`));```
#

C'est des trucs de la doc au cas où

oak turret
#

@keen narwhal Je sais pas d'où vient le code ^^ Et j'ai les bases hein ^^ juste que au départ je trouvais juste pas les bon attributs pour détecter quand l'auteur du message réagissez ^^

keen narwhal
#
red snow
#

Laisse tomber ^^ tu apprends, comme tout le monde

keen narwhal
oak turret
#

Non mais si je poste, c'est que j'ai look les attributs avant, et que j'ai juste pas trouvé

red snow
#

Sauf que des gens n'ont pas assez de patience pour le comprendre, et renvoient vers la doc, bêtement (Bon après ya des trucs obvious)

#

Essaye ce que je t'ai mis Lartaxx

oak turret
#

Là y a pas d'exemple donc je sais pas trop comment l'use

red snow
#

Pour voir si ça te log

oak turret
#

yep je test

keen narwhal
#

c'est un event

oak turret
#

Collected 0 items

keen narwhal
#

pas de code, pas d'aide

red snow
#

T'as réagis ? Et t'as mis au lieu de message ta variable ?

oak turret
#

Ouais j'avais compris, mais je l'use comment ? Je suis déjà dans l'event message

keen narwhal
#

Regard

oak turret
#

yep j'ai mis ma réaction

red snow
#

Fireless arrête... Il a juste testé ce que je lui ai envoyé, stop te remarques inutiles, qui ne font que perturber une simple conversation...

oak turret
#

et la bonne

keen narwhal
#
client.on('messageReactionAdd', msg => {
     console.log(msg)
})```
oak turret
#

Oui merci je sais comment on use un event

#

du moins un event dans un event j'ai jamais fais, donc je demande si c'est possible

keen narwhal
#

De quoi un event dans un event

slim anvil
#

Non cet event tu le emt pas dans le message

keen narwhal
#

Aya

slim anvil
#

je te l'ai dis plus haut

#

tu as le awaitReactions de SB mais je connais pas

#

et l'event msgReactionAdd

oak turret
#

Ouais je sais

slim anvil
#

avec 2 params, la reaction et le user

red snow
#

Enzo, regarde le derbier que j'ai envoyé

#

C'est la doc de djs mais ça Lio met 0 collected OwO

oak turret
#

Mais après ça c'est comment je le fais fonctionner avec ma commande

#

Je suis peut-être teubé mais je vois pas pourquoi :x

keen narwhal
#

Un timeout au lieu de setInterval ?

slim anvil
#

Ou ça SB pas vu

#

Non Alex un timeOut ca va etre lancé une fois

red snow
#
const collector = message.createReactionCollector(filter, { time: 15000 });
 collector.on('collect', r => console.log(`Collected ${r.emoji.name}`)); collector.on('end', collected => console.log(`Collected ${collected.size} items`));```

@red snow

slim anvil
#

mais après le délai indiqué

red snow
#

A mais attend Lartaax

oak turret
#

j'ai mis 1000 pour 1s

red snow
#

T'as remplacé some Id?

keen narwhal
#

Ah ok

oak turret
#

pour l'id du user ?

red snow
#

Oui

oak turret
#

j'ai pas vu

red snow
#

Pas le ${}

#

Enfin le met pas dans le String

keen narwhal
#

Une schedule !

red snow
#

🤔

slim anvil
#

Oui Alex

keen narwhal
#

Le module il faut que je l'install on est d'accord ?

slim anvil
#

Oui

#

ça a du bon de chercher hein ^^

keen narwhal
#

xD

slim anvil
#

tu es plus content de l'avoir trouvé tout seul je suppose

keen narwhal
#

Pour une fois que j’essaie vraiment :3

#

Ouii

red snow
#

Mdrr

slim anvil
#

Pour une fois que j’essaie vraiment :3

oak turret
red snow
#

Oui

#

Lid du member quoi

#

Que tu veux qui mette la réaction

keen narwhal
#

Meme si pour le reste j’ai aucune idée comment faire, maintenant que j’ai une petite idée de quoi faire je vais essayé et faire des erreurs et recommencer !

oak turret
slim anvil
#

Oui parce que le message.author.id ca va etre celui du bot qui a publié l'embed non ?

oak turret
#

c'est pas plutôt celui qui a tapé la commande ,

#

?

slim anvil
#

Ah sauf si c'est l'id du mec qui a fait la commande

#

yes

oak turret
#

yes c'est pour ça

#

ça me log pareil

#

Collected 0 items

red snow
#

Met pas 1s

#

Met plus de temps

#

En 1s c'est chaud de réagir avec la latence etc

oak turret
#

5s

red snow
#

A

oak turret
#

je mets ^^

slim anvil
#

Wait haha

oak turret
#

Pareil ^^

slim anvil
#

Lartaxx le mec doit reagir direct ?

oak turret
#

Non

slim anvil
#

Ou il a le temps, genre r"agir demain ?

#

ah bah du coup c'est pas bon

red snow
#

Comment t'as 0 item collected

oak turret
#

oui par exemple

slim anvil
#

là il va attendre une reaction dans le timing donné

oak turret
#

fin quand il le veut quoi

red snow
#

A

#

Ponce

#

Mince

slim anvil
#

Si il réagit demain et que t'as mis 10 minutes c'est foutu

red snow
#

Abandonne mon cmtruc alors

slim anvil
#

donc passes par le messageReactionAdd ^^

oak turret
#

Ah yes, donc là j'aimerais savoir comment relier l'event à ma commande ?

#

je la fous dedans ?

red snow
#

Euh