#javascript-typescript

1 messages · Page 42 of 1

sand shore
#

Non

#

c'est bien

keen narwhal
#

Je préfaire en js , c'est plus simple

sand shore
#

Le lua

#

aussi

#

si tu est plus à l'aise

#

après vu que tu fais only du lua gmod (enfin j'imagine), j'imagine que tu connais pas les fonctions de LuaJT de type io et auter

#

autre *

keen narwhal
#

Non , je connais pas

sand shore
#

Si t'es à l'aise avec le lua utilise le

#

il est simple d'utilisation

#

y'a celle de guthen

#

aussi

keen narwhal
#

Je trouve ça plus dur

sand shore
#

mais je sais pas elle donne quoi

west plover
#

si il préfère le js, il utilise le js oiseau_pas_content

#

oulà la mienne?

#

jamais fini harold

sand shore
keen narwhal
#

J'ai commencé avec le js donc je vais sans doute finir avec le js

west plover
#

gateway de merde kappo

sand shore
#

mdr

spring dock
#

@west plover une lib discord , toi?

sand shore
#

OOF

spring dock
#

ah ton truc php éclaté au sol?

sand shore
#

sa va te faire

#

OOF

west plover
#

nan nan

spring dock
#

non mais c’était juste une question

west plover
#

en lua

sand shore
#

go cassé un tête là

spring dock
#

ah ok

#

mais pourquoi refaire la roue ?

west plover
#

mon truc php c’t pour des webhooks

spring dock
#

oui c’est pour ça j’ai pas compris

west plover
#

parce que faut bien refaire la roue pour apprendre oiseau_pas_content

spring dock
#

mais

sand shore
#

c'est bon je suis mort

west plover
#

(là c t l’apprentissage de Luvit + doc Discord)

spring dock
#

j’refait pas la roue et j’apprends perso

#

c’est quoi luvit?

west plover
#

et puis si g envie de refaire la roue, kesk’y m’en empêche oiseau_pas_content

sand shore
#

Genre la lib pour faire du lua sur discord

west plover
#

parce que love leur requêtes http sont fuck up

sand shore
spring dock
#

@west plover bah rien t’en empêche, juste je trouve ça inutile

west plover
#

bah écoute j’aime bien refaire des trucs à ma façon/expérimenter/faire des défis, etc. 🤔

spring dock
#

hm why not

slim anvil
#

!rule 2

ancient sonnetBOT
#

:two: Respectez le but des channels.
Si tu as un doute pour savoir où poster ton message, demande le nous dans #general :ok_hand:

slim anvil
keen narwhal
#
client.on("message", function (message, args, tools, async) {
    if (!message.guild) return
    const arguments = message.content.slice(prefix.length).trim().split(/ +/g)
    const command = arguments.shift().toLowerCase()
    // console.log(arguments, command)

    const reason = arguments.join(' ')
    if (command === `sondage`) {
    if (!reason) return message.reply('Tu dois préciser la question!')
        let embed = new Discord.RichEmbed()
        .setColor(0xF08080)
        .setFooter('Réagissez pour voter')
        .setDescription(arguments.join(' '))
        .setTitle(`Sondage crée par ${message.author.username}`);
        
        let msg = message.channel.send(embed);
       msg.react(':white_check_mark:');
       msg.react(':x:');
    
        message.delete({timeout: 1000});  
    }
}) 

Petit soucis avec le msg.react , je peux pas mettre les await sinons il me mais en tant quant

slim anvil
#

Parce que le async ne se met pas en tant que paramètre de fonction mais devant la fonction

keen narwhal
#

Comment régler se problème alors ?

slim anvil
#

client.on(‘message’, async (message, args, tools ) => {...

#

en reprenant ton code

keen narwhal
#

Oh ok , donc je devrais mettre de await ? ou pas

slim anvil
#

oui tu mets un await devant le message.channel.send

#

let msg = await message....

keen narwhal
#

Ok , je te remerci de ton aide x)

slim anvil
#

Car du coup là il veut react a un message pas encore existant

keen narwhal
#

Ok

#

** let msg = await message.channel.send(embed);
await msg.react('✅');
await msg.react('❌');

    message.delete({timeout: 1000});  
}

})**

slim anvil
#

Juste un await devant le message.channel.send

#

Pas besoin sur les autres

#

tu t’en fous d’attendre qu’il y est le react en soit

keen narwhal
#

Mais même supr sa me donne pas le ✅ et ❌

slim anvil
#

screen ton code

#

Sur tel c’est vraiment galère de voir

keen narwhal
#

Ok

slim anvil
#

ok réglé en mp

keen narwhal
#

.then

#

let msg = await message.channel.send(embed);
await msg.react('✅');
.then(() => message.react('❌'))

    message.delete(1000);  
}

})

slim anvil
#

Aucun intérêt de mettre le await sur le msg.reqct et encore moins de .then() ensuite

#

Tu await juste l’envoie du message pour être sûr qu’il ira pas react tant que le message n’est pas envoyé

#

Ensuite ce sera ok il peut react, sans await ni rien

west plover
#

await c pour stoper l’execution du code juste qu’à temps que le Promise then ou catch?

slim anvil
#

en gros oui, il continuera pas la suite du code

west plover
#

du coup ça fonctionne que sur les Promise

slim anvil
#

Donc pas besoin de await un msg.react on s’en fou d’attendre que le react soit fait

#

Oui

west plover
#

en soi tu await le react pour que ce soit en ordre

#

parce que sinon tu peux avoir ❌ et ensuite ✅

slim anvil
#

oui à la limite c’est pas faux

west plover
#

au lieu de ✅ et ❌

slim anvil
#

Mais await + .then faut m’expliquer

west plover
#

#

surtout que ça te renvoie la valeur récupérée par le then/catch?

#

donc c pas un promise

slim anvil
#

quand tu await oui

west plover
#

(et en plus il a fermé la ligne avec ; donc tu peux pas .then dessus)

slim anvil
#

oui bon là tu chipotes ça arrive les erreurs de syntaxe harold

west plover
#

(a moins de msg.then)

spring dock
#

arrête de chipolata

west plover
#

manfou kappo

spring dock
slim anvil
#

Il a envoyer le message 3h43 tu vas pas l’emmerder avec un ; mistake

#

!rule 2

ancient sonnetBOT
#

:two: Respectez le but des channels.
Si tu as un doute pour savoir où poster ton message, demande le nous dans #general :slight_smile:

west plover
#

si kappo

#

il avait qu’à pas être insomniaque pardon

zealous palm
#

Hey, comment faire un bot avec le roll un lancement de dés entre 0 et 100 merci de l'aide

hazy mirage
#

math.random kappa

zealous palm
#

juste cette ligne car je débute et c'est un peu galère 😄

slim anvil
#
Math.floor(Math.random() * 100)
``` tiens kdo
#

normalement c'est ok 🤔

zealous palm
#

merci 😉

west plover
#

oé c bon Enzo

#

t un bon jseur harold

slim anvil
#

Comme si j’avais besoin de ta validation tocar harold

#

Si je te pose une question je te fais bug kappo

spring dock
#

@slim anvil dois-je te rappeler que qui fait le malin tombe dans le ravin?

slim anvil
#

ses vraies

west plover
#

normalement c'est ok 🤔

#

tu doutais de ta réponse harold

#

donc g walidé

slim anvil
#

Faut toujours douter comme ça si t’oublies un truc tu dis « ah oui » kappo

#

technique professionnel ça

night star
#

Salut je n'arrive pas à récupérer le channelID de la salle vocal ou est connecté le bot, je peux faire comment svp ? :/

queen ocean
#

Avec quel lib ?

night star
#

discord.js

queen ocean
night star
#

oui non mais d'accord je les aussi la doc

queen ocean
#

bah xD

night star
#

mais je trouve pas comment recupérer le id du channel :/

queen ocean
#

Te faut quoi de plus

#

bah voiceChannelID est l'id du channel

night star
#

mais le voiceChannelID je le pointe comment celui du bot :/

queen ocean
#

donc ton_objet.voiceChannelID

night star
#

pour celui qui met un message c'est ceci message.member.voiceChannelID mais pour celui du bot je trouve pas comment lui pointer ça

queen ocean
#

Si tu es dans un event message tu peux faire msg.client pour avoir ton bot (en partant du principe que msg est déclaré)

night star
#

non mais je les deja ça je sais le pointer le bot

#

mais depuis son objet y a pas de voiceChannelID

#

j'ai essayé en me basant sur message.guild.voiceConnection mais pareil il ma pas l'air de me trouver le id du channel

west plover
keen narwhal
#

Client.voiceChannelID?

west plover
#

client.voiceConnections.get( msg.guild.id )

night star
#

non mais la doc je la connais je suis dessus hein c'est pas ça le problème lol

queen ocean
#

mais depuis son objet y a pas de voiceChannelID
@night star Tu as bien un GuildMember ?

night star
#

bah non je le cherche justement lui le guildmember

queen ocean
#

bah tu as que objet alors oo

#

Vu que tu dis que tu as le bot oO

night star
#

je crois que vous comprenez pas ou je bloque 😄

keen narwhal
#

Client.voice.channel

#

C'est la variable qui va varié par rapport a où est le bot

west plover
#

Oé on comprend pas ce qu’y ne vas pas oiseau_pas_content

keen narwhal
#

Ouai

queen ocean
#

Client.voice.channel
@keen narwhal .voice existe pas sur un client c'est voiceConnections 👀

keen narwhal
#

Ah oups

queen ocean
#

je crois que vous comprenez pas ou je bloque 😄
@night star Go donner un cas concret avec plus de détail et ton code actuel hein

west plover
#

on a pas de contexte oiseau_pas_content

keen narwhal
#

Client.voiceChannel

night star
#

si je ne suis pas dans le meme salon vocal que le bot alors je ne peux pas faire une commande

#

pour ça je dois comparer le channelid vocal d'ou je suis à celui ou est le bot

west plover
#

night star
#

le mien j'ai trouvé ça c'est bon

west plover
#

night star
#

mais pour celui du bot je trouve pas

west plover
#

Bah client.voiceConnections.get( msg.guild.id ) oiseau_pas_content

night star
#

daccord merci 😉

west plover
#

no problem harold

boreal nacelle
marsh drift
#

Je serais tenté de dire que préparer des requêtes avec des :variable ne fonctionne pas avec ta librairie vue que à une erreur de syntaxe, mais je fais pas de node donc je vais pas m'avancer

keen narwhal
#

Le rapport de log d'un de mes bots ....

#

Je comprend rien ...

marsh drift
#

tu gère les timeout ?

keen narwhal
#

Sa n'a pas de rapport avec mon code car c'est depuis que je suis passé sur une autre machine que sa me fait ça :/

errant rampart
#

getaddrinfo EAI_AGAIN discordapp.com
Tu aurais pas des problèmes pour communiquer avec l'exterieur depuis ta machine ?

#

ping discordapp.com

#

Ou à défaut un problème DNS

keen narwhal
#

Tous les autres bots marche :/

#

Que ce bot la qui crash

#

Il n'a pas l'air de recrash pour le moment

errant rampart
#

Pour moi il a perdu la synchro avec discordapp.com, à voir si t'as pas des instabilités ... IDK

keen narwhal
#

Yes

errant rampart
#

Après si ça c'est produit une seule fois, considère ça comme un incident isolé

keen narwhal
#

Ils sont héberger chez moi mes ma co et plus que stable

#

Yes

keen narwhal
#

Rip

#

:/

#
(node:423) UnhandledPromiseRejectionWarning: Error: getaddrinfo EAI_AGAIN discordapp.com
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:64:26)
(node:423) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag `--unhandled-rejections=strict` (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 2)
(node:423) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.```
#

C'est juste un Warn

#

mais il ne crash pas là

errant rampart
#

C'est donc bien un problème avec tes serveurs DNS

keen narwhal
#

J'ai pas touché a mes DNS :/

errant rampart
keen narwhal
#

C'est ceux de base avec ma box

#

ou sinon c'est discord qui font des modifs ?

#

A chaud ?

errant rampart
#

Non 😂 Impossible

keen narwhal
#

Bah umh

#

Je dirais pas ça a ta place

#

Il y a déjà eu des moments ou discord était en PLS violent

#

2H de PLS

errant rampart
#

Des modifs à chaud non, et dans tous les cas ça n'affecte pas les DNS. Pour le coup ça vient de chez toi puisque c'est bien toi qui n'arrive pas à résoudre des noms de domaine en adresse IP. Essaie de te mettre en IP statique et spécifier 1.1.1.1 et 1.0.0.1 comme DNS, si t'es en ipv6 2606:4700:4700::1111 et 2606:4700:4700::1001

keen narwhal
#

J'vai désactivé l'ipv6

#

C'est useless

#

je l'avais activé pour try mais sa ne sert a rien pour le moment

timid loom
#

On est arrivé à court d'adresse ipv4 donc c'est tout sauf useless l'ipv6 🤔
Il faut faire la transition et s'habituer à l'utiliser, encourager les FAI etc

keen narwhal
#

Tous les serveurs n'accepte pas les IPv6

#

Et au lieux d'accélérer la vitesse ça la réduit

timid loom
#

je sais, mais il faut pousser les gens à le faire! et ça ne la réduit pas nécessairement

keen narwhal
#

je l'avais activé pour try mais sa ne sert a rien pour le moment
@keen narwhal

timid loom
#

le sujet est large et on pourrait en parler autrement

keen narwhal
#

pour le moment

keen narwhal
#

PM2 > Screen pour les bots discord 😉

slim anvil
#

Docker > PM2 kappa

errant rampart
#

pm2-runtime + docker > pm2

keen narwhal
#

xD

spring dock
#

rien > all

keen narwhal
#

Linux > Windob

errant rampart
#

C'est pas objectif comme avis, c'est 2 finalités totalement différentes

#

Mais bon c'est un débat vu et revu

spring dock
#

rien et all? je suis entièrement d’accord kappa PepeClown

keen narwhal
#

${message.guild.createdAt} Sa me donne les informations en anglais , il y a un moyen de mettre en français ?

#

Ok merci

keen narwhal
#

Bonjour, j'ai voulus faire la commande /yt qui marche parfaitement bien mais le seul problème , c'est que j'ai mit un message.author.avatarURL mais je voudrais l'avatar du fondateur du serveur.

keen narwhal
#

Guild.author ?

errant rampart
#

Essai avec message.guild.owner.user.displayAvatarURL

keen narwhal
#

Ou sinon message.guild.owner.user.avatarURL

keen narwhal
#

@errant rampart @timid loom Je n'est plus d'erreurs depuis que je tourne sous pm2

#

Etrange 🤔

timid loom
errant rampart
keen narwhal
#

pm2 as vraiment changé ma vie

#

j'ai perdu 50kg grâce a pm2

#

:0

errant rampart
#

J'ai abandonné pm2 pour docker

twilit cosmos
#

le viagra aussi

keen narwhal
#

Whut

slim anvil
#

Oui pm2 c’est bien mais docker c’est mieux harold

keen narwhal
#

Bah le jour ou quelqu'un m'expliquera comment s'en servir je dis pas non 🙂

marsh drift
#

google is your friend

keen narwhal
#

Google is not sympathic

twilit cosmos
#

go bing alors

errant rampart
#

Make better search demizieu

keen narwhal
#

xD

marsh drift
#

speak better to him you'll see

#

he's kind

twilit cosmos
keen narwhal
#

Je serais l'installé

slim anvil
#

Ça va docker en vrai une fois que t’as compris la notion d’image ça va tout seul

keen narwhal
#

C'est fais de base pour ?

errant rampart
#

Conteneurisation, cloisonnement des ressources, scalabilité, simplification des processus d'intégration et de déploiement continue

keen narwhal
#

Ah oui

#

Je croyais qu'il y avais une autre app qui s'appelé elle aussi Docker

slim anvil
#

trofor kotus myman

#

docker c’est la petite 🐳

errant rampart
#

C'est pas une application, c'est un environnement 🙂

slim anvil
#

Comme LXC

#

si je dis po de bêtise

errant rampart
#

Si je me trompes pas, Docker est basé sur LXC

slim anvil
#

Oui c’est moins complet qu’un LXC

errant rampart
#

Docker autorise la portabilité entre machines (qui exécutent aussi Docker) et permet ainsi à une application et à ses composants d'exister en tant qu'objet mobile unique. LXC seul permet la mobilité.

slim anvil
#

après perso sur docker en perso je run que des projets node harold node-alpine life

slim anvil
#

Ah et des strapi apps aussi harold

hazy mirage
#

Pour un bot discord, Docker c’est pas « un peu trop » ?

slim anvil
#

Bah c’est relou à mettre en place juste pour ça oui

#

mais quand tu commences à avoir quelques projets ça vaut le coup

errant rampart
#

@hazy mirage Tout dépend de ce que tu as comme besoin au final, mais quand tu arrives avec plusieurs bots, une appli pour des API, un front, un reverse proxy, un stack de monitoring, que tu couples ça avec de l'intégration continue pour déployer automatiquement tes applis ... Ca commence à être intéressant ! 🙂

hazy mirage
#

Oui c’est sûr et c’est plutôt logique, mais je parlais uniquement d’un seul bot là ^^

keen narwhal
#

Merci Kotus et Fireless de m'avoir aidé a se sujet !

errant rampart
#

au plaisir 😉

keen narwhal
#

J'ai une petite question , je voudrais faire un message de bienvenue avec un fond , genre un île paradisiaque avec au millieux le nom , et au niveaux du bas sont prénom , c'est dificile de faire ça ?

#

Ooofff

#

C'est plus que complexe

#

Ah :/

#

Faut savoir faire beaucoup de choses en JS

slim anvil
#

c'est juste un canvas

keen narwhal
#

Oula

slim anvil
#

c'est pas si complexe

keen narwhal
#

Jsuis pas fort a se point la moi

slim anvil
#

c'est l'occasion d'apprendre

keen narwhal
#

De même

#

Ouais

#

Je pense aller me documenter

#

Car c'est plutôt stylé

#

Moi aussi x) tu a de la doc Enzo pour nous ?

slim anvil
#

je regarde wait

keen narwhal
#

Ok merci

slim anvil
keen narwhal
#

Ty

#

Merci

spring dock
#

Pilot l’a fait donc vous pouvez le faire kappa

keen narwhal
#

const channel = member.guild.channels.find(ch => ch.name === ‘bienvenue-aurevoire’);

Sa me dit invalid or unexpected token , comment je pourrais faire :/

#

ch is undefined ?

#

Oh mince , j'ai tellement chercher un problème trop dur alors que c'est peut étre le channel

#

Marche pas . . . 🤔

#
const yourchannel = <guild>.channels.find(channel => channel.name === "bienvenue-aurevoire’")
#

<guild>

???

#

Wait

#
const myGuild = client.guilds.get('ID DE TON SERVEUR');
const yourchannel = myGuild.channels.find(channel => channel.name === "bienvenue-aurevoire’");
#

@keen narwhal

#

Oui ?

#
const myGuild = client.guilds.get('ID DE TON SERVEUR');
const yourchannel = myGuild.channels.find(channel => channel.name === "bienvenue-aurevoire’");
#

je vais test ça

#

Après c'est pas opti

#

Ton bot marchera que sur ton serv

#

Ouais , je le ferai

rough tide
#

Hey , j'ai une fonction qui change les caractères d'un message , mais j'aimerais qu'elle retourne le message changé :

function font(text) {
    let texte = text.replace(/a/g, "𝐚")
    texte = texte.replace(/b/g, "𝐛")
    texte = texte.replace(/c/g, "𝐜")
    texte = texte.replace(/d/g, "𝐝")
    texte = texte.replace(/e/g, "𝐞")

j'aimerais que ça marche comme ça :

font("abcde") // 𝐚𝐛𝐜𝐝𝐞
#

sauf que ça me retourne "undefined"

#

quelqu'un a une idée ?

#

il faudrais que je dise que text = texte

slim anvil
#

tu mets texte.replace

#

Dans ta fonction tu passes test

#

Text*

#

Ah oui non

#

Pas vu la première ligne mybad

#

Si tu logs ton texte tu as un undefined ? thinkintense

rough tide
#

attend

#

ouep

marsh drift
#

tu return bien texte ?

rough tide
#

ah c'est bon

slim anvil
#

car y a pas d’zrreur dans ton code

rough tide
#

pile qd t'as dit ça j'ai mit return texte xd

#

oe , j'ai juste pas return texte

marsh drift
#

return text.replace(/a/g, "𝐚").replace(/b/g, "𝐛").replace(/c/g, "𝐜").replace(/d/g, "𝐝").replace(/e/g, "𝐞")

#

pour le lol

slim anvil
#

ah tu faisais un const toto = font(« iDisk ») je pensais tu faisais un log dans ta fonction

#

d’où le undefined du coup

#

et tu peux aussi mettre /e/gi

#

pour que meme les majuscules soient remplacés si jamais t’as besoin

keen narwhal
#

Le g correspond a quoi ?

#

Excusé moi , s'y le problème en haut est pas finie dite le moi !

Suite a mon code de canvas , il n'arrive pas à avoir le channel
**(node:5689) UnhandledPromiseRejectionWarning: ReferenceError: channel is not defined
at Client.<anonymous> (/home/keysex/Desktop/bot discord/index.js:684:1)
at processTicksAndRejections (internal/process/task_queues.js:97:5)
(node:5689) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:5689) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
**

marsh drift
#
(node:5689) UnhandledPromiseRejectionWarning: ReferenceError: channel is not defined
    at Client.<anonymous> (/home/keysex/Desktop/bot discord/index.js:684:1)
    at processTicksAndRejections (internal/process/task_queues.js:97:5)
(node:5689) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). To terminate the node process on unhandled promise rejection, use the CLI flag --unhandled-rejections=strict (see https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode). (rejection id: 1)
(node:5689) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
slim anvil
#

Le channel existe juste pas

keen narwhal
#

Imposible

#

Je le vois , je suis pas encore fou

slim anvil
#

yourChannel.senf

keen narwhal
#

Il a la permission 8 le bot ?

slim anvil
#

senf*

#

Send***

keen narwhal
#

Send

#

xD

#

Et ouai

#

Du coup

#

Car tu a pas réname les constantes

slim anvil
#

Fireless sinon /g c’est pour une recherche global

keen narwhal
#

Je note

#

Oki merci

#

const yourchannel je mais le nom du channel ?

#

Trop de question à la suite

#

Bah comme tu veux

marsh drift
#

c'est une variable tu met le nnom que tu veux

keen narwhal
#

Constante*

marsh drift
#

tu aime bien jouer sur les mots apparement

#

mais soit tu as raison

keen narwhal
#

Bah non

#

Je fessais pareils

#

Mais après pour les gens qui apprennent c'est pas ouf, car ils vont s'habituer a Variable et non Constante :/

marsh drift
#

c'est vrai

keen narwhal
#
//--AFK+NO_AFK--\\
client.on('message', message => {
    if(message.content === prefix+"afk") {
    if (!message.member.hasPermission('MANAGE_MESSAGES')) return message.channel.send("Vous n'avez pas la permission d'utiliser cette commande")
    let embed = new Discord.RichEmbed()
    message.channel.send(`${message.author} est maintenant AFK.`);
}})

client.on('message', message => {
    if(message.content === prefix+"no-afk") {
    if (!message.member.hasPermission('MANAGE_MESSAGES')) return message.channel.send("Vous n'avez pas la permission d'utiliser cette commande")
    let embed = new Discord.RichEmbed()
    message.channel.send(`${message.author} n'est maintenant plus AFK.`);
}})

Qu'elle qu'un pourrais m'expliqué comment faire pour => Quand on se mais afk en ne reçois aucune notification et que quand ont fait /afk et que au bout de 5 minutes en écris un message sa dit tout de suite qu'ont est revenue au lieux de devoir faire la commande manuelement.

rough tide
#

@keen narwhal pourquoi let embed = ?

keen narwhal
#

Si c'est pour dire cela autant ne rien dire je trouve
...

#

@rough tide

rough tide
#

ça peut aider

#

si il ne connaissait pas la doc

#

je peux pas aider son pb , donc je le redirige vers la doc

river ridge
#

bawouai logique

keen narwhal
#

S'il a cherché un minimum après il auras la doc, donc je ne pense pas que le redirigé dessus l'aidera

river ridge
#

il est peux étre pas au courant au sujet de la doc ? :/

keen narwhal
#

Et même avec la doc ça ne changera rien car sa demande ne sera pas forcément dans la doc

#

Ouai mais c'est logic après, tu apprend un language... Tu va voir la doc...

rough tide
#

Ouai mais c'est logic après, tu apprend un language... Tu va voir la doc...
@keen narwhal Non , pas pour tout le monde

keen narwhal
#

Et ?

#

Tu pense que dire, va voir la doc en lui envoyant le lien va l'aider ?

river ridge
#

keep calm and play the doc

#

😄

keen narwhal
#

Je suis calme

#

🙂

#

Tu veux kon se tap @river ridgelolwhatthink

#

Mon papa è polisiè ok

river ridge
#

TU VEUX QU'ON S'LA DONNE ? HEIN ? PARCEQU'ON VA S'LA DONNER JTE LE DIT

keen narwhal
#

Trop de talent de débiteur

#

Je ne peux plus rien faire face a ton talent

spring dock
#

#general les gars

keen narwhal
#

Ok bob le brico

rough tide
#

Tu pense que dire, va voir la doc en lui envoyant le lien va l'aider ?
c'est le maximum que je puisse faire , a ce niveau là je n'aurais tt simplement rien dit

keen narwhal
#

hello !

j'aimerais savoir si c'est possible en créant une commande en node.js de faire un compteur sur un embed et le compteur augmenterait quand on fait: !add nomducompteur (y'aurait aussi une commande qui créerait le compteur sous embed en question)

je me suis jamais vraiment attardé sur l'utilisation de compteur / autre, et j'ai pas trouvé de tutoriel pour bien expliquer donc bon ^^ (si quelqu'un saurait m'expliquer)

slim anvil
#

Yes tu édit ton embed a chaque fois en rajoutant +1

keen narwhal
#

Stock ton compteur dans un ficher json

#

Je peut te montrer via mon anydesk comment faire ?

#

@keen narwhal

#

yep @keen narwhal go pv 😉

keen narwhal
#

bonjour, je suis entrain de commencer mon bot mais j'ai un prob majeur, je fais sa dans Node Command prompt :

npm install --save discord.js
timid loom
#

et ?

boreal edge
#

C'est pas npm install discord.js --save normalement ,

slim anvil
#

sert plus a rien le --save

#

tu fais juste un

#

npm i discord.js

keen narwhal
#

et aucun fichier spawn dans mon folder

slim anvil
#

tu as pas d'erreur?

keen narwhal
#

npm WARN saveError ENOENT: no such file or directory, open 'C:\Users\aztea\package.json' npm WARN enoent ENOENT: no such file or directory, open 'C:\Users\aztea\package.json' npm WARN discord.js@11.5.1 requires a peer of @discordjs/uws@^10.149.0 but none is installed. You must install peer dependencies yourself. npm WARN aztea No description npm WARN aztea No repository field. npm WARN aztea No README data npm WARN aztea No license field.

slim anvil
#

t'es au bon endroit, sur ?

keen narwhal
#

oui

slim anvil
#

si tu fais un ls, tu vois ton fichier index.js ?

keen narwhal
#

hein ?

slim anvil
#

fais juste un npm init

#

si t'es sur d'etre au bon endroit

#

et ensuite tu fais un npm i discord.js

keen narwhal
#

package name: (mark.ia)

#

c le nom de mon fichier

slim anvil
#

fais ce que je dis

#

et tu me dis si c'est ok ou pas

keen narwhal
#

ok c bon merci

rough tide
#

Bonjour , j'ai un petit problème !

J'aimerais , avec mon bot discord , faire une recherche sur l'api de spotify. Pour ça , je me suis créer un compte , j'ai pris mon client id et secret , tout va bien. Sauf que j'ai besoin d'un token , que j'obtiens en faisant une request post. Je n'ai pas trés bien compris , quelqu'un pourrais m'éxpliquer comment je pourrais faire une post request ?

#
The request is sent to the /api/token endpoint of the Accounts service:

POST https://accounts.spotify.com/api/token

The body of this POST request must contain the following parameters encoded in application/x-www-form-urlencoded as defined in the OAuth 2.0 specification:

REQUEST BODY PARAMETER    VALUE
grant_type  | Required.
Set it to client_credentials.
The header of this POST request must contain the following parameter:

HEADER PARAMETER    VALUE
Authorization  | Required.
Base 64 encoded string that contains the client ID and client secret key. The field must have the format: 
Authorization: Basic <base64 encoded client_id:client_secret>
#

voilà les parametres dans la doc de spotify

slim anvil
#

Tu dois set le Authorization Token

#

Avec ton token généré

rough tide
#

attend$

#
request.post({
            url: `https://accounts.spotify.com/api/token`,
            headers: {
                'Authorization': "Basic mes client",
            },
            body: {
                "grant_type": "client_credentials"
            }
        }, function (error, response, body) {
             console.log(body)
           
            });
        };
#

c'est mon code

slim anvil
#

La route /api/token elle sert a quoi ?

rough tide
#

pour générer le token

#

en ensuite ce token je vais l'utiliser pour ma recherche

slim anvil
#

Ok bah dessus t’as pas besoin de lui passer le Authorization

#

Tu fais une promise pour que au retour de ta requête tu set ce token dans ta requête de recherche

rough tide
#

bah si , il lui faut mes clients id pour savoir quel application correspond au token

#

mais ça justement ça marche pas

#

j'arrive pas à générer mon token

#
request.post({
            url: `https://accounts.spotify.com/api/token`,
            headers: {
                'Authorization': "Basic mes client",
            },
            body: {
                "grant_type": "client_credentials"
            }
        }, function (error, response, body) {
             console.log(body)
           
            });
        };

@rough tide ici

#

(node:5768) UnhandledPromiseRejectionWarning: Error: Argument error, options.body.

#

c mon erreur

slim anvil
#

Envoie la doc

rough tide
slim anvil
#

En gros,

#

Un exemple pour le header:
headers: {
Authorization:
'Basic ' +
new Buffer(client_id + ':' + client_secret).toString('base64')
},

rough tide
#

donc je met ça dans le header de mon code d'en haut ?

slim anvil
#

le grant_type: ‘client_credentials’

#

Dans tes options de requête oui

rough tide
#
request.post({
            url: 'https://accounts.spotify.com/api/token',
            headers: {
                'Authorization': "Basic mes client",
            },
            body: {
                "grant_type": "client_credentials"
            }
        }, function (error, response, body) {
             console.log(body)
           
            });
        }; dans ce code ça donne quoi ?
slim anvil
#

Je suis sur tel compliqué, mais ta clé headers tu mets la mienne à la place

rough tide
#

parfait merci

slim anvil
#

Avec les bonnes infos bien sur

#

Et en retour de requête tu recevras ton token

rough tide
#

le retour c'est le body ou le response ?

slim anvil
#

A ton avis

#

D’un point de vu logique

rough tide
#

aie

#

(node:12304) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
_http_outgoing.js:618
throw new ERR_INVALID_ARG_TYPE('first argument',
^

TypeError [ERR_INVALID_ARG_TYPE]: The first argument must be one of type string or Buffer. Received type object
at write_ (_http_outgoing.js:618:11)
at ClientRequest.write (_http_outgoing.js:586:15)

slim anvil
#

ouais c’est un vieux code

#

Juste concat

#

regarde la concaténation elle date de 2012 kappa

#

Non 2017 il connaissait pas ES6 le mec, tu concat juste et ça devrait le faire

rough tide
#

cmt ça je concat ?

slim anvil
#

bah tu concat tes variables en une seule string quoi

raw lava
#

utilise Buffer.from au lieu du constructeur de Buffer

slim anvil
#

Bien vu bg

rough tide
#

_http_outgoing.js:618
throw new ERR_INVALID_ARG_TYPE('first argument',
^

TypeError [ERR_INVALID_ARG_TYPE]: The first argument must be one of type string or Buffer. Received type object
at write_ (_http_outgoing.js:618:11)
at ClientRequest.write (_http_outgoing.js:586:15)

#
'Authorization':     'Basic ' + Buffer.from("clientid:secret").toString('base64')
slim anvil
#

Fais ce que vikrrr a dit

rough tide
#

bah c cque j'ai fait

slim anvil
#

clientid et secret tu l’as pas mis en string hein

#

Rassure moi harold

rough tide
#

oh...

slim anvil
rough tide
#

j'ai mis une seule string "clientid:secret" jlai est collé

slim anvil
#

oui mais faut mettre tes vraies info à la place on est ok là dessus ?

#

Je reviens

rough tide
#

oui

raw lava
#

l'erreur viens d'autre part, t'utilises quelle lib pour ton client HTTP?

rough tide
#

j'utilise le module request pour faire ma requete

raw lava
#

il faut que tu sérialise le body de ta requête, probablement avec JSON.stringify

#

avec request tu peux aussi juste ajouter json: true ça le feras pour toi en plus d'ajouter le Content-Type approprié

rough tide
#

_http_outgoing.js:618
throw new ERR_INVALID_ARG_TYPE('first argument',
^

TypeError [ERR_INVALID_ARG_TYPE]: The first argument must be one of type string or Buffer. Received type object
at write_ (_http_outgoing.js:618:11)
at ClientRequest.write (_http_outgoing.js:586:15)

#
 request.post({
            url: `https://accounts.spotify.com/api/token`,
            headers: {
                'Authorization':     'Basic ' + Buffer.from("xxx:xxxx").toString('base64')
            },
            json: true,
            body: {
                "grant_type": "client_credentials"
            }
        }, function (error, response, body) {
            console.log(JSON.stringify(body))
            
           
            });
        };
#

mon code au cas ou

raw lava
#

pas ici, le body de ta requête

#

ajoute json: true, au dessus de body: {

rough tide
#

comme ça ? regarde le code

raw lava
#

oui

#

et tu peux enlever le JSON.stringify que t'as rajouté

rough tide
#

je log mon body du cp ?

#

{ error: 'server_error' }

slim anvil
#

t’as que ça comme info sur l’erreur ?

#

Non tu log ta responsable

#

Response*

#

Body c’est ta requête

#

log ton erreur aussi

#

Error*

rough tide
#

error = null

#

reponse = IncomingMessage{avec plein de trucs}

#

et jvois pas de token dedans

slim anvil
#

show me

rough tide
#

bah c'est genre trés long

#

j'tenvoie un txt avec ?

slim anvil
#

Screen

rough tide
#

attend

#

j'lai JSON.stringify c bcp plus compacte

#
{"statusCode":415,"body":{"error":"server_error"},"headers":{"date":"Fri, 31 Jan 2020 18:45:06 GMT","content-type":"application/json","set-cookie":["__Host-device_id=AQDorwUvKSx2p_18d57sZavJC6g6RVxRm5BBPqIeHUFasV_5QQu1BQZhfu0b_0wYgVL8bMFPAtS9cQVYka7pqljDVrqfn6J6Qd0;Version=1;Path=/;Max-Age=2147483647;Secure;HttpOnly;SameSite=Lax"],"content-length":"24","server":"envoy","x-envoy-upstream-service-time":"1","strict-transport-security":"max-age=31536000","x-content-type-options":"nosniff","via":"HTTP/2 edgeproxy, 1.1 google","alt-svc":"clear","connection":"close"},"request":{"uri":{"protocol":"https:","slashes":true,"auth":null,"host":"accounts.spotify.com","port":443,"hostname":"accounts.spotify.com","hash":null,"search":null,"query":null,"pathname":"/api/token","path":"/api/token","href":"https://accounts.spotify.com/api/token"},"method":"POST","headers":{"Authorization":"Basic NDU5NjYwNzgwMTAxxxxxxxxxNGE3OWViYTAyMDk6MDI3OGIyMThlZTUyNxxxxxxxxxY=","accept":"application/json","content-type":"application/json","content-length":35}}}
slim anvil
#

problème dans l'envoie de ta requete

#

415 c'est le, type

rough tide
#

comment ça ?

#
request.post({
            url: `https://accounts.spotify.com/api/token`,
            headers: {
                'Authorization':     'Basic ' + Buffer.from("459660xxxxxx0209:0278bxxxxxd566").toString('base64')
            },
            json: true,
            body: {
                "grant_type": "client_credentials"
            }
        }, function (error, response, body) {
            console.log(error)            
            console.log(JSON.stringify(response))
            });
        };
#

c'est bon là non ??

slim anvil
#

remove ton client id

rough tide
#

pourquoi ?

slim anvil
#

bah pour pas qu'on le voie

#

ce serait con

rough tide
#

j'lai modifié

#

j'ai mis des xxxxxxxxx

slim anvil
#

ah ok mybad

raw lava
#

il faut envoyer le grant_type en paramètre de requête pas dans le body

rough tide
#

donc jlet met ou ?

slim anvil
#

sur la doc c'est marqué body parameter

raw lava
#

ah il faut le mettre en url-encoded alors

slim anvil
#
application/x-www-form-urlencoded
#

yep voila

#

dans le Content-Type

rough tide
#

mais du cp dans le code ca équivaut a quoi ?

raw lava
#

rajoute un header Content-Type avec la valeur application/x-www-form-urlencoded et en body tu met qs.encode({ grant_type: "client_credentials" })

slim anvil
#

meme niveau que authorization

raw lava
#

qs viens du module querystring de node donc faut que tu require ça

rough tide
raw lava
#

enlève les brackets

#

et oublie pas d'enlever json: true

slim anvil
#

trofor vikrrr

#

je l'ai tjrs dis

rough tide
#

{"statusCode":200,"body":"{"access_token":"BQCQxxxxxaTTOnfbE9-jxxxxD57qj_W4hxxxxxxxtERqxoyI","token_type":"Bearer","expires_in":3600,

#

parfait merci

#

juste , comment je fais ressortir direct le token ?

#

sans le reste

slim anvil
#

si c'est le log de response, tu fais un const

 { access_token } = response.body
rough tide
#

const token = response.body ?

#

ça va pas me ressortir {"access_token":"BQCQxxxxxaTTOnfbE9-jxxxxD57qj_W4hxxxxxxxtERqxoyI","token_type":"Bearer","expires_in":3600, ?

slim anvil
#

non const { access_token }

#

la clé c'est access_token ou alors tu peux le redéfinir avec un as

raw lava
#

faut que tu JSON.parse le body avant

slim anvil
#

bon allez je vais manger salut les bgs

rough tide
#

ouiiii merci bcp les gars, désolé du dérangement

#

par contre du coup... comment je fais ma recherche ?

slim anvil
#

Look sur la doc tu dois envoyer en paramètre certaines data

#

La query, le type etc enfin tu as plusieurs choix

rough tide
#

du coup je fais :

slim anvil
#

Tu dois envoyer en paramètre q et type

#

Ils sont required

rough tide
#
request.get({
            url: `GET https://api.spotify.com/v1/search/q=name:${rech}&type=album,track`,
            headers: {
                'Authorization': 'Bearer' + Buffer.from(acces_token)
            }
            
        }, function (error, response, body) {
            if (error) console.log(error)
            console.log(body)
});
#

j'ai fait ça

slim anvil
#

Q c’est la query genre « rap fr » et type ça peut être album, single etc

#

Tu as tout sur la doc

#

Yes ça a l’air bon a première vu

#

Test

rough tide
#

{
"error": {
"status": 400,
"message": "Only valid bearer authentication supported"
}
}

raw lava
#

il manque un espace entre ton token et Bearer

rough tide
#

Invalid URI "GET%20https://api.spotify.com/v1/search/q=name:Luv%20Resval&type=album,track"

#

sachant que ${rech} c'est args.join(" ")

slim anvil
raw lava
#

enlève le GET qui est dans ton URI

slim anvil
#

Pas lui qui l’a mit si ?

#

C’est son retour d’erreur on dirait

#

Ah oui si

#

Bien vu haha tu as laissé le GET dans l’URL

rough tide
#

putain quel débile

#

{
"error": {
"status": 404,
"message": "Service not found"
}
}

slim anvil
#

après le search enlève le / remplace le par ?

#

dans l’url

#

search?q=.....

rough tide
#

ça me return ça

#

sauf que j'aimerais une liste de chaque track

#

genre

#

Albums :

Nom : Artiste :
URL :
Image

#

pour chaque

#

jfais comment ? thinking_hard

slim anvil
#

bah tu map dessus

#

tu boucles et tu mets ça dans ton embed

#

Bon là tu as 0 résultats pour le coup

rough tide
#

bah c'est pas normal

#

ah sii

#

du coup j'fais body.map ?

slim anvil
#

essaye de faire un peu par toi même aussi

rough tide
#

oui je sais , désolé

#

mais je trouve pas ou est l'array dans l'histoire

#

ah oui c'est items

#

donc body.tracks.items.map

slim anvil
#

La tu as juste à bouclé sur le tableau items qui est dans album et tracks ou un des deux, et dans ta boucle tu feras un embed.addField(...

rough tide
#

jveux pas d'embeds

slim anvil
#

Bon bah fais juste une liste lambda

#

mais voila suffit de boucler sur le tableau

keen narwhal
slim anvil
#

Tu as une fonction ferchMember

keen narwhal
#

Oki

slim anvil
#

Fetch*

#

donc tu passes l’id dedans et tu vois ce qu’il te retourne

keen narwhal
#

Umh

#

Je bloque :/

slim anvil
#

?

keen narwhal
#

Je ne sait pas comment m'y prendre :/

slim anvil
#

client.guild.fetchMember(id_user)

keen narwhal
#

Non mais

#

Join par rapport a ma list en json :/

#

J'aime que quand ils font /join, il sont ajouté dans le data.json et s'il refont /join sa leurs dis qu'ils on déjà join

slim anvil
#

bah tu regardes dans ton fichier json

#

tu utilises fs pour écrire et lire ton json

keen narwhal
#

Oui je viens de tilté

hazy mirage
#

@keen narwhal « rejoind » waitwhat

keen narwhal
#

Oui je sait pas écrire je sait

#

😦

#

??

hazy mirage
#

¿?

keen narwhal
#

C'est pas correct mais comment ça devrais l'être

#
if(data[message.author.id] === 0){```
hazy mirage
#

👀

slim anvil
#

Hein ?

hazy mirage
#

Tu as rejoins

#

Attend je vais vérifier

slim anvil
#

Pas besoin de === 0

keen narwhal
#

Ah bah oui

#

Bruh

hazy mirage
#

Tu as rejoint *

keen narwhal
#

Ty @hazy mirage @slim anvil

hazy mirage
#

Hmm bien fait de vérifier 😂

keen narwhal
#

xD

#

Il ne veut pas écrire mon id :/

slim anvil
#

Tu as une erreur ou autre ?

keen narwhal
#

Non du tous

#

C'est depuis que j'ai mon else

slim anvil
#

bah tu return

#

Donc il va pas à la suite

#

Si il rentre dedans tu iras pas à la suite

keen narwhal
#

Il aurais du me marqué alors qu'il a déjà rejoind

#

Sauf que ma data est vide

slim anvil
#

Ah ok il rentre pas dedans

keen narwhal
#

C'est si il est dans la data alors il return

slim anvil
#

yep

keen narwhal
#

Et dans ce cas la il n'écrit pas

slim anvil
#

Mais du coup tu met bien la bonne url ?

keen narwhal
#

Oui

slim anvil
#

C’est la même que quand tu lis le fichier ?

keen narwhal
#

Non il veut pas write enfaite

#

Owh Ouai

#

Je suis con

slim anvil
#

log ton data ?

keen narwhal
#

J'ai trouvé l'erreur

slim anvil
#

si tu as trouves cool

keen narwhal
#

Trouvé mais pas encore résolu xD

#

Du coup j'ai compris

slim anvil
#

Top

keen narwhal
#

Réussis

slim anvil
#

top

keen narwhal
#

Je suis obligé de mettre une value a mon id dans la data

#

C'étais pas se que j'avais fais car tu ma dis Pas besoin de === 0

#

Du coup j'ai supr dans le write le joined: 0

#

xD

#

Voilà l'erreur

slim anvil
#

dans ta condition oui pas besoin de check si data[id] === 0

#

juste si data[id]

keen narwhal
#

Ah okiiiii

slim anvil
#

rien dis d'autre thinkingplayer

keen narwhal
#

Comment je pourrais mettre tous les id dans une category

#

Car la si je crée plusieurs tâche ( c'est le but du bot, crée une tâche et pouvoir lla rejoindre, sauf que s'il y a plusieurs Tâche OOFFFF )

west plover
#

tu fais un object indexé par l'id du membre 🤔

keen narwhal
#

Alors la :0

west plover
#

qui est set sur la data de la tache

#

me dis pas que c'est compliqué, parce que ça ne l'est pas oiseau_pas_content

timid loom
#

@keen narwhal typiquement une Map, voire une Collection si tu es sur Discord.js

keen narwhal
#

Quelqu'un aurais le code pour supprimé tous les channels qui sont dans une catégorie ?

slim anvil
#
message.guild.channels.forEach(channel => channel.delete())
```![kappa](https://cdn.discordapp.com/emojis/643454849534394368.webp?size=128 "kappa")
keen narwhal
#

Sa supprime tous mdr

#

Sale fous

slim anvil
#

Je sais pas si il y a une fonction deja faites, mais sinon tu fais quasi la meme chose, mais avant tu fais un .filter sur le message.guild.channels

#

et tu regardes si .filter(channel => channel.parentID === '')

#

je crois que c'est parentID mais check avant pr etre sur

keen narwhal
#

Oui c'est ça

#

Comment ça je met le filter avant ?

#

....

slim anvil
#

Avec ton code:

const channels = server.channels.filter(channel => channel.parentID === config.CategoryID)

if (!channels.length) return

channels.forEach(channel => channel.delete())
keen narwhal
#

Owh

#

I try it

slim anvil
#

voila*

keen narwhal
#

ça ne supprime rien 😦

#

Avec aucune erreur

slim anvil
#

console.log(channels) avant le if

#

voir ce qu'il te sort

#

^^

#

car si il y en a pas, il va return vide

keen narwhal
#

Map(1) {_array: null, _keyArray: null}

#

Mais il y en as ...

slim anvil
#

fais un console.log(channels.array()) plz

#

et screen ta rép

keen narwhal
#

Ok

#

Pas besoin

slim anvil
#

ah oui y a

keen narwhal
slim anvil
#

bizarre, ça fonctionne là ?

keen narwhal
#

Nop

slim anvil
#

0 erreur ?

keen narwhal
#

Ouai :/

slim anvil
#
const channels = server.channels.filter(channel => channel.parentID === config.CategoryID)

if (!channels.length) return

channels.forEach(channel => console.log(channel))
#

juste voir qu'il log le bon truc

keen narwhal
#

Toujours pas

#

Aucune erreur

slim anvil
#

il log quelque chose ?

keen narwhal
#

Nop

#

Il return direct

#

le if return

#

Donc la condition est bonne

slim anvil
#

fais if (!channels.array().length) return

keen narwhal
#

Enfin

#

Ah

slim anvil
#

good ?

#

du coup

#

tu remet channel.delete()

keen narwhal
#

Bah il vois les deux cannaux

#
 const channels = server.channels.filter(channel => channel.parentID === config.categoryID);

 if(!channels.array().length) return

 channels.forEach(channel => channel.delete())```
#

?

slim anvil
#

ui

keen narwhal
#

Marche po

#

Il supr rien

#

Sans erreur

slim anvil
#

met un await devant le channel.delete() pour qu'il attende de supprimer le channel avoir de passer au suivant déjà ce sera better si jamais tu as une catégorie rempli de chan

keen narwhal
#
channels.forEach(channel => await channel.delete())
slim anvil
#

show me le block code entier

#

enlève le await pr l'instant tu verras ça après

keen narwhal
#

No c'est bon

slim anvil
#

ca fonctionne ?

keen narwhal
#

Je l'avais mis au mauvais endroit

#

Le await oui

#

mais pas le reste

#

x)

slim anvil
#

pas d'erreur ?

keen narwhal
#

Nop

slim anvil
#

show me le code plz

keen narwhal
#
client.on("ready", async () => {
    const server = client.guilds.get(config.GuildID)

    const channels = server.channels.filter(channel => channel.parentID === config.categoryID);

    if(!channels.array().length) return
    
    await channels.forEach(channel => channel.delete())
})```
slim anvil
#

pour le await oui et non, ce serait better avant chaque delete mais tu regarderas ça après

#

hmmm bizarre sinon

slim anvil
#

bah il y en a pas

#

donc il return du coup ?

keen narwhal
#

Att

slim anvil
#

sur ton discord

#

ils y sont encore ??

keen narwhal
#

Erreur graphique de ma pars ?

slim anvil
keen narwhal
#

Je reload

#

Tjr là

slim anvil
#

et si tu log ton channels ?

#

tu as des élements dedans ? car là non donc normal kappo

keen narwhal
#

Bah ...

slim anvil
#

ça je sais pas

#

mais ton console.log

#

si il dit qu'il y a pas

#

c'est que peut etre le categoryID de ta config est pas le bon ^^'

#

en tt cas tu as un array vide donc il return

keen narwhal
#

Ou le filter ...

#

Att je met l'id direct

#

Euh

#

Wesh

#

Avec l'id ça marche

#

Ah att

slim anvil
#

vérifie ton id alors^^

#

car le code est bon pour le coup quasi sur a 99%

#

1% pour le doute

keen narwhal
#

Tu veux rigolé

#

Il manqué la majuscule au "CategoryID"

#

xD

#

JPP

#

La FATIGUEEEE

slim anvil
#

super ça

keen narwhal
#

Merci en tous cas

#

👍

keen narwhal
#

@slim anvil
Comment je peut faire pour define toutes les value d'un fichier json sur un état ?

#

Car moi ma méthode pour reset la data c'est de tous effacé

slim anvil
#

get ton tableau, tu boucles dessus et tu reset chaque valeur

keen narwhal
#

AHAHAAA, c'est pas du tous se que que j'essaie de faire

#

xD

slim anvil
#

Si jamais tu as un tableau de users dedans, tu fais un

users.map(user => (
  user.state = 0 // set good key and new value
))
#

par ex

keen narwhal
#

Je vais try alors

slim anvil
#

et après tu set ton users a ton fichier json

keen narwhal
#

Tu pourrais vocal deux secondes ?

#

Users c'est censé être mon fichier json ?

slim anvil
#

euh pas la sorry je dois finir quelques trus important

#

montre ton fichier json

keen narwhal
#

L'id de la personne puis sont état

slim anvil
#

Ah tu as pas de clés users avant, ca peut etre sympa de le rajouter si jamais un jour tu veux use le meme fichier json pour stocker autre chose

#

de pas tout mélanger

keen narwhal
#

Ouai je m'en suit rendu compte a la fin :/

slim anvil
#

avec un

{
  users: [{}, {}],
  warns: [{}] // ceci n'est pas un vagin :kappa:
}
#

par ex

#

bah tu peux edit c'est rapide

#

tu add juste une clé et quand tu get ton fichier json, tu fais juste file.users

#

ou direct const { users } = fsRead.....

keen narwhal
#

Et il n'y a pas d'autre moyen sans key ?

slim anvil
#

Ah si bah tu boucles sur tes objets

#

mais c’est moins propre je trouve t’es au début tu devrais l’arranger direct pour si jamais tu veux faire évoluer le truc

#

après tu peux use une vraie db aussi au moins hop

topaz smelt
#

!boost

ancient sonnetBOT
#

:one::two: Nitro Boost
Deviens toi aussi un Michel en boostant le Discord ! :sunglasses:

Les avantages à boost le Discord ?
:small_blue_diamond: Accès au site https://g-ca.fr avant l'ouverture + un accès à notre environnement de dev pour tester les futures fonctionnalités !
:small_blue_diamond: Accès au channel #michel-room pour parler entre Michel et avoir accès aux nouveautés et aux annonces avant les autres membres !
:small_blue_diamond: La possibilité de choisir un emoji qu'on ajoutera sur le Discord :scream:
:small_blue_diamond: La possibilité de changer de pseudo :eyes:
:small_blue_diamond: La possibilité d'utiliser des emojis externes :smirk:
:small_blue_diamond: Un taux de chance supérieur aux autres membres lors des giveaway :tada:
:small_blue_diamond: Un taux de gain en XP supérieur aux autres membres :ok_hand:
:small_blue_diamond: La possibilité de participer à des soirées karaoké avec le staff :smirk::microphone:

Et encore pleins d'autres :scream: (mais c'est déjà bien là nan ?!)
Alors n'hésite plus ! :heart:

slim anvil
#

oui

#

comment ça

#

quand tu react(':thumbsup:')

#

met le en forme please

#

plus lisible

#

manque une '

#

dans ton setFooter

#

ah non je crois c'est discord qui delete les '

#

ça m'affiche pas tout comme il faut, relou, prend un screen de ton code plz ^^

#

tu l'as ajouté a ton serveur l'emoji ?

#

yes better

#

mais il est ou le message.react() ?

#

ah ok dans le setTitle

#

tu as l'id de l'emoji ?

#

tu dois le get

#

client.emojis.find(emoji => emoji.name === "server")

#

je pense , mais pas sur

#
.setTitle(`${client.emojis.find(emoji => emoji.name === "server")} Notre hébergeur`)
#

après vraiment pas sur que ça fonctionne dans les embeds jamais vu, mais ca doit l'etre

#

top

errant rampart
#

Sinon pour avoir l'id d'un emoji il suffit de mettre un backslash devant
Genre pour demizieu tu fais \:demizieu: et tu obtiens !demizieu

keen narwhal
#

Yes

slim anvil
#

ah oué bien vu

keen narwhal
#

Ou sinon ça va te le donné au format Unicode il me semble ( Pour ceux qui sont déjà de base )

#

🔨
\🔨

rough tide
#

Comment je peux créer un fichier json ? Genre en générer un ?

#

C'est a dire que il n'y as pas de fichier , et que avec un module ou une fonction j'en créer un a la racine de mon fichier et le rempli

#

C'est possible ?

slim anvil
#

avec fs

#

tu fs.writeFile

#

good @rough tide ?

rough tide
#

mais je veux le créer

#

j'ai pas encore test

slim anvil
#

oui

#

c'est comme ça

rough tide
#

je vais tester ça , merci !

ionic glade
#

Salut, vous savez si il faut faire un bot pour que quand je clique sur un bouton sur Gmod ça me fait venir sur discord et ça me mette une fenêtre avec le prénom du serv etc...

keen narwhal
#

C'est du glua ça

#

Et non du JS

ionic glade
#

Non bah merci quand même

keen narwhal
#

Bah si

#

Si tu appuis sur un Button ingame c'est du glua

#

Ah c'était une question, bah il te faut un Addon in game et un bot discord

keen narwhal
#

@ionic glade

keen narwhal
#

quelqu'un ici pour m'aider à créer un système de tâches ? là je bloque parce que le joueur quand il rejoint la tâche n'est pas mis dans le json (fs), et donc normalement grâce à ça je devrais faire une vérification pour que le joueur rejoigne une seule fois une tâche 😉

rough tide
#

bah

#

qd y'as un nouveau join , tu vérifie si il n'y est pas dans ton json. Si il n'y est pas , tu l'ajoute

#

dnc en gros tu fais :

#
 const task = JSON.parse(fs.readFileSync('./task.json'));
let membre = bah ton membre quoi
if(!task[membre.id]) {
  task[membre.id] = []
 task[membre.id]
 fs.writeFileSync('./task.json', JSON.stringify(task));
}
```|
#

un truc dans le genre

keen narwhal
#

ouais mais ma data ressemble à ça:

  "tasks": [
    {
      "userId": "249459790953185280",
      "name": "spo",
      "channelId": "673173059598811153",
      "users": []
    }
  ]
}

quand il n'y a pas de tâches, il n'y a rien sauf:

  "tasks": [

  ]
}```
#

tasks

#

Doit être ton args[0]

#

càd ? || c'est à dire* ||

#

@keen narwhal

slim anvil
#

Je t’ai dis, quand il !create Tache tu ajoutes comme je t’ai fais dans ta task avec userId, channelId et un tableau de users, une fois qu’il fait le !join tu regardes dans tes tasks si il y en a une ou le message.channel.id === a task.channelId avec un .find(), si oui tu push l’ID du user dans cette task

#

ça peut pas être plus clair..... je te l’ai expliqué plusieurs fois ^^

rough tide
#

sinon , j'ai encore un pb avec les requètes xd

keen narwhal
#

ouaip sauf que j'y connais rien dans fs, et si je comprends rien ça n'a aucun sens 😒

rough tide
#
var urlToken = 'https://mtxserv.com/oauth/v2/token';

var query = {
    grant_type:     'https://mtxserv.com/grants/api_key',
    client_id:      '',
    client_secret:  '',
    api_key:        ''
};

$.ajax({
    url:       urlToken,
    dataType: 'json',
    data:     query,
    success:  function(data) {
        console.log(data); // contain access token
    },
    error: function(data) {
        console.log(data.responseText);
    }
});

En javascript c'est ça , sauf que j'ai pas compris comment adapter ça dans mon code :/

#

sachant que je fais mes requetes avec request

slim anvil
#

Bah ça n’a plus rien avoir avec fs là c’est juste du JS de base

#

Car les fonctions de write et file y sont déjà

#

Tu dois générer un access_token hellaStok

rough tide
#

oui je sais , comme avec spotify

#

mais là enft , je sais pas ou mettre mon grant type et ou mettre le reste

#

j'ai fait ça :

slim anvil
#

je l’avais fais j’ai plus le code mais en gros tu get la route en lui passant les datas demandes il va te renvoyer un access_token puis pour tes prochaines requête tu devras le set dans les authorizations headers

rough tide
#
request.post({
        url: 'https://mtxserv.com/oauth/v2/token',
        body: {
grant_type: 'https://mtxserv.com/grants/api_key'
}

        headers: {
            client_id:      '',
            client_secret:  '',
            api_key:        ''
        },
        time: true
    }, function (error, response, body) {
        console.log(body)
})
#

c'est faux ça non ?

slim anvil
#

Tu peux screen please

#

Je suis sur tel

#

Cpabo

rough tide
#

ah oui faut get

slim anvil
#

Mais yes déjà c’est du get

rough tide
#

j'ai mis post

#

je réssaye

slim anvil
#

Met tout tes params dans body

#

Client_id etc

rough tide
#

okép

#

throw new ERR_INVALID_ARG_TYPE('first argument',
^

TypeError [ERR_INVALID_ARG_TYPE]: The first argument must be one of type string or Buffer. Received type object
at write_ (_http_outgoing.js:618:11)
at ClientRequest.write (_http_outgoing.js:586:15)

#

jdois buffer.from() ?

keen narwhal
#

j'ai beau faire ce que tu m'as dis, ça ne fonctionne pas (même en essayant le code que tu m'as donné)

slim anvil
#

Le code que je t’ai envoyé au début fonctionnait, tu devais juste passer le channelID dans la création de la task avant de la push, donc rien avoir avec du fs, et ensuite regarder dans ton tableau tasks si une task.channelID === message.channel.id donc pas du fs non plus ... c’est juste que c’est un sacré bordel sur le code comme je t’ai dis ça va être compliqué de faire un truc bien ^^

#

Yes hellastok test sûrement

rough tide
#

bah tjrs pas

slim anvil
#

Mais ça fonctionne comme Spotify quasiment

keen narwhal
#

ah

rough tide
#

ah oui jdoit utiliser querystring non ?

#

tjrs pas

#

oh jsuis pas futé

#

c des strings enft

#

'grant_type' etc

#

tjrs pas xd

keen narwhal
#

ça me soule en plus y'a personne qui peut m'aider 😒 (pour le refaire)

slim anvil
#

Tu as que l'ajout de task sur ton bot discord strax ?

keen narwhal
#

oui

slim anvil
#

Honnêtement, si tu as deja fais du js tu iras plus vite a le refaire, c'est 2 commandes c'est rapide

keen narwhal
#

j'ai déjà fait du js, sauf que là vraiment j'ai jamais été aussi paumé

slim anvil
#

pourtant ça reste des basiques 🤔

rough tide
#

j'y arrive vrmt pas xd

keen narwhal
#

pour y arriver, faudrait que quelqu'un m'explique fs, après j'y arrive je pense sans pb

slim anvil
#

bah le fs il est déjà fait de toute façon

#

FS c'est juste un fichier json, ou si tu le get tu vas récupérer une string, qu'il va falloir parse et donc tu auras un objet

#

Enfin fs c'est pas ça, mais dans ce cas ça te permet de faire ça

keen narwhal
#

okey, alors tu pourrais à la limite me dire ce que je dois utiliser et l'expliquer stp (j'ai vu les pushs, les writefile,... mais je comprends pas vraiment son utilisation)

rough tide
#

enft

#

tu veux que task = un array avec plusieurs infos ?

#

tu peux faire une map nn ?

keen narwhal
#

non

#

ah si !

rough tide
#

j'avais fait une commande d'afk une fois avec une map

#

c'est possible

#

j'tenvoie le tuto en dm , c'est de l'anglais et c'est super complet

#

tu modifie bien sur par les infos dont t'as besoin pour tes tasks

keen narwhal
#

en gros, mon système de taches servirait à voir des gens qui join justement ces taches, on pourrait en créer plusieurs et en rejoindre grace à une commande (!join)

#

okey, merci, je vais voir salutation

rough tide
#

ouep , tu fais une map

#

regarde en dm

keen narwhal
#

J'aimerais supprimé un role si il a deux rôle en commun :/

#

Mais il me met un erreur

#

Trouvé

#

🙂

keen narwhal
#

comment on ajoute une donnée (user id) dans un array ?

#

w/ fs ?

slim anvil
#

tu .push dedans

#

array.push(data)

west plover
#

fs c un module de système de fichiers (file system), il sert pas à gerer des array

keen narwhal
#

ok

#

mais là c'est pareil, je reste coincé à l'endroit où je join la tâche, je n'arrive pas à add le joueur dans le tableau users de la table de la tâche...

rare gulch
#

salut ca fais deux jours je crois que j ai fais une erreur de syntaxe mais je trouve pas et j ai des erreurs de merde

#

(node:126) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'createChannel' of undefined
at Object.execute (/home/runner/bot/commands/setup.js:30:29)
at Client.client.on (/home/runner/bot/index.js:39:34)
at Client.emit (events.js:198:13)
at Client.EventEmitter.emit (domain.js:448:20)
at MessageCreateAction.handle (/home/runner/bot/node_modules/discord.js/src/client/actions/MessageCreate.js:31:14)
at Object.module.exports [as MESSAGE_CREATE] (/home/runner/bot/node_modules/discord.js/src/client/websocket/handlers/MESSAGE_CREATE.js:4:32)
at WebSocketManager.handlePacket (/home/runner/bot/node_modules/discord.js/src/client/websocket/WebSocketManager.js:393:31)
at WebSocketShard.onPacket (/home/runner/bot/node_modules/discord.js/src/client/websocket/WebSocketShard.js:434:22)
at WebSocketShard.onMessage (/home/runner/bot/node_modules/discord.js/src/client/websocket/WebSocketShard.js:294:10)
at WebSocket.onMessage (/home/runner/bot/node_modules/ws/lib/event-target.js:120:16)
(node:126) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:126) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.

slim anvil
#

Met le sur git à la limite que ce soit plus simple à la lecture

rare gulch
#

ok ok

slim anvil
#

Et montre ton fichier setup.js

#

Tu peux delete et me faire un screen please, je suis sur tel le rendu est affreux kappo

timid loom
#

super lisible donc je te comprends pas @slim anvil

slim anvil
#

Salaud

rare gulch
slim anvil
#

T’es un chef

#

tu as 2 lignes avec le createChannel, fais avant
const guild = client.guilds.get(servId)
Et log le voir si c’est pas undefined

#

Mais pourquoi tu récupères pas juste le client.guild ?

timid loom
#

@rare gulch aucun rapport avec l'erreur mais tu peux remplacer tes <Promise>.catch(err => console.error(err)); par <Promise>.catch(console.error);. Ici dans ton catch tu mets une fonction qui n'a que pour seul intérêt d'en appeler une autre, autant directement l'appeler (à part si tu veux réaliser un traitement).

rare gulch
#

ok merci les gars je prends note de vos commentaire je verais ca demain car j ai cour demain et il faut etre frai pour la journée

timid loom
#

tapator

#

@slim anvil je tacherai d'en prendre de la graine

slim anvil
#

HAHAHAHA quelle enflure ce mec, toi aussi prend en de la graine il se couche tôt lui

#

Good Night MrMoi

rare gulch
#

good night

frigid lantern
#

ah ouai trop chaud mdr comment on fait pour héberger un bot pls

slim anvil
#

tu te prend un petit serveur

#

tu en as des pas cher chez notre partenaire wizzard heberg par exemple

weak grove
#

Hello ! j'aimerais savoir comment récupérer une value dans une table mysql pour l'intégrer a un bot discord js ?

slim anvil
weak grove
#

ah nice merci 🙂

keen narwhal
#

J'aurais besoin d'aide avec ce code =>

client.user.setActivity("Surveillance serveur", {
  type: "STREAMING",
  url: "https://twitch.tv/"
});

Cannot read property setActivity

slim anvil
#

Tu l’as mis ce code ?

keen narwhal
#

Où*

spring dock
#

client.on("message") + check si c’est un message privé (message.channel.type === dm)

keen narwhal
#

personne ne saurait m'aider ? 😒

slim anvil
#

pourquoi tu essayes pas deja de faire, et quand tu bloques tu viens ici et on t'aide ??

keen narwhal
#

je l'ai dis...