#javascript-typescript
1 messages · Page 50 of 1
No
La ou tu as déclaré ton event de new message
après cette event tu déclares celui du reactionAdd
new message = event message ?
Enzo, si je veux que le script se lance à 00h00 je dois faire var date = new Date(****, **, **, 0, 0, 0);
?
Non Lartaxx, je saisi pas ce que tu comprends pas la
ton évent pour détecter un nouveau message
celui-là donc client.on("message", async message => {
Yes
oui voilà ^^
Tu mets ton évent messageReactionAdd au même endroit, juste après celui ci
bah c’est bien ton évent de new message c’est@bien ce que je dis 🤔
oui mais j'ai dis l'event "message" t'as dis non :x
Du coup sur mon event je define args command etc ?
car je la fais dedans ma commande no ?
Je te l’ai mis plus haut, et fireless aussi
tu as 2 paramètres dedans le reaction et le user
Yes mais il en a déjà un autre le node-schedule d’après ce qu’il a dit
Yep
mais je fais comment pour relier ma commande du coup ?
Ah bah use cronJob direct
Pas besoin d’user un package qui en utilise un autre 🤔
tu relies pas vraiment ta commande Lartaxx
Maintenant à la réaction du message tu vas regarder si le message est bien un ticket- et si l’ID du créateur du message est bien celui qui react
Bah je test 30 seconde et je regarde après
Ce que tu peux faire c’est foutre l’ID du mec dans le footer de l’embed pour le récupérer facilement
Car l’auteur va être le bot
faut que j'en fasse un alors
Je comprend pas pourquoi ça ne spam pas ma console ;-;
look l’emoji et si aussi le nom du channel startsWith(‘ticket-de’)
user.react dans un if ça fonctionne vu que c'est un param ?
donc je check quoi avec quoi du coup
ton premier params tu as reaction._emoji.name ou id à toi de voir
Et tu peux même faire avant, une condition genre
const isTicket = et ici tu regardes si le channel name commence par ticket-de
Comme ça tu feras un if (reaction._emoji.name == ... && isTicket)
const isTicket = channel.name.startsWith(ticket-de-${joueur_id}); good ?
ce sera pas channel du coup car tu le define nul part mais t’as l’idée oui
Dans ton évent en première ligne tu met:
const { message, _emoji } = reaction
const isTicket = message.channel.name.startsWith('ticket-de')
Je sais pas si c’est les bonnes quotes je suis sur téléphone sorry
du coup ça va te renvoyer true ou false et donc tu t’en serviras pour ta condition
yep np, d'ailleurs je peux mettre const user_id = user.id
vu que user = joueur qui react
donc ça revient au message.author.id no ?
Oui, mais du coup ça sert a quoi de faire une const qui va se nommer quasi pareille que celle de base ? 
t’as remplacé le . par _
Je ne comprends pas pourquoi ça ne veux pas spam ma console ;-; pourtant c’est la même chose que l’exemple et dans l’exemple ça marche ;-;
on pourra regarder demain si tu veux Alex je vais pas tarder à aller dormir et je suis pas sûr pc là du coup ça va être relou
Tkt
oui :x, donc const joueur_id = user_id ?
là pour le coup non je pense pas c’est pas comme si dans le user tu voulais accéder à autre chose et du coup éviter à chaque fois de réécrire tout le truc là ça te fera pas gagner de temps ni rien
yep !
je crois avoir finalisé le truc
good no ?
const { message, _emoji } = reaction;
id_joueur = user_id;
const isTicket = message.channel.name.startsWith(`ticket-de-${id_joueur}`);
if (reaction._emoji.name == reaction && isTicket) {
chan.delete({timeout: 3000});
}
Bah yes log le user
Et tu crées dès ticket par le nom
Et pas par l’ID
Et c’est pas bon reprend mon startsWith
car déjà tu crées ton ticket avev le userName mais si ils sont 2 à s’appeler Enzo ça va pas être bon
je crée mon channel avec message.author.username
Là tu vérifies juste que tu sois un channel de type Ticket comme ça si c’est pas le cas tu rentres pas dans le reste ça sert à rien
du coup je check par l'id du message.author
et ensuite tu regarderas si le message que tu as react (l’embed) dans le footer il y a l’id du user qui est égale à user.id
Il y a que le créateur du ticket qui peut le fermer )
Ou tout les gens qui ont accès au channel ?
que le message.author
bah pour le coup y a que message.author qui peut :x
Yes ok
fin actuellement
Bon bah du coup tu peux faire plus simple je te l’écris pas de façon code mais de façon structuré:
1 - venir récupérer l’id du joueur qui a fait la commande !ticket qui est stocké dans le footer de l’embed (donc penser à l’ajouter à la création de l’embed!)
2- if channel name startsWith ticket-de-user.id && id dans le footer === user.id && reaction emoji name === ❌
3 - delete channel
Je crois que c’est ça
1 - donc pour ça c’est simple tu reaction juste le message et dedans tu auras les datas nécessaires à checker ^^
joueur_id = message.author.id, dans le embed déjà fait ^^
je peux donc faire joueur_id == user.id
et qu’il soit bien dans un channel ticket
Éviter de delete un autre channel même si c’est peu probable
Mais on sait jamais un truc de suggestions tu peux mettre l’ID du créateur aussi et hop il réagit avec La Croix et ça delete le@channel
hum ouais
comme je l’ai écris du coup là tu vas vraiment checker si c’est startsWith(‘ticket-de-${user.id}´)
sauf que je mettrais pas la même coix
croix
donc
if (reaction._emoji.name == "❌" && isTicket && joueur_id == user.id)
Du coup change juste le isTicket et c good !
tu rajoutes juste finalement le user.name pardon pas id
Comme ça t’es sûr que c’est son ticket, après là où c’est relou.... c’est si il change de nom
username*
donc non le isTicket le touche pas laisse le juste par ticket-de
pas de soucis, merci de ton temps surtout !
donc final =
const { message, _emoji } = reaction;
const isTicket = message.channel.name.startsWith(`ticket-de-${user.name}`);
if (reaction._emoji.name == "❌" && isTicket && joueur_id == user.id) {
console.log("timer");
chan.delete({timeout: 3000});
}
good ?
oups !
du coup enlève le ${user.name}
Pour être sûr si jamais il change de nom c’est baise
Y a l’id ça suffira
Du coup joueur_id on est ok c’est bien l’ID dans le footer embed ?
Non ne met rien finalement
Laisse en ticket-de
Vide
Sorry je change d’avis mais en vrai ouais si il change de nom ça casse le truc
Peu probable mais@vaut mieux le gérer
Nooo
Tu mets rien
tu le laisses vides du coup
on regarde juste qu’on est bien dans un channel de type Ticket
Donc startsWith(‘ticket-dé)
de*
okay !
const { message, _emoji } = reaction;
const isTicket = message.channel.name.startsWith("ticket-de-");
if (reaction._emoji.name == "❌" && isTicket && joueur_id == user.id) {
console.log("timer");
chan.delete({timeout: 3000});
}
good du coup
Si t’as bien géré le joueur id la condition paraît bonne
joueur_id = message.author.id define juste avant mon embed
qui marche bien dans le footer
oui mais tu as pas accès a l’embed il est dans l’autre évent

il faut que tu viennes récupérer l’id dans le message que tu récupères dans l’évent là
ça fonctionne pourtant ^^
c'au moment du delete qu'il veut pas
le chan il le trouve pas
chan = channel crée
Non mais tu fais message.channel.delete()
okay je test ^^
Il a accès au message.author.id c’est normal
Tu définis messages juste au dessus
Mais ce sera l’id du bot
C’est la base d’une scope
Il a pas accès à la variable d’une autre scope
donc c’est à toi de venir récuper l’id
c'est le mien xD
mais wtf ton message.author.id tu le définis nul part
a part celui que tu récupères de l’évent
mais ton embed il est envoyé lors de l’envoie de la commande on est ok ?
tu renvoies un embed quand il react ?
oui à la commande quoi du coup
oui en gros
il fait la commande et ça crée le channel
yep
mais donc c’est pas l’évent messageReactionAdd
chan.send(
joueur_id = message.author.id,
send_embed = new Discord.MessageEmbed()
.setColor("00ff00")
.addFields(
{name: "Joueur", value: `${message.author}`, inline: true},
{name: "Raison", value: `${raison}`, inline: true }
)
.setFooter(joueur_id)
).then(msg => msg.react("❌"))
chan.setParent("715671104387154020")
})
ah donc avant de crée ton embed tu définies une variable global joueur_id ?
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(
joueur_id = message.author.id,
send_embed = new Discord.MessageEmbed()
.setColor("00ff00")
.addFields(
{name: "Joueur", value: `${message.author}`, inline: true},
{name: "Raison", value: `${raison}`, inline: true }
)
.setFooter(joueur_id)
).then(msg => msg.react("❌"))
chan.setParent("715671104387154020")
})
}
}
});
client.on("messageReactionAdd", (reaction, user) => {
const { message, _emoji } = reaction;
const isTicket = message.channel.name.startsWith("ticket-de-");
if (reaction._emoji.name == "❌" && isTicket && joueur_id == user.id) {
console.log(joueur_id);
message.channel.send(`Suppression du ticket dans 5 secondes`);
message.channel.delete({timeout: 5000})
}
})
En gros c'est ça
yep
xD
Si une personne crée un ticket juste après celui du mec
une autre personne ?
le joueur_id = l’id du nouveau ticket
bah tu as 2 joueurs qui créent un@ticket chacun
no du coup
c'est l'id du mec qui a tapé la commande
donc != de l'autre personne
vu que ça prends l'id du mec qui a tapé la commande
yep
Tu déclares une variable joueur_id = message.author.id ok ?
yep
ton id plutôt :x
mais si toi 1 minute après tu fais un@ticket, joueur_id = message.author.id donc ton id ?
bah yes
donc la variable joueur_id contiendra l’id de la dernière commande à chaque fois
Donc quand tu vas réagir bah l’ancien ça marchera pas
Parce que le mec@qui l’a fait après lui a piqué sa place
ça te crée pas une variable par utilisateur au cas où
Le méchant :o
ah bonnn :x
je croyais que si xD
La variable est reset à 0
ouaip
Et la,c'est l'hashmap
donc passes par le footer, et dans ton reaction add tu récupères le message que tu as déjà d’ailleurs et tu look le footer ! 🙂
bah dans le footer j'use juste message.author.id
comment je récup ce qui a dedans dans l'autre event ?
mon id est dans le footer
bah met l’id du mec dans l’embed sur lequel il va réagir
dans l'autre embed
mais tu envoies pas d’embed dans le reactionadd
sauf pour lui dire que son ticket est fini à la limite ??
attend j'suis con xD

pas d'embed dans le reactionAdd non xD
2 embed dans la commande juste
1 en dm
et un aux admins
avec le récap etc
autant pour moi 
et l’embed avec La Croix il est envoyé ou
La Croix sur laquelle il doit réagir ensuite pour le fermer ?
dans le channel où la commande est tapée
ou le message je ne sais pas
ah si j'suis con
mdr je perd la boule
dans la catégorie ticket puis ticket-de-nomdumec
donc dans cet embed tu vas venir mettre un footer avec l’id du mec qui fait la commande
et dans ton reaction Add
Tu vas venir récupérer l’id qui est dans le reaction.message etc.. je connais plus la structure de Message mais tu le log et tu verras bien
Tu le stock dans ton joueur_id cette fois ce sera bon mais pas en global
bah dans celui-où y a la croix il y est le setFooter et l'id
alors attends que je me perde pas
Yes vite vite il est 1h demain 8h 
Celui ci tu t’en fous
c'est là où y a la croix
yup
donc là tu log ton message juste en dessous
Tu regardes dedans, tu devrais avoir un trucs embeds un tableau je crois
Ou peut être pas tu look bien avec dedans un footer qui va contenir l’ID du coup
en dessous du const je log(message) ?
Je sais plus à quoi ressemble le Message mais regarde bien ce truc, cherche ton ID et associe le footer à une const
Fais un message.embeds[0] de tête
Log ça
Tu auras tout dedans ce qu’il te faut
je test
MessageEmbed {
type: 'rich',
title: undefined,
description: undefined,
url: undefined,
color: 65280,
timestamp: null,
fields: [
{ value: '@oak turret', name: 'Joueur', inline: true },
{ value: 'dqsd0', name: 'Raison', inline: true }
],
thumbnail: null,
image: null,
video: null,
author: null,
provider: null,
footer: {
text: '332514331516207105',
iconURL: undefined,
proxyIconURL: undefined
},
files: []
}
332514331516207105
j'ai mon id dans text
Yes bah à ton avis tu dois faire quoi
message.embeds.footer[text] ou un truc dans le genre
je suis ko donc je dois dire des conneries xD
const joueur_id = message.embeds[0].footer.text || null
met bien des === et pas ==
Car si de base leurs id sont en number tu vas comparer le type aussi
== type, === value
merci Enzo ! Bonne nuit à toi !
Bonne nuit
T’as une heure de retard toi mdr
xDD
Qui moi
ouep
Bonjour aujourd'hui, j'essayais de faire une commande qui set le message de bienvenue dans un channel grâce à aiko j'ai réussi. Mais là, j'essaie de faire en sorte que je puisse mettre le message que je veux avec une commande et que ce message ce stock dans un file.json. Bref, j'ai fait ça :
exports.SaveWelMessage = async function(guildid, message, args){
if (fs.existsSync(`./guild/${guildid}.json`)) {
var data = await JSON.parse(fs.readFileSync(`./guild/${guildid}.json`));
data.welcomemessage = args.join(' ').split('##')[0];
data.welcomegif = args.join(' ').split('##')[1];
fs.writeFileSync(`./guild/${guildid}.json`, JSON.stringify(data));
} else {
fs.mkdirSync(`./guild/`,{ recursive: true });
var data = templatedata;
let args1 = args.join(' ').split('##')[0]
let args2 = args.join(' ').split('##')[1]
data.welcommessage = args1;
data.welcomegif = args2;
fs.writeFileSync(`./guild/${guildid}.json`,JSON.stringify(data));
}
}
``` et le code de la commande ```js
const Discord = require('discord.js');
const datah = require("../data.js");
module.exports.run = async(client, message, args) => {
if (message.member.hasPermission("ADMINISTRATOR")){
if ( args[0] && args[1] ) {
let args0 = args[0];
let args1 = args[1];
datah.SaveWelMessage(args[0],args[1]);
message.reply(`done !`)
} else {
message.channel.reply('');
}
}
};
module.exports.help = {
name : "bvn"
}
``` J'ai une error :/ et je n'arrive pas à comprendre pourquoi ```UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'join' of undefined```
```(C:\Users\ \Desktop\bot\Abot\data.js:36:30)``` Ce qui correspond à ```js
let args1 = args.join(' ').split('##')[0]```
exports.SaveWelMessage = async function(guildid, message, args){
Oupss ;-; pauvre vasco xDD
°^°
Tu me pardonnes ? :3
Non il est undefined alex
datah.SaveWelMessage(args[0],args[1]);
ici tu passes 2 paramètres on est ok ?
exports.SaveWelMessage = async function(guildid, message, args){
ici le args tu le récupères en 3ème
hors tu n'envoies pas de 3 paramètre
Non, réfléchis c'est logique
Je met Args en premier ?
non, là tu as juste fais un truc un peu bordel
if ( args[0] && args[1] ) {
let args0 = args[0];
let args1 = args[1];
datah.SaveWelMessage(args[0],args[1]);
message.reply(`done !`)
}
et ensuite tu envoies 2 paramètres args0 et args 1
mais dans cette fonction tu récupères juste args
et tu refais le args0 et args1
Donc relis ton code il est pas bon
Au lieu de && je met , ?
Surtout, que ça envoie done mais
Le join dans data ne marche pas
Relis ton code je peux pas faire + clair
oui car ton ags n'existe pas
je suis au taff je peux checker après si tu veux
Ok :3 t’inquiète avec ce que tu m’as dit, je vais essayer de trouvé :3
Enzo, du coup j'ai fait ça : ```js
const Discord = require('discord.js');
const datah = require("../data.js");
module.exports.run = async(message, args, client) => {
if (message.member.hasPermission("ADMINISTRATOR")){
if ( args[2] && args[3] ) {
let args0 = args[0];
let args1 = args[1];
datah.SaveWelMessage(args[0],args[1]);
message.reply(done !)
} else {
message.channel.reply('');
}
}
};
module.exports.help = {
name : "bvn"
}
};
module.exports.help = {
name : "bvn"
}
log ton message voir ce qu'il y a dedans
no juste console.log( message ) avant ta condition
vu que t'as une erreur dans ta condition
Bonsoueireuh
Bonsoueireuh
Les gars... vous savez même pas faire des console.log
Si °^°
Si tu mets ton console log après l’erreur forcément qu’il sera pas lu
Faut le mettre avant ça paraît logique
Ah oui, je suis complètement débile sorry, je vois même pas pourquoi vous m'aidez. Je suis peine perdu
Oui.. Sincèrement je sais pas pourquoi je suis ton ami °^°
;-;
c quoi ton message handler? un custom?
Je sais pas
ayes, t'sais même pas avec quoi tu bosses 
donc donne le contenu du events/message.js
;-;
const Discord = require("discord.js");
const prefix = "a!";
module.exports = async(client, message) => {
if(message.author.bot) return;
if(message.channel.type === "dm") return;
if(!message.content.startsWith(prefix)) return;
const args = message.content.slice(prefix.length).trim().split(/ +/g);
const commands = args.shift();
const cmd = client.commands.get(commands);
if(!cmd) return;
cmd.run(client, message, args);
``` Quand je dis que je suis une peine perdu
C’est vrai ;-;
Mais si je mets args en dernier mon truc ne marche plus donc je fais quoi ?
google est ton ami 

Du coup, je l'ai remis comme à la base mais du coup. Ça ne marche pas, je comprend pas pourquoi ;-;
si tu remet le truc de tt a l'heure qui ne fonctionnait pas, tu as qu'a relire ce que je t'ai envoyé
@keen narwhal args doit être définis !
Mais comment je le définis ? ( Je suis un peu trop bête pour le comprendre )
bah en gros tu le mets la ou ta définis (client, message)
?
et au dessus tu mets
var args = la définition que tu veux
var args = args.join(' ').split('##') ?
( Le split parce que je veux pouvoir mettre un lien )
bon, quand tu console log client, message et args tu obtiens quoi ?

parce que ton soucis c’est le même depuis le début
Les paramètres sont soient manquants soient mauvais
du coup il vient de le mettre dans le bon sens si on regarde le screen 🤔
Oui mais le problème vient pas que de la
Ensuite ici il appelle une fonction save machin
Mais dans save machin il récupère pas du tout les mêmes paras
params*
dans ta fonction saveWelMessage tu devrais avoir du coup Alex (args1, args2)
Sauf que toi tu essayes de récupérer encore une fois (toto, tata, args)
Donc forcément qu’il est undefined
Bah en gros, je voulais que dans le fichier json propre au serveur, il y est le message de bienvenue cette par une commande comme ça ça ne se mêle pas entre eux
...
Montre ta fonction saveWelMessage
mmhm
Ah ok
pourquoi y a un await et un async, sont useless là 
Du coup stp soit logique
relis ton truc
@west plover on verra le reste après 
Tu définis args2, args3
pour ?
pour qu’ils soient grisés, c bo le gris 
dans ton datah.saveWel...(args[0], args[1])
Du coup voilà
mais supprime tes 2 variables
elles ne servent pas si tu passes directement args[2]
Fait
Tu as vérifié ce que tu reçois avant ?
un petit console.log(args[2]) et 3
pour voir si tu as bien ce que tu veux^^
Ok!
C'est comme ça qu'on procède, on test, on log chaque variable crée pour vérifier son contenu et vérifier ces conditions
on écrit pas dans le vide en se disant "ça marche"
Du coup la ton erreur désormais, c'est que dans saveWelMessage tu regardes si tu as un fichier guildid.json
sauf que guildId tu ne le récupères nul part
Yeo
envoie le aussi à l'appel de ta fonction
Montre ce que t'as fais
Mais Alex
tu crois que le code il va l'inventer ?
C'est pas parce que dans les () tu mets guildId qu'il va instantanément te créer le contenu
On parle de base du code là, un appel de fonction en passant des params, je peux pas t'aider en te donnant chaque bonne réponse.... c'est pas simple, avant de faire des bots il faut connaitre au minima le javascript
J'ai patch le guildId, mais ça revient à args is not defined
Du coup, il faut que je créer les var de args comme dans l'autre fichier ?
Il faut qu'a l'appel de ta fonction SaveWelMessage tu passes 3 params (guildId, args[2], args[3])
( J'ai mis tout en 0 et 1 c'est pour ça que j'ai mis en 0 et 1 en haut )
Pourquoi ne pas envoyé args en globalité 🤔
Alex les nom que tu mets importes "peu" c'est surtout l'ordre
si tu as
toto(1, 2, 3)
dans ta fonction toto tu peux avoir toto = (a, b, c) => {}
a = 1
b = 2
c = 3
Honnêtement je comprend pas ce que tu ne comprends pas
datah.SaveWelMessage(message.guild.id, args[2], args[3]) // ou passer juste args
l'appel de ta fonction
SaveWelMessage = async function (guildId, args1, args2) { // ou récupérer juste args et ensuite le split
if (....)
}
Non, du coup si ici tu fais ton args0 et args 1, dans l'appel de ta fonction envoie juste args
mais c'est trop bizarres un coup tu veux récupérer 0 et 1, puis ensuite 2 et 3
j'ai l'impression que tu sais pas vraiment ce que tu fais là
Non, le 2 et 3 c'est parce que je croyais déjà utiliser les 0 1 arguments et je me suis rendu compte que non alors j'ai remplacé par 0 et 1
Hello, Enzo ma condition est bonne non ? j'ai rien touchée à hier, et il me veut plus mon footer.text (je sors d'une grosse journée donc je risque de dire des conneries)
if (reaction._emoji.name === "❌" && isTicket && joueur_id === user.id) {
joueur_id = message.embeds[0].footer.text || null,
et si tu log ton joueur_id tu obtiens quoi
j'ai obtenu "2"
et dans ton embed tu as bien l'id pourtant ?
Mais attend
je l'ai plus maintenant
il m'envoie plus mon contenu, et il met plus le setParent
sur ta commande !ticket ?
yep
le console.log apparaît lors de l'event reactionAdd
donc vu qu'il envoie plus mon embed c'est compliqué :x
TypeError: Cannot read property 'footer' of undefined
Non mais le joueur_id est pas du tout au bon endroit
t'as pas compris ce que je t'ai dis hier ^^
Remonte, ça concernait la notion de scope
Tu veux que je remonte à quel niveau
Je te réexplique rapidement, c'est dans l'event messageReactionAdd que tu viens créer ta variable joueur_id
pas a l'éxécution de la commande
ahh
Enzo, aujourd'hui travaillé sur ça, m'a ouvert les yeux et je me suis rendu compte qu'en fait, je me reposais trop sur les autres ! Alors, je vais supprimé mon bot au complet et le recommencé avec ce que je sais faire !
Mais non ça sert à rien de delete ton travail
Juste focus toi +, essaye de chercher en mettant des log, mais surtout essayes de suivres des tutos pour avoir les bases en js
yep merci Enzo j'ai compris, ça fonctionne ^^
tu vas moins galérer
Mais si, parce que si je réfléchis bien, il n'y a pas grand chose qui m'appartient vraiments
Bah justement, mieux vaut suivre des tutos en commençant à 0 que déjà évolué
...
c'est toi qui vois
Du coup, tu as un tuto fr ou an ( Même si je préfère FR ) Pour apprendre le JS ?
Sinon tu as pleins de vidéos sur youtube, perso a l'école je regardai Traversy Media
mais c'est déjà un peu plus évolué
Les gars, poour mes perms de deny: allow: quand je crée mon channel, je peux restreindre l'accès à ${message.author} par exemple ? pour qu'il n'y est que lui + les grades au-dessus de lui qui puissent les voir ?
Le tuto un peu de js pour dynamiser le tout ?
deny: ['ADMINISTRATOR'],
allow: ['VIEW_CHANNEL', 'SEND_MESSAGES']
Je mets direct ma restrict dans l'array ?
J'ai plus trop le truc en tête mais tu peux faire un overwritePermissions je crois
je sais plus si tu peux le passer direct a la creation surement
j'vais voir ce que je peux trouver sur le wiki
https://discord.js.org/#/docs/main/stable/class/PermissionOverwrites j'ai look ça mais je vois pas trop comment restreindre sois pas grade ou un truc comme ça
je l'ai dans mon code déjà ça, mais comment l'adapter idk
vous avez pas d'idée?
Qu'est ce que tu veux ?
Que en gros, quand un user fais un ticket, il ait accès à voir son ticket et à écrire dedans
car de base il ne peut pas voir la catégorie
perm de grade ça
Tu stock ou l'id du Channel correspondant au user ?
channel.overwritePermissions(message.author.id, {view_channel: true})
Un truc comme ça Lartaxx
C'est ptet pas view channel
Fire, je stock seulement l'id du mec qui a fait le ticket dans mon event reactionAdd
Car Enzo m'avait expliqué que c'était global et pas par utilisateur, c'est à dire que si plusieurs personnes font un ticket, au moment où un joueur veut fermer son ticket, ça sera l'id du dernier user qui a fait le ticket
Lartaxx teste ça
dans mon event
yep à la place de quoi ?
const chan = message.guild.channels.create(`ticket-de-${message.author.username}`, {
type: 'text',
permissionOverwrites: [
{
id: message.author.id,
deny: ['ADMINISTRATOR'],
allow: ['VIEW_CHANNEL', 'SEND_MESSAGES']
},
],
}).then(chan => {
chan.send(
send_embed = new Discord.MessageEmbed()
.setColor("00ff00")
.addFields(
{name: "Joueur", value: `${message.author}`, inline: true},
{name: "Raison", value: `${raison}`, inline: true }
)
.setFooter(message.author.id)
).then(msg => msg.react(":x:"))
chan.setParent("715671104387154020")
})
oups
j'ai mis permissionOverwrites juste
Ah
Perso je fais tout le temps avec chan.overwritePermissions
Comme j'ai mis plus haut
okay je test
good comme ça ?
chan.overwritePermissions(message.author.id, {view_channel: true, send_messages: true,})
Nickel ça fonctionne ! Merci Burger ^^
Pas de soucis :)
Ah burger ^^
petit soucis
quand je fais un ticket, mon ami le voit, alors qu'il n'est pas censé le voir on est d'accord ?
Oui
Il faut lui enlever l'accès
Je suppose 🤔
Enfin enlever l'accès à guild.roles.everyone.id
euh dans le overwrite ?
okay
correct ?
chan.overwritePermissions(message.guild.roles.everyone.id, {view_channel: false, send_message: false})
A si ça doit être ça
message.guild.roles.everyone.setPermissions([]);
un truc comme ça ?
avec un tableau vide pour aucune permission
ou
channel.updateOverwrite(channel.guild.roles.everyone, { VIEW_CHANNEL: false });
j'ai enlevé le id
yep voilà
du coup
tous les grades au-dessus de lui le verront
donc faut mettre les grades vip, dev etc en dessous de everyone ?
Nono
So everyone n'a pas accès
Personne n'a accès, sauf si un rôle le contredis, mais dans ce channel
Okay donc là seulement l'user + le créateur du serveur peut le voir
Ok je vois, donc pour ajouter des perms à des grades je fais pareil
Oui mais pas avec le update
message.guild.roles.get('iddugrade').setPermissions(['SEND_MESSAGES', 'VIEW_CHANNEL']);
.cache devant je pense
message.guild.roles.cache.get('iddugrade').setPermissions(['SEND_MESSAGES', 'VIEW_CHANNEL']);
Mais pour ajouter des perms à des grades jsp
like this
bah là je set ses permissions dans chan si je fais comme ça =>
chan.message.guild.roles.get('iddugrade').setPermissions(['SEND_MESSAGES', 'VIEW_CHANNEL']);
no ?
faire en sorte que des grades précis aient des perms précises quand quelqu'un fait un ticket
Sur le channel ou en général sur le serveur ?
sur le channel crée pour un ticket
comme ça ?
chan.overwritePermissions(message.guild.roles.cache.get('716001100301598770'), {VIEW_CHANNEL: true, SEND_MESSAGES: true,})
ça fonctionne po xD
ah si, mais ça bug un peu
Ça ne commence pas bien x') J'ai une error tandis que j'ai rien fait ;-;
;-; throw err; je vais te bouffé
Screen
npm i discord.js --s
fait juste npm install discord.js
et après tu fais npm discord.js --version
ou tu check ton package.json
npm init
Hey ! J'aimerais supprimer tous les webhooks d'un channel via mon bot discord js, j'ai un code qui ne fonctionne pas donc inutile de vous le partager
Je suis en v11. 5. 1 si quelqu'un sait comment faire je suis preneur 🙂
( Et Oui j'ai cherché sur Google )
Pour info j'ai tenté des méthodes avec le fetchmessage mais c'est peut être pas la bonne
T'as check le guide de discord.js ?
Tu fetch tous les webhooks
ca te return une collection
dans tu peux fait une boucle pour les delete
et comment je fait cette boucle
j'ai tenté le foreach ça marche pas
Apparement le Fetchwebhooks.foreach n'est pas une fonction
???
tu dois faire lechannel.fetchMessage("id").then(msg => {
// get les webhooks du message etc
}).catch(console.error)
N’importe quoi
Ou la
C’est ton fetchMessage qui m’a embrouillé 😂
😂
Visiblement tu as juste à faire
const webhooks = await lechannel.fetchWebhooks()
for (webhook of webhooks) {
// Et la a toi de jouer, tu as la variable webhook qui correspond à un webhook par un webhook ce qui te permet d’en faire ce que tu veux 😊
}```
Merci je tente après 😉
Coucou, vous allez bien ?
Bon, du coup j'ai un petit probleme...
j'vais sur mon pc et je vous explique...
Voila, du coup :
J'ai crée un system de ticket mes j'aimerais que quand quelqu'un click sur la réaction ça réaction s'enleve automatiquement... j'ai fait quelque recherche mes tous ce que j'ai fait n'a pas marcher ! si quelqu'un peut m'aider...
Le script :
const Discord = require("discord.js")
module.exports.run = async (bot, message, args) => {
message.delete()
let TicketEmbed = new Discord.MessageEmbed()
.setColor("#cd3")
.setAuthor("Support du serveur")
.setDescription("Pour créer un ticket, appuyez sur la réaction")
.setFooter("Support du serveur")
message.channel.send(TicketEmbed).then(async msg => {
msg.react("🎟️")
})
}
module.exports.help = {
name: "SetupTicket"
}
Tu dois faire un msg.react.resolve("\🎟️").users.remove(user.id)
User doit être définis bien évidemment
Hello, j'ai un petit problème, sur le overWritePermissions, en fait j'enlève l'accès aux everyone de voir le ticket d'une personne, puis ensuite je permet au créateur du message de voir le message et d'y écrire et ensuite j'autorisé à un grade les mêmes accès, ça marche bien mais au moment de test il y a un problème.
1er ticket : (Mon ami pour test) est everyone et ne voit pas mon ticket donc c'est good
2ème ticket : (Je met mon ami modérateur) et il voit mon ticket donc c'est good
3ème ticket : (J'enlève mon ami de modérateur donc il devient everyone) Je fais mon ticket et il y a accès alors qu'il n'est pas censé y avoir accès
Vous avez des idées ?
chan.updateOverwrite(message.guild.roles.everyone, {VIEW_CHANNEL: false, SEND_MESSAGES: false})
chan.overwritePermissions(message.author.id, {VIEW_CHANNEL: true, SEND_MESSAGES: true,})
chan.overwritePermissions(message.guild.roles.cache.get('716001100301598770'), {VIEW_CHANNEL: true, SEND_MESSAGES: true,})
Essaie de faire un refresh de l’évent voir genre un refresh automatique
Il y a accès, mais s'il change de channel non
Normalement
Ou s'il redémarre son discord
Ouais mais du coup ça peut être relou
Bah tu l’envoies vers un autre Channel ..
de ?
non mais c'est que quand il est plus censé le voir il le voit donc c'est chiant quoi
Bah c'est discord qui fait ça
Pas le bot
Et pis bon, ça arrive pas souvent de faire un ticket, pis retirer un modérateur après
ouais c’est sûr
ah si ça fonctionne c'est bon ^^
Ok
Vous avez le param pour voir les anciens messages dans les overwritePermissions je trouve pas :x
vscode le trouve pas
moi oui ^^, SEND_MESSSAGES etc il le trouve
mais je trouve pas la liste des permissions à mettre dedans
je test
Sinon t'as lz liste des perms sur la doc
Integrate your service with Discord — whether it's a bot or a game or whatever your wildest imagination can come up with.
READ_MESSAGE_HISTORY
elle fait buguer les perms avant elle :x
chan.overwritePermissions(message.author.id, {VIEW_CHANNEL: true, SEND_MESSAGES: true, READ_MESSAGE_HISTORY: true})
Elle fait buguer les 2 autres
j'ai essayé de l'enlever ça fonctionne mais wtf
cette perm m'annule les deux c'est grave relou :x
Met les séparément pour voir
je test
marche po
chan.updateOverwrite(message.guild.roles.everyone, {VIEW_CHANNEL: false, SEND_MESSAGES: false})
chan.overwritePermissions(message.author.id, {VIEW_CHANNEL: true, SEND_MESSAGES: true})
chan.overwritePermissions(message.author.id, {READ_MESSAGE_HISTORY: true})
chan.overwritePermissions(message.guild.roles.cache.get('716001100301598770'), {VIEW_CHANNEL: true, SEND_MESSAGES: true})
chan.setParent("716388235076436058")
Les perms de la catégorie sont de bases
Sinon
Tu règle la catégorie sur ce que tu veux
Donc everyone peut pas lire etc
Et tu fais channel.lockPermissions()
Pis après tu mets l'accès au mec qui a fait le ticket
Pis voilà
donc j'enlève le update et les overwrite à part pour le grade get
donc
chan.lockPermissions(message.author.id, {VIEW_CHANNEL: true, SEND_MESSAGES: true, READ_MESSAGE_HISTORY: true})
chan.setParent("716388235076436058")µ
?
mais ça règlera rien
Je ne suit pas sûr, j'ai pas test et je ne sait pas si c'est possible mais tu peux améliorer ton code :
const channelPerm = {
"message.guild.roles.everyone": {
VIEW_CHANNEL: false,
SEND_MESSAGES: false
},
"message.author.id": {
VIEW_CHANNEL: true,
SEND_MESSAGES: true,
READ_MESSAGE_HISTORY: true
}
}
channelPerm.forEach(role => {
role.forEach(perm => {
chan.overwritePermissions(role, perm)
});
});```
Le lockpermissions lui permet d'éviter la foreach
je mets rien dans le lockpermissions du coup
Na rien
Mais c'est censé fonctionnée juste
chan.overwritePermissions(message.author.id, {VIEW_CHANNEL: true, SEND_MESSAGES: true, READ_MESSAGE_HISTORY: true})```
C'est juste que sa categorie rewrite
quand je mets le read_message_history, l'utilisateur n'a même plus accès à voir son channel
Lartaxx tu l'as mis après le setParent ?
le setParent est en dernier
Mets le en premier
je fais ça
chan.setParent("716388235076436058")
chan.updateOverwrite(message.guild.roles.everyone, {VIEW_CHANNEL: false, SEND_MESSAGES: false})
chan.overwritePermissions(message.author.id, {VIEW_CHANNEL: true, SEND_MESSAGES: true, READ_MESSAGE_HISTORY: true})
chan.overwritePermissions(message.guild.roles.cache.get('716001100301598770'), {VIEW_CHANNEL: true, SEND_MESSAGES: true})
pareil :x
Fais ce que je t'ai dis 🤷♂️
Je crois que overwritePermissions remplace toutes les perms par les nouvelles
j'ai mis update pour toutes
oui par pour everyone
options.parent
Tu l'a l'option
Donc arrête de setParent après avoir crée le channel
ça revient au même no
et je le mets où ? après type ?
Actuellement toi, il le définie après la création
yep
Att
y a un temps
envoie comment tu crée le channel
const chan = message.guild.channels.create(`ticket-de-${message.author.username}`, {
type: 'text',
}).then(chan => {
chan.send(
send_embed = new Discord.MessageEmbed()
.setColor("00ff00")
.setTitle("Réagissez avec l'émoji pour fermer votre ticket.")
.addFields(
{name: "Joueur", value: `${message.author}`, inline: true},
{name: "Raison", value: `${raison}`, inline: true }
)
.setFooter(message.author.id)
).then(msg => msg.react("❌"))
chan.setParent("716388235076436058")
chan.overwritePermissions(message.guild.roles.everyone, {VIEW_CHANNEL: false, SEND_MESSAGES: false})
chan.updateOverwrite(message.author.id, {VIEW_CHANNEL: true, SEND_MESSAGES: true, READ_MESSAGE_HISTORY: true})
chan.updateOverwrite(message.guild.roles.cache.get('716001100301598770'), {VIEW_CHANNEL: true, SEND_MESSAGES: true})
})
donc après type
parent c'est string ou int ?
Je te le fait att
const chan = message.guild.channels.create(`ticket-de-${message.author.username}`, {
type: 'text',
parent: 716388235076436058
}).then(chan => {
chan.send(
send_embed = new Discord.MessageEmbed()
.setColor("00ff00")
.setTitle("Réagissez avec l'émoji pour fermer votre ticket.")
.addFields(
{ name: "Joueur", value: message.author, inline: true },
{ name: "Raison", value: raison, inline: true }
)
.setFooter(message.author.id)
).then(msg => msg.react("❌"))
chan.overwritePermissions(message.guild.roles.everyone, {
VIEW_CHANNEL: false,
SEND_MESSAGES: false
})
chan.updateOverwrite(message.author.id, {
VIEW_CHANNEL: true,
SEND_MESSAGES: true,
READ_MESSAGE_HISTORY: true
})
chan.updateOverwrite(message.guild.roles.cache.get('716001100301598770'), {
VIEW_CHANNEL: true,
SEND_MESSAGES: true
})
})```
Un peu mieux structurée
parent c'est un string vu que c'est snowflake
^.^
var guild = message.guild;
var parent = guild.parent.cache.get(716388235076436058);
const chan = guild.channels.create(`ticket-de-${message.author.username}`, {
type: 'text',
parent: parent
}).then(chan => {
chan.send(
send_embed = new Discord.MessageEmbed()
.setColor("00ff00")
.setTitle("Réagissez avec l'émoji pour fermer votre ticket.")
.addFields(
{ name: "Joueur", value: message.author, inline: true },
{ name: "Raison", value: raison, inline: true }
)
.setFooter(message.author.id)
).then(msg => msg.react("❌"))
chan.overwritePermissions(guild.roles.everyone, {
VIEW_CHANNEL: false,
SEND_MESSAGES: false
})
chan.updateOverwrite(message.author.id, {
VIEW_CHANNEL: true,
SEND_MESSAGES: true,
READ_MESSAGE_HISTORY: true
})
chan.updateOverwrite(guild.roles.cache.get('716001100301598770'), {
VIEW_CHANNEL: true,
SEND_MESSAGES: true
})
})```
Et si tu veux un peu te compliqué la vie pour plus propre, try
var guild = message.guild;
var parent = guild.parent.cache.get(716388235076436058);
const chan = guild.channels.create(`ticket-de-${message.author.username}`, {
type: 'text',
parent: parent
}).then(chan => {
chan.send(
send_embed = new Discord.MessageEmbed()
.setColor("00ff00")
.setTitle("Réagissez avec l'émoji pour fermer votre ticket.")
.addFields(
{ name: "Joueur", value: message.author, inline: true },
{ name: "Raison", value: raison, inline: true }
)
.setFooter(message.author.id)
).then(msg => msg.react("❌"))
var channelPerm = [
guild.roles.everyone = {
VIEW_CHANNEL: false,
SEND_MESSAGES: false
},
message.author.id = {
VIEW_CHANNEL: true,
SEND_MESSAGES: true,
READ_MESSAGE_HISTORY: true
}
]
channelPerm.forEach(role => {
role.forEach(perm => {
chan.overwritePermissions(role, perm)
});
});
})```
Hello, ça m'avais jamais fais ça, mais je comprends pas pourquoi cette erreur apparaît
TypeError: Cannot read property 'text' of null
if (command === "vote") {
const vote = new Discord.MessageEmbed()
.setColor("#00ff00")
.setDescription("Test")
.setTimestamp();
message.channel.send(vote).then(msg => {msg.react("🇦"); msg.react("🇧");})
}
TypeError: Cannot read property 'text' of null
at Client.<anonymous> (E:\wamp64\www\suncoast_admin_bot\index.js:252:48)
at Client.emit (events.js:210:5)
at MessageReactionAdd.handle (E:\wamp64\www\suncoast_admin_bot\node_modules\discord.js\src\client\actions\MessageReactionAdd.js:44:17)
at Object.module.exports [as MESSAGE_REACTION_ADD] (E:\wamp64\www\suncoast_admin_bot\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_REACTION_ADD.js:4:37)
at WebSocketManager.handlePacket (E:\wamp64\www\suncoast_admin_bot\node_modules\discord.js\src\client\websocket\WebSocketManager.js:386:31)
at WebSocketShard.onPacket (E:\wamp64\www\suncoast_admin_bot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:436:22)
at WebSocketShard.onMessage (E:\wamp64\www\suncoast_admin_bot\node_modules\discord.js\src\client\websocket\WebSocketShard.js:293:10)
at WebSocket.onMessage (E:\wamp64\www\suncoast_admin_bot\node_modules\ws\lib\event-target.js:125:16)
at WebSocket.emit (events.js:210:5)
at Receiver.receiverOnMessage (E:\wamp64\www\suncoast_admin_bot\node_modules\ws\lib\websocket.js:800:20)
ça ne me donne pas quel ligne
bah si ⭕o sinon je pourrais pas trop le faire :x, je suis juste malade comme un chien donc j'ai pas mes neurones en places :x
moi ?
oui
Umhh
Bah si
Car ton message.embeds[0] ne dois pas être définit
Et du coup il le remplace par null
Enfin non il le remplace mais il n'existe même pas
Donc forcément il te mêt une erreur
si c'pour l'id de l'uti qui fais la commande ticket
Lartaxx vérifie juste avec si message.embeds[0] existe
je le log ouais
if (message && message.embeds[0] && message.embeds[0].footer....
pour être sur qu'il éxiste
Yep
je fais ça après merci ^^
Tu peux aussi tester son appartenance à un type précis par exemple
Avec typeof
Ça évite de faire des verifs sur footer etc
Tu peux aussi stocké dans un json les id des user par rapport au Channel créé en Object pour t'éviter de mettre l'id de la personne dans l'embed ou dans le nom du Channel
Comme ça tu pourras aussi crée des id
En récupérant juste la length de ton object
- 1
Le stocker ou ?
Il va pas créer un json pour un ticket qui va durer 5 minutes c’est pas super utile je trouve
Stocker l’ID dans le footer ira plus vite et ça risque pas grand chose comme dans les #suggestions
Ouais mais question de propreté et d'apprentissage c'est toujours mieux
Bah propreté je vois pas où, apprentissage pourquoi pas
Tu vas rajouter des lignes à écrire dans json, vérifier si il existe alors que là tu regarde juste le message
Ouai, mais moi j'ai tellement pris l'habitude au json que sa en devient une habitude
J'EN MET PARTOUT 😂
Le json c'est pas fait pour stocker
Oe mais quand t'es habitué à ça bah tu fais que de ça
J'ai pas dis le contraire 🤷♂️
Surtout que quand ca va se corrompre
T'auras clairement le seum
Surtout pour les gros bots
Et ça te limite aussi dans ta façon d'héberger le bot, tu dois absolument être autorisé à écrire dans le répertoire du bot
Hors c'est pas censé être le cas
Comment mettre un temps à la suppression d'un message
<Message>.delete({ timeout: <TimeInMS> })```
merci
Salut es ce qu'on pourrait m'aider a mettre des commandes personalisé a mon bot svp
🤔 tu as de tutos sur internet pour apprendre à faire ça, tu as aussi la documentation, qui est un peut plus compliqué si tu n'apprends que par le biais de celle-ci, mais si tu apprends seulement grâce à ça, tu vas prendre énormément d'expérience, en très peu de temps
Hello, qu'est ce qui a été remplacé à la place de .find (pour vérifier la value d'un emoji.name) pour ensuite la count ? Merci ^^
Tu veux récupérer un emote, et avoir son count ?
yes, du genre message.reaction.find(reaction => reaction.emoji.name === "tata").count
.size
à la place de ?
Ui .size et pour le trouver je te dis ça attend
à la place de count ?
oui
mais dans le wiki .size n'y est pas
ah :x
mais .size marche pour les collections
C'est du JS le .size non ?
yep
Normal qu'il y ait pas alors 🤷♂️
pourtant c'est du js pur
je capte pas pourquoi ils l'ont enlevés
🤷
A mais vous parlez du wiki mdn je pensais que vous parliez de la doc djs :smart:
on parle de la doc djs
oui doc djs
A
mais si .size n'y est pas, pourquoi find y est ?
🤷♂️
car les deux reviennent à du JS pur
.size oui find non
message.reaction.find(reaction => reaction.emoji.name === "❌").count, me dis que find n'existe pas donc :x
reactions avec un s
ensuite, tu dois utiliser le cache
et ensuite le find marchera
et tu devras faire un .size
ah :x
J'ai vu, mais resolve j'ai jamais use, et j'ai pas trouvé d'exemples donc je peux pas imaginer la syntaxe
Comme ça on est ok ?
message.reactions.cache.find(reaction => reaction.emoji.name === "✅").size}
Oui mais car la ligne est comme ça ^^
{name: `${winner.emoji}`, value: `${message.reactions.cache.find(reaction => reaction.emoji.name === "✅").size}`, inline: false},
et le .size ne fonctionne pas
je test count on sait jamais
non plus xD
le find est bon
yep
juste le .size
2020-05-31T14:04:12.449169+00:00 app[worker.1]: (node:4) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'count' of undefined
et size aussi
j'ai juste test count aussi
t'as essayer de voir ce que ca t'envoyais sans le .size ?
Il faut qu'elle soit définit
Ouais, mais elle est définis de base dans discord.js non ?
Sinon doit y avoir une façon plus simple de le faire, mais mes émojis sont dans un array donc un ```js
const winner = reponse.emojis[0].length;
Pourrait marcher vu que length => count nombre d'entrées dans l'array
mais ça me mettra 1 no ?
ça comptera pas les réactions
const winner = reponse.emojis[0].length;```ca t'envoie tous les emojis là
J'ai un p'tit problème en gros quand je fais cette commande >>help bah ça delete automatiquement le message quand la réeaction \❌ est ajouté pourtant, je ne vois pas du tout d'où l'erreur viens !
const Discord = require("discord.js");
module.exports = async(client, messageReaction, user) => {
const message = messageReaction.message;
const member = message.guild.members.cache.get(user.id);
const emoji = messageReaction.emoji.name;
if(["🔒", "💬", "❌"].includes(emoji)) {
switch (emoji) {
case "🔒":
var W = new Discord.MessageEmbed()
.setColor(`#59ed45`)
.setTitle(`Liste de commande d'α!eχ вøт !`)
.setDescription("***`Commandes :`*** \n \n `clear :` Vous permets de supprimer un certain nombre de message dans le channel où vous effectuez la commande ! \n \n `kick :` Vous permet de kick la personne que vous avez mentionner ! \n \n `embed :` Vous permet d'envoyer un message de type embed avec les arguments de votre choix ! \n \n **`Son mode d'emplois :`** >>embed <hexcolor> ## <tilte> ## <description> ## <image> \n \n `prefix :` Vous permet de voir le préfix accordé au bot ! \n \n `talk :` Vous permet de faire en sorte que le bot envoit un message !")
.setAuthor(message.author.username)
.setFooter(`A!ex Bot Help !`, message.author.displayAvatarURL())
.setTimestamp()
member.send(W)
break;
}
switch (emoji) {
case "💬":
break;
}
switch (emoji) {
case "❌":
var E = new Discord.MessageEmbed()
.setColor(`#ed4545`)
.setTitle(`Commande annuler`)
.setDescription("❌ | La commande a bien été annuler !")
.setAuthor(message.author.username)
.setFooter(`A!ex Bot Help !`, message.author.displayAvatarURL())
.setTimestamp()
message.channel.send(E).then(message.channel.bulkDelete(1))
break;
}
}
}
Toujours undefined xDDDD
RIP
je vois pas comment faire mdr
De ?
Compter le nombre de réactions des émojis sur un embed
sachant qu'ils sont dans un array
et que j'use une lib pour mon système de vote
Bah quand je fais help et que la réaction x est ajouté par le bot, le message se delete automatiquement sauf que ça devrait pas ;-;
j'ai look déjà alex
Ah merde
mais il fait == alors que je veux vérif la value déjà :x
Bah quand je fais help et que la réaction x est ajouté par le bot, le message se delete automatiquement sauf que ça devrait pas ;-;
y'as quoi qui se delete automatiquement là ?
fait :
message.channel.bulkDelete(1).then(() => message.channel.send(E))
Att je te prend un screen
essaye ce que je t'ai envoyé
bah c'est ce que tu veux ?
Oui, mais seulement quand on appuie sur la réaction x pas avant ;-;
bah c'est normal 
fait :
message.channel.send(E).then(() => message.delete())```
Marche toujours pas ;-;
module.exports = async(client, messageReaction, user) => {
const message = messageReaction.message;
const member = message.guild.members.cache.get(user.id);
const emoji = messageReaction.emoji.name;
if(message.guild.member(message.author)["🔒", "💬", "❌"].includes(emoji)) {
switch (emoji) {
case "🔒":
var W = new Discord.MessageEmbed()
.setColor(`#59ed45`)
.setTitle(`Liste de commande d'α!eχ вøт !`)
.setDescription("***`Commandes :`*** \n \n `clear :` Vous permets de supprimer un certain nombre de message dans le channel où vous effectuez la commande ! \n \n `kick :` Vous permet de kick la personne que vous avez mentionner ! \n \n `embed :` Vous permet d'envoyer un message de type embed avec les arguments de votre choix ! \n \n **`Son mode d'emplois :`** >>embed <hexcolor> ## <tilte> ## <description> ## <image> \n \n `prefix :` Vous permet de voir le préfix accordé au bot ! \n \n `talk :` Vous permet de faire en sorte que le bot envoit un message !")
.setAuthor(message.author.username)
.setFooter(`A!ex Bot Help !`, message.author.displayAvatarURL())
.setTimestamp()
member.send(W)
break;
}
switch (emoji) {
case "💬":
break;
}
switch (emoji) {
case "❌":
var E = new Discord.MessageEmbed()
.setColor(`#ed4545`)
.setTitle(`Commande annuler`)
.setDescription("❌ | La commande a bien été annuler !")
.setAuthor(message.author.username)
.setFooter(`A!ex Bot Help !`, message.author.displayAvatarURL())
.setTimestamp()
message.channel.send(E).then(() => message.delete())
break;
}
}
}
Voilà le code
Mais du coup genre, ça me met includes is not defined
https://cdn.discordapp.com/attachments/617677968474636298/716664246573990019/unknown.png -> ca veux dire que tu peux pas mp la personne
Yep, normalement c’est bon, mais pourtant on peut ;-;
Yep, mais genre c’est pas supposé effacé directement si ?
Mais je vais faire en sorte, que si on peut pas, il envoie un message disant qu’il peut pas
Pas d'idée pour mon pb du coup :x ?
Nope ;-;
Mais du coup includes is not defined
Genre...
Je veux que se sois seulement le mec qui a fait >>help qui puisse recevoir le message


