#javascript-typescript

1 messages · Page 68 of 1

keen narwhal
#

Si arrive à faire sa je te paye le code xD 😂

cyan iron
#

Salut les gars, je viens vous voir car j'ai un problème assez majeur, que je n'arrive pas à résoudre :/

this.isMod = async function (member, guild, permission) {
                this.db.query(`SELECT * FROM guilds WHERE id = '${guild.id}'`, async (err, results) => {
                    let final_position = false
                    if (member.hasPermission('ADMINISTRATOR')) final_position = true
                    if (permission) final_position = guild.members.cache.get(member.user.id).hasPermission(permission);
                    if (results[0].moderator_roles) final_position = !!member.roles.cache.array().find(role => results[0].moderator_roles.split('/').includes(role.id));
                    return final_position
                })
        }

J'ai fait une fonction pour savoir si quelqu'un est modérateur sur un serveur, sauf que le problème, c'est que quand je return, ça ne me return rien :/
En gros, ça ne prend pas en compte les returns et les affectations de variables qui sont DANS le db query, comment faire ?

oak turret
#

pourquoi t'as mis !! ?

cyan iron
#

Alors écoute, c'est mon INTELIJ qui m'a mis ça harold
J'ai testé, et ça marche, je me suis renseigné, et en fait, ça détecte si il y a " quelque chose " ça return true

#

par exemple, "" ça return false

#

et "hey" ça return true

#

Sinon tu sais comment faire ou pas ? Parceque je suis en train de rager un peu

cyan iron
#

Personne ?

#

:c

mossy orchid
#

Bonsoir j'ai un soucis avec mon bot c'est qu'il prend pas en compte les attachement

#

jsp pourquoi quelqu'un peut m'aider svp ?

half osprey
#

Salut @mossy orchid c'est quoi le problème exactement ?

#

Si c'est que l'image ne s'envoie pas, il faut supprimer après avoir envoyé le message et lui laisser un temps ( message.delete( {timeout: 1000} )) pour que l'image charge

#

Personnellement je n'ai trouvé aucun moyen pour que l'image soit téléchargée puis envoyée pour éviter tous les bugs mais c'est la manière que j'ai trouvé d'éviter le plus de bugs

mossy orchid
#

comme ça

half osprey
#

Comme ça ?

mossy orchid
#

avant ça marchait

half osprey
#

Ok et ça te donne quoi

mossy orchid
#

jai fait 0 modif

#

et mtn

#

quand je mets la photo

#

ça ne prend meme pas

half osprey
#

.pnj ?

mossy orchid
#

oui

half osprey
#

Aucune erreur dans la console ?

mossy orchid
#

non 0

half osprey
#

C'est pas .png plutôt ?

#

C'est ça qui doit faire buger

#

Le format de l'image est pas le même que dans le code

mossy orchid
#

alors je change lequel ?

mossy orchid
half osprey
#

"img.pnj" c'est quoi

mossy orchid
#

bah limage

half osprey
#

Celle-ci elle est en .pnj ?

#

L'image

mossy orchid
#

png

#

la jai mis png dans le code

mossy orchid
half osprey
#

Ok

#

Laisse moi réfléchir

mossy orchid
#

ok

half osprey
#

Mais tu as upload dans le même channel la même image tout ?

mossy orchid
#

oui

half osprey
#

Essaie de mettre un await devant pour être sûr que l'image soit bien chargée

cyan iron
#

Salut les gars, je viens vous voir car j'ai un problème assez majeur, que je n'arrive pas à résoudre :/

this.isMod = async function (member, guild, permission) {
                this.db.query(`SELECT * FROM guilds WHERE id = '${guild.id}'`, async (err, results) => {
                    let final_position = false
                    if (member.hasPermission('ADMINISTRATOR')) final_position = true
                    if (permission) final_position = guild.members.cache.get(member.user.id).hasPermission(permission);
                    if (results[0].moderator_roles) final_position = !!member.roles.cache.array().find(role => results[0].moderator_roles.split('/').includes(role.id));
                    return final_position
                })
        }

J'ai fait une fonction pour savoir si quelqu'un est modérateur sur un serveur, sauf que le problème, c'est que quand je return, ça ne me return rien :/
En gros, ça ne prend pas en compte les returns et les affectations de variables qui sont DANS le db query, comment faire ?

Sans promise si possible car je sais comment faire mais c'est pas ouf

half osprey
cyan iron
#

Pas grave, je vais demande à Enzo

#

Je sais qu'il a la solution

half osprey
#

Avant le client.channels.cache.get('747903815126089748').send

#

Et met bien en haut le async

cyan iron
#

devant le message

#

async message =>

half osprey
#

Euh normalement client.on('message', async message => {

mossy orchid
oak turret
#

après je t'avoue que je trouve ton code un peu chelou mais bon

mossy orchid
#

jsp ça veut pas

mossy orchid
oak turret
#

le async charngera rien hein

#

si tu mets pas de await

half osprey
#

Ok je comprends pas vraiment pourquoi ça fonctionne pas

#

Tu l'as mis le await non ?

oak turret
#

t'as qu'à faire un try{} catch() {} pour voir

#

et tu log ton erreur

half osprey
#

Ouai fait ça

oak turret
#

j'comprends pas bien ton code Le

#

tu veux faire quoi ?

half osprey
#

Un twitter

oak turret
#

un twitter ? kappa

half osprey
#

Genre t'envoie un message et ça le met en embed comme ça avec l'image si il y en a une

oak turret
#

ok

#

bah tu fais un .setImage() un .setThumbnail() et ça suffitr

half osprey
#

J'avais aussi fait ça pour un serveur FiveM mais je l'avais pas fait comme ça

#

Moi j'avais pris le lien de l'image mais ça faisait des bugs de chargement

oak turret
#

non

mossy orchid
#

comme ça?

oak turret
#

bah faut mettre un lien dans ton .setImage()

#

oula

mossy orchid
#

mdr

cyan iron
oak turret
#

à la place de .array()

#

regroupe tout dans un Array.from(tatata.values)

cyan iron
#

Oui mais là c'est pas le problème xD

#

Le problème c'est la fonction

#

Elle me return pas ce qu'il faut

cyan iron
floral bolt
#

Salut, vous savez si il y a une api sur Amazon pour voir les prix et les transférer sur discord.js ?

cyan iron
#

duh, je crois pas

half osprey
#

Check sur le site de npm

slim anvil
#

Non Check juste sur le site d’Amazon developers

keen narwhal
#

Bonjour

#

J'ai une commande sur mon bot qui repont a un message, sauf je voudrais que cette dernière soit régulé ( slowmode ou coldown )
Avez vous une ligne a rajouter sur ce code pour éviter que l'utilisateur spam cette fonctionnalité de mon bot?

le code :

    if (message.content === "Salut") { // Lorsque "Salut" est envoyé
        message.channel.send("Salut l'ami !")
    }
})```
#

N'hésitez pas à me mentionner

timid loom
# keen narwhal J'ai une commande sur mon bot qui repont a un message, sauf je voudrais que cet...

Ça ne prendra pas qu'une ligne malheureusement
L'idée de base c'est de faire en sorte de stocker le timestamp de la dernière exécution de la commande et de vérifier que la commande est exécutée après un certain temps.
Il est aussi possible de stocker (dans une Collection ou une Map par exemple) l'id du dernier utilisateur qui l'a utilisée et le supprimer après les x secondes de ton intervalle d'utilisation via un setTimeout.

Tu l'auras compris y a plusieurs solutions, ça a déjà été fait donc tu peux par exemple utiliser des librairies qui implémentent ça (c'est ce qu'on appelle du throttling en anglais donc tu peux chercher ça sur google).
Une librairie comme Discord.js-Commando (https://discord.js.org/#/docs/commando/master/general/welcome) implémente ça en tant que feature "de base" donc tu auras juste une option à rajouter à ton constructeur de commandes et ça fonctionnera. Je te laisse décider toi-même et bonne chance

keen narwhal
#

Oula, j'ai pas trop compris.. donc, faut créé plusieurs fichier ?

#

Dossier*

#

Et le lien que tu m'a donné, tu peux plus m'expliquer stp ^^`

timid loom
#

Y a pas nécessairement besoin de créer plusieurs fichiers

#

C'est juste que c'est un système assez gros à mettre en place

#

Et le lien que je t'ai envoyé c'est le plugin Commando de discord.js

#

Il permet de faire des commandes de façon plus complexe que de base

#

attends j'ai un guide stv

cyan iron
#

Sinon tu peux le faire manuellement avec une collection et un setTimeout

#

Moi je fais comme c'est simple et efficace

timid loom
#

C'est d'ailleurs le système qui est implémenté par discord.js-Commando

#

Je dis juste que si tu vois pas comment faire voilà y a ça aussi

cyan iron
#

Commando je connais pas je regarderais

#

Aaah je vois j'ai compris

slim anvil
#

Il lui aura fallu 1 minute et 24 secondes pour comprendre commando, très rapide kappa

cyan iron
#

Roh j'ai compris dans sa globalité abuse pas kappa

keen narwhal
#

Merci

#

@timid loom, tu est disponible ?

#

Je suis vraiment perdu tu peux pas m'aider stp

timid loom
#

je t'ai déjà envoyé tout ce que je peux t'envoyer

#

je peux pas faire plus

full scaffold
#

Yo, je cherche à récupérer le n ème élement d'une liste que je récupère avec un querySelector sachant que

let currentLink = navList[1]

Ne fonctionne pas

cyan iron
#

Dans ce cas ce n'est pas une liste

#

Tu peux me console log ta " liste " please ?

full scaffold
cyan iron
#

Mais c'est du HTML ça

full scaffold
#

Bah oui

#

querySelector

cyan iron
#

bruh

full scaffold
#

Bah c'est du js que je fais là

spring dock
#

peut-être parce qu'il fait du js la

full scaffold
cyan iron
#

Oui mais c'est plus logique je trouve

spring dock
#

bah non?

full scaffold
#

Pas logique

spring dock
#

ce que tu viens de dire c'est comme si tu disais: "ah tu fait du php, bah va dans html-css wtf mec?"

cyan iron
spring dock
#

rien à voir

slim anvil
#

Oui ça reste du js hein js c’est pas que discord js harold

cyan iron
#

Oui bah excuse moi 80% des gens ici viennent pour du discordjs xD

#

Moi ça me perturbe

spring dock
#

c'est donc pour ça que du javascript pour du web ça deviens du html ou du css

#

je comprends mieux

cyan iron
#

Sinon du coup bro désolé je connais pas ton truc je suis à chier en web

cyan iron
#

Vous devriez séparer et faire un salon " web " et un salon " discordjs "

#

¯_(ツ)_/¯

queen ocean
slim anvil
#

Après c'est plus de la remise en question personnelle je trouve, si pour toi tu es développeur discord.js et pas développeur js.... chacun ces ambitions myman

cyan iron
#

Après bon pour l'instant je débute en développement j'ai commencé en milieu 2020

#

Donc bon

#

J'ai fait vite fait du html css

slim anvil
#
.children[1]
``` sur ton element
cyan iron
#

Enzo le beau gosse comme d'habitude

slim anvil
#

si tu veux voir a quoi ressemble l'objet html tu fais juste un log avec les {} genre
console.log({ navList })
et la tu auras toute la structure de ton node element

#
const navList = document.querySelector('ul')
console.log(navList.children[1])

en gros

full scaffold
#

ok je check le boss

cyan iron
#

Désolé de vous interrompre, mais tu t'en sers pour faire quoi exactement ?

#

J'essaye d'apprendre en même temps 👀

slim anvil
full scaffold
#

oui

slim anvil
#

Cibler un élément c’est important pour qu’ensuite tu puisses dessus faire des évents, animation ou autre

cyan iron
#

ok donc en gros c'est pour edit du CSS ?

timid loom
#

nan pour edit le contenu

cyan iron
#

Mais en JS ?

slim anvil
#

Pas forcément

cyan iron
#

Le contenu de la page

slim anvil
#

pour agir dessus que ce soit visuel ou non

cyan iron
#

Okkk je vois

#

J'ai compris

timid loom
#

Donc ça peut être le texte d'un paragraphe, ajouter un élément à une liste

cyan iron
#

En gros tu sélectionne une partie de ton code pour le modifier

slim anvil
#

un évent click ou autre

#

oui en gros mais alors gros 👀

timid loom
#

On peut le voir comme ça sauf que tu le modifie que pendant l'exécution

cyan iron
#

oui bien sûr

#

Ok merci 👍

slim anvil
#

En gros agir sur le DOM c’est une base clé du JavaScript côté web

keen narwhal
#

Help me x)

oak turret
#

bah déjà t'as 2 fois le même event donc bon

keen narwhal
oak turret
#

client.on("message") x2

keen narwhal
#

Ha mais oui sa c'est normal car il a différant message

oak turret
#

ouf

#

non

#

regarde un tuto..

slim anvil
#

C’est pas bien grave en soit d’avoir 2 évents enfin ça cassera pas le code c’est juste pas opti

spring dock
#

Faut juste que tu vérifie que le contenu du message soit la commande au tout début de ton event, si ce n'est pas le cas, tu return

#

au lieu de vérifier après avoir fait tes vérifications de cooldown

oak turret
#

dis @slim anvil, t'as utiliser quoi comme module pour faire tes prompter en dm ?

#

car il peut pas awaitMessages en dm donc je vois pas comment faire

#

pour les vocaux privés je parle

tame shore
#

@slim anvil

#

j'ai besoin d'aide s'il te plaît

#

Comment on donne une suite logique a un bot ?

#

discord

#

J'ai rien trouvé sur internet

keen narwhal
#

2 mention en moins de 5m x)

slim anvil
#

comment ça une suite logique @tame shore ?

tame shore
#

Genre si je demande a mon bot de marqué des chiffre a l'infinie sur un channel

#

avec un écart de 0

#

suite logique = 1 2 3

#

une suite logique

#

mais comment je fait pour qu'il l'a poursuive

keen narwhal
#

moi je sais conté 1 2 3 8

#

suite logique 😉

slim anvil
#

@tame shore tu fais une boucle ou il incremente une variable de 1

tame shore
#

bruh

#

mdr

keen narwhal
#

x)

tame shore
#

je vais regardé comment faire sa

#

Merci

#

et désolé du ping

tame shore
#

avec un écart de 0 0 0 5

slim anvil
#
let count = 0;
while (count < 20) {
  console.log(count++)
}

@tame shore par ex

tame shore
#

oh thanksss

keen narwhal
#

a merde

#

je savais pos

slim anvil
#

bah @oak turret tu parles de set un password etc ?

oak turret
#

oauip en rejoignant un vocal

tame shore
oak turret
#

je passe par voiceStateUpdate perso ?

slim anvil
#

Ah oui pour le vocal oui

keen narwhal
#

ha oki

slim anvil
#

Mais ensuite pour set le password c'est via une commande

oak turret
#

yes ça j'imagine

slim anvil
#

Mais du coup oui le principe de créer etc c'est via le voiceStateUpdate

oak turret
#

yep mais du coup comment tu le dm le mec ? car awaitMessage fonctionne po quoi, fin avec un prompter ( j'use pas commando là )

slim anvil
#

bah tu lui envoie un message pour lui dire "fais ça"

#

et ensuite il fait ça sans await Messages

#

je passe par une commande ensuite

#

du coup c'est plus dans l'event stateUpdate mais message

oak turret
#

putain oui j'suis con my bad

#

j'y avais pas pensé

half osprey
#

Bonjour,

Est-ce que c'est possible de faire que une action se fait que si le message existe encore ?

Explications :
On envoie un message et on réagis avec 7 émojis, à partir du moment que il y a une réaction le message se supprime (même si il n'y a pas encore toutes les réactions) c'est le but.
Mais du coup ça fait une erreur comme le message n'existe plus on peut pas rajouter de réactions.

Mon code pour vérifier si le message existe (qui ne fonctionne pas) :
Je précise que message est bien le message auquel on veut ajouter la réaction

        if (message) message.react("🚨")
        if (message) message.react("🔰")
        if (message) message.react("🆘")
        if (message) message.react("🏆")
        if (message) message.react("❔")
        if (message) message.react("📝")
        if (message) message.react("💬")

Tout fonctionne mais si on réagis avant que il y ait toutes les réactions ça met une erreur "Unknown message"

Merci de bien vouloir m'aider :)

timid loom
#

tu mets un try catch

slim anvil
#

Tu peux .catch pour gérer si il y a une erreur

#

Putain taink

half osprey
#

Mdrr

#

Mais pas moyen de vérifier si le message existe ?

slim anvil
#

Tu vas devoir get avant chaque réaction

#

Alors qu’avec un try catch tu peux stopper des une erreur

half osprey
#

Ouai

#

J'avoue

timid loom
#
try {
  message.react(":rotating_light:")
  message.react(":beginner:")
  message.react(":sos:")
  message.react(":trophy:")
  message.react(":grey_question:")
  message.react(":pencil:")
  message.react(":speech_balloon:")
} catch(error) {
  console.error(error)
}
half osprey
#
        try{
          message.react("🚨")
          message.react("🔰")
          message.react("🆘")
          message.react("🏆")
          message.react("❔")
          message.react("📝")
          message.react("💬")
         } catch{
           
         }

Comme ça c'est good ?

timid loom
#

je crois que ça ça fonctionne

#

le catch il faut un paramètre

half osprey
#

Ah et si je veux qui se passe juste rien

timid loom
#

bah tu peux rien mettre

#

j'ai mis un console.error pour que tu puisse quand même voir l'erreur au cas où

#

mais tu peux rien mettre si tu veux

half osprey
#

Ouai

#
       try {
          message.react("🚨")
          message.react("🔰")
          message.react("🆘")
          message.react("🏆")
          message.react("❔")
          message.react("📝")
          message.react("💬")
         } catch(error) {
           console.log(error)
         }
#

Donc ça c'est bon

timid loom
#

oui

slim anvil
#

Oui

spring dock
#

oui

half osprey
#

Merki

#

C'est bon vous allez pas mettre les 4000 membres pour me dire que c'est bon x)

ancient sonnetBOT
#

oui

ionic hollyBOT
#

oui

half osprey
#

Mais du coup j'ai quand même l'erreur dans ma console, ça a rien changé xD

#

Breeef c'est pas grave

slim anvil
#

Enlève le console.error

#

Tu l’auras plus logiquement

#

Mais laisse le catch

half osprey
#

Bien vu sherlok

half osprey
#

Hey,

Vous avez un code ou une technique pour détécter quand quelqu'un rejoins un vocal et le quitte ?

J'ai beau essayer avec le voiceStateUpdate.js j'y arrive pas

hazy mirage
#

C'est avec l'event voiceStateUpdate, il faut comparer le channel du old et le channel du new 😉

half osprey
#

On est d'accord que c'est censé fonctionner ?

module.exports = (oldMember, newMember) => {
  let newUserChannel = newMember.voiceChannel
  let oldUserChannel = oldMember.voiceChannel

  if(oldUserChannel === undefined && newUserChannel !== undefined) {

     console.log("Rejoins !")

} else if(newUserChannel === undefined){

console.log("Quitté !")

}}
#

Quand je rejoins et quand je quitte ça met que je quitte

hazy mirage
#

Fait du débug alors KaPOP

half osprey
#

Comment ça

spring dock
#

console.log ton newUserChannel et ton oldUserChannel

half osprey
#

Ils sont "NaN"

oak turret
#

perso

#

j’ai fais

#

si oldstate == null || oldstate != null && newstate != null // il rejoint un vocal

#

de mémoire

#

mais check oldstate.channelID et newstate.channelID

slim anvil
#

donc ta condition c’est si oldState == null ou si il est !== null ? harold

#

T’as pas l’impression qu’il y a un soucis

#

Ah non autant pour moi j’avais pas vu le || danse

oak turret
#

^^

#

j’ai oublié le .channelID aussi mais en théorie ça fonctionne je l’ai fais hier

half osprey
#

Ça me donne toujours pas la solution

#

J'ai rejoins puis quitté

#
module.exports = (oldState, newState) => {
  let newUserChannel = newState.channelID
  let oldUserChannel = oldState.channelID

  console.log("New Channel : " + newUserChannel + " | Old Channel : " + oldUserChannel)

  if (oldUserChannel == null || oldUserChannel != null && newUserChannel != null) {

     console.log("Rejoins !")

} else {

     console.log("Quitté !")
}} 
oak turret
#

.channelID

half osprey
#

J'ai réussi mais j'arrive pas à moove la personne

#
user.setChannel(chan)
#

Ça marche pas

oak turret
#

faut faire .join()

half osprey
#

Je veux pas faire rejoindre le bot

#

Je veux moove la personne

#

Trouver

#

C'est voice.setChannel

oak turret
#

Hello, vous savez comment arrêter cette foutu erreur, alors que bon je pense que ma condition est ok non ?

#

c'est good ! j'ai juste clearInterval() ^^

half osprey
#

Tu fais comment ?

oak turret
#

d'ailleurs j'ai un async inutile

half osprey
#

Merci

half osprey
#

Est-ce que quelqu'un sait comme faire quelque chose comme ça dans un filtre de await message ? (vérifier si c'est un nombre positif -> si pas le cas envoyer "mettre un nombre positif")

if (m.author.bot) return
if (Number.isNaN(+m.content)) {
user.send({embed: new MessageEmbed()
.setColor("#105785")
.setTitle("Entrez un nombre positif !")})
} else {
if (!m.content >= 0) { 
user.send({embed: new MessageEmbed()
.setColor("#105785")
.setTitle("Entrez un nombre positif ! 2") }) 
  return
}
}
oak turret
#

si il est < 0 :x

half osprey
#

Oui mais aussi vérifier si c'est un nombre

#

Et faire que ça envoie le message "mettre un nombre positif" dans le filtre on fait comment

half osprey
oak turret
half osprey
#

Je demande pas ça mais pas grave :|

#

Je veux que si le nombre n'est pas positif ou n'est pas un nombre, le bot envoie un message "Envoyez un nombre positif !"

#
message.channel.awaitMessages((m) => 
!m.author.bot 
&& 
!Number.isNaN(+m.content) 
&&
m.content >= 0, 
{ max: 1, time: 0 })

ça fonctionne mais il y a pas le message

oak turret
#

tu demandes un nombre positif

#

il te le return là

half osprey
#

Tu as pas compris

#

:|

#

Je veux que si les conditions ne sont pas respecter (pas un nombre ou un nombre négatif) ça envoie un message en disant "mettez un nombre positif"

slim anvil
#
const number = Number(m.content)
if (isNaN(number) && number < 0) {
  return user.send({embed: new MessageEmbed()
.setColor("#105785")
.setTitle("Entrez un nombre positif ! 2") }) 
}
oak turret
#

aah mais j'avais pas compris

half osprey
slim anvil
#

maybe

#

la comme ca je sais pas

cyan iron
#

Hey tout le monde, je sais pas si vous voyez ce que j'essaye de faire, mais en gros je tente de stocker des infos DANS DES EMBEDS xD
Donc j'ai tenté ça, mais ça serait trop beau https://pic.is-inside.me/oVQjGlcK.png

#

C'est pour un système qui fonctionne quasiment H24 et que j'essaye d'optimiser au maximum, donc si on peut éviter de remplir la database ou de créer des fichiers JSON, ce serait cool !

#

Je suis fou ?

slim anvil
#

Oui

#

Ils stockeront pas ton user_id dans l’embed

cyan iron
#

Ajouter une nouvelle propriété ne fonctionne pas ni le cacher dans le timestamp

cyan iron
slim anvil
#

tu peux me foutre dans le timestamp

cyan iron
#

Nan ça essaye de convertir en date je pense et du coup work pas :c

slim anvil
#

Mais tu pourras pas ajouter un nouveau champ comme ça ce qui est normal en soit

cyan iron
slim anvil
#

Ah oui fous le dans le footer sinon

cyan iron
#

Je tente ailleurs

slim anvil
cyan iron
slim anvil
#

ewi

cyan iron
#

AHAAHAHAH

#

C'est exactement ce que je veux faire

#

Mais je compte utiliser ce système pour un système de vérifications, et donc ça serait plus pratique de le cacher, si j'y arrive je vous dit, sinon tan pis -> footer

#

Ah les enfoirés, je crois qu'ils delete tout ce qui ne s'affiche pas pepecry

#

Bon bah RIP xD

oak turret
#

pour le icon url

#

tu peux juste faire message.author.displayAvatarURL()

slim anvil
#

Tu passes par l’api de discord qui doit forcément checker chaque champs que tu envoies pour vérifier si il est conforme ou autre

#

Sinon c’était vraiment fait avec les pieds harold

cyan iron
#

Oui xD

signal marsh
#

Bonjour j'ai un problème
Bout du code :

const SetChannel = member
const response = await SetChannel.awaitMessages(filter, {max: 1, time: 60000, errors: ['time']});

Erreur :

TypeError: SetChannel.awaitMessages is not a function
cyan iron
#

Tu peux pas awaitMessages sur un membre

#

Ca doit être sur un channel !

signal marsh
#

ha et je peut pas faire pour que sa soit en mp ?

half osprey
cyan iron
half osprey
#

J'ai un problème avec mon système d'invitation (je stock toute les invitations dans le fichier invites.json)

Voici le code :

        const invites = {}
        const guildSupport = client.guilds.cache.get("681855957441183755");
        let logsInvites = require("../../invites.json");

        guildSupport.fetchInvites().then(guildInvites => {
            invites[guildSupport.id] = guildInvites;

            const invite = guildInvites.find(i => logsInvites.get(i.code).uses < i.uses);

L'erreur :
UnhandledPromiseRejectionWarning: TypeError: logsInvites.get is not a function
Est-ce que quelqu'un connait une autre méthode pour .get ou régler le problème ?

cyan iron
#

Tu n'utilises pas bien le find, en fait il faut que ça soit comme dans un if une comparaison

#

Du coup pas sûr que tu puisses get dans logsInvites, mais plutôt tu dois faire un autre find

#

Ah mais non c'est un fichier JSON !

#

Je peux voir la structure du fichier please ?

keen narwhal
#

Bonjour,
J'aurais besoin de vos connaissances,
Actuellement mon bot change un embed tout les 5 seconde, qui indique le statut de mon serveur.
J'aurais besoin de quand le serveur gmod et entrain de s'éteindre ( voir image ou y'a marqué Stoping ) que le bot envoi un message en dessous avec la mention d'un rôle prédéfinis, et qu'il supprime se message dans les 10minutes ou 5minutes qui suis

Et de la même chose quand il démarre

Merci de vos réponses

#

Mentioner moi svp si vous pouvez m'aider..

cyan iron
#

@keen narwhal

keen narwhal
#

Ui ?

cyan iron
keen narwhal
#

C'est drôle ?

cyan iron
#

Oui très

keen narwhal
#

:|

#

@cyan iron par hasard, tu sais pas comment je pourrait faire pour le message du dessus ?

cyan iron
#

Tu sais comment savoir si ton serveur est OFF ?

#

Ou c'est ça que tu cherches

#

C'est pas très clair

keen narwhal
#

Alors, je vais mieux expliquer

cyan iron
#

Si tu sais, je peux t'aider, si tu sais pas, je peux rien faire désolé

keen narwhal
#

Je voudrais que quand le serveur s'arrête donc que quand y'a l'embed Stoping, que le bot envoie un message juste en dessous de Lembed avec une mention de rôle plus un message disant que le serveur s'est arrêté et de même quand le serveur s'allume, je peux t'expliquer vocal si tu comprend pas ^^

#

Et que en suite il supprime le message en dessous de l'embed 10m après

slim anvil
#

@cyan iron du coup oui il sait quand le serveur est off
@keen narwhal tu rajoutes juste une condition si le serveur est off d’envoyer un second message

#

@half osprey on delete les messages automatiquement qui contiennent une invitation discord

cyan iron
#

Ok d'accord, donc oui du coup t'as juste à faire un channel.send je comprends pas :/

keen narwhal
#

10m* après ^^

slim anvil
#

tu .send un nouveau message, et tu .then dessus pour ensuite message.delete(duration) par exemple

keen narwhal
#

Oula, je sens qu'il va avoir des erreur xD

slim anvil
#

Après si le bot crash avant les 10 minutes faudrait que au démarrage tu fetch les messages du channel et que tu les supprimes tous sauf le principal

keen narwhal
slim anvil
#

on sait jamais

keen narwhal
#

Sa te dérangerai de vocal juste pour éviter que je niq#e tout le code

half osprey
# cyan iron Je peux voir la structure du fichier please ?

En gros :

        "guildID": "681855957441183755",
        "code": "yYbnD6YrEy",
        "temporary": false,
        "maxAge": 0,
        "maxUses": 0,
        "inviterID": "295129219426680833",
        "targetUser": null,
        "targetUserType": null,
        "channelID": "708082687331795037",
        "createdTimestamp": 1612202770108,
        "url": "-",
        "expiresTimestamp": null
    }
]```
cyan iron
#

C'est tout le fichier ça ?

#

Dans ce cas tu peux delete les [, ça sert pas à grand chose si tu rajoutes rien après

slim anvil
cyan iron
#

@half osprey

half osprey
cyan iron
keen narwhal
cyan iron
#

ça contient une invite

#

delete là juste

half osprey
#
        "guildID": "681855957441183755",
        "code": "rBBrGgTmcx",
        "temporary": false,
        "maxAge": 0,
        "maxUses": 0,
        "inviterID": "402042342627999744",
        "targetUser": null,
        "targetUserType": null,
        "channelID": "708285634720170075",
        "createdTimestamp": 1612729316011,
        "url": "https://  rBBrGgTmcx",
        "expiresTimestamp": null
    },
    {
        "guildID": "681855957441183755",
        "code": "yYbnD6YrEy",
        "temporary": false,
        "maxAge": 0,
        "maxUses": 0,
        "inviterID": "295129219426680833",
        "targetUser": null,
        "targetUserType": null,
        "channelID": "708082687331795037",
        "createdTimestamp": 1612202770108,
        "url": "https://   yYbnD6YrEy",
        "expiresTimestamp": null
    }
]```
keen narwhal
#

@cyan iron, tu est dispo pour que tu m'aide apres avoir aidé Yphar ? ^^

cyan iron
#

Oui si tu veux

keen narwhal
#

Merci ^^

cyan iron
#

Ah mais non

#

Attends 2s

#

Tu veux rechercher dans ton JSON ?

half osprey
#

Oui

oak turret
#

bah t'as qu'à faire une boucle

cyan iron
#

Bah non y'a mieux

#

Il met en nom le code

#
{
    "rBBrGgTmcx" : {
        "guildID": "681855957441183755",
        "temporary": false,
        "maxAge": 0,
        "maxUses": 0,
        "inviterID": "402042342627999744",
        "targetUser": null,
        "targetUserType": null,
        "channelID": "708285634720170075",
        "createdTimestamp": 1612729316011,
        "url": "https://  rBBrGgTmcx",
        "expiresTimestamp": null
    },
    "yYbnD6YrEy" : {
        "guildID": "681855957441183755",
        "temporary": false,
        "maxAge": 0,
        "maxUses": 0,
        "inviterID": "295129219426680833",
        "targetUser": null,
        "targetUserType": null,
        "channelID": "708082687331795037",
        "createdTimestamp": 1612202770108,
        "url": "https://   yYbnD6YrEy",
        "expiresTimestamp": null
    }
}
#

Voilà

#

Tu peux même

half osprey
#

Je peux pas le changer parce que c'est une génération automatique

cyan iron
keen narwhal
cyan iron
#

Je vais devoir déco déso :/

keen narwhal
#

..

#

Tu a pas un code a me balancer comme sa

#

que je modif ?

slim anvil
#

Sinon tu fais juste un .find @half osprey

#

Pas besoin de le foutre en objet si ça te dérange, juste un find et puis voilà

#

faire une boucle c’était en 2014 ça harold

cyan iron
#

On peut faire un .find dans un JSON ? harold

keen narwhal
#
client.on("message", function (message) {
    if (State === 'on') {
        client.channels.get("812698800622796850").send("@Notifications status serveur { Gmod }, Le serveur démarre !")
        .then(msg => {
    msg.delete(6000)
  })
    }
})```
#

@cyan iron @slim anvil, le code et bon comme sa ?
je suis pas sur x)

oak turret
#

test tu verras

slim anvil
#

si tu le parse avant tu auras un tableau ou un object

keen narwhal
slim anvil
#

Faut que tu mettes ce code au meme niveau que l'embed qui gère le statut pour avoir accès au State

keen narwhal
#

Ha okkkk

#

j'essaye

#

mercii

slim anvil
#

car là tu es pas dans la meme scope donc tu auras pas accès a cette variable, sauf si elle est global mais g-d-doutes

keen narwhal
#

On peut m'aider svpp

half osprey
keen narwhal
#

Bonsoir, j'ai un petit soucis avec mon code si dessous :

client.on("message", message => {

    if(message.channel.type === "dm"){

        if(message.content == prefix+"candidature"){

            if(message.author.bot) return;

            if(message.content.length >= 1024) return message.author.send("**×** Ton message doit faire moins de 1024 caractères ");

            var msg = message.content.substring(12)
            if(msg === "") return;

                var embed = new Discord.RichEmbed()
                    .setAuthor('Candidature')
                    .setThumbnail('https://cdn.discordapp.com/app-icons/692211367595474955/b3b51ec7db655b1a46976ff4d14a8318.png?size=256')
                    .addField(`Candidature :`, `${msg}`)
                    .setTimestamp()
                    .setColor(0x1770c9)

                    client.channels.get(candiatureId).send(embed)
        };
    };
})

Mon (if(message.content == prefix+"candidature")) ne marche pas, en gros en faisait -candidature [candidature] en mp du bot rien ne se passe, si j'enlève la ligne n'importe qu'elle message marche

#

Auriez vous une idée ? (sa fait longtemp que je n'est pas fait de bot, je suis rouillé)

half osprey
#

client.channels.cache.get

#

message.content

#

Pas besoin du .substring je pense

#

Après la comme ça c’est compliqué

slim anvil
#

@keen narwhal

if(message.content == prefix+"candidature")

la tu vérifies que le message envoyé = -candidature seulement donc si toi tu mets autre chose après forcément ce ne sera pas bon

if(message.content.startsWith(`${preix}candidature`)) {
  // code block
}
keen narwhal
#

Bonjour, je pourait avoir un code hyper simple pour que mon bot supprime les invite discord svp, merci de votre aide ^^ ( me mentionner si vous pouvez m'aider ) ^^

cyan iron
#

@keen narwhal il faut que tu utilises une regular expression 👍

keen narwhal
#

On peut trouver sa ou ?

#

^^`

cyan iron
#

Voilà

keen narwhal
#

D'accord merci ^^

cyan iron
#

La documentation MDN

keen narwhal
#

Super merci beaucoup

cyan iron
#

J'ai 2h d'etudes je me fait chier donc si quelqu'un a besoin d'aide, I'm here

keen narwhal
#

Hier tu m'avais dit que tu pouvais m'aider xD

keen narwhal
cyan iron
#

Yep mais j'etais pas là

#

Mais là je suis là !

keen narwhal
#

D'accord, super sa

#

Mp ou ici ?

keen narwhal
#

Mais ne fonctionne pas °-°`

cyan iron
#

Ici c'est fait pour

#

Oula sur mobile 😂

keen narwhal
#

Ui mon pc fait une mise à jour Windows ☹️

cyan iron
#

Dans le if state === off

#

Tu fais un channel.send

#

¯\_(ツ)_/¯

keen narwhal
#

D'accord

cyan iron
#

Classique quoi

#

Tu get ton channel

keen narwhal
#

Fetch nan ?

#

Channel.fetch

cyan iron
#
client.channels.cache.get('ID') 
#

Mieux

keen narwhal
#

Hum ok

#

Alors je met sa dans

#

J'envoie le code

cyan iron
#

Avec le fetch t'es obligé de faire un then

#

Donc relou

#

Dans ton if state === off

#

Tu met ça

#
client.channels.cache.get('ID').send("le serv est off!") 
#

Tout bêtement

keen narwhal
#
                State = 'En-ligne ✅';
                Color = '#00FF00';
            } else if (State === 'off') {
client.channels.cache.get('ID').send("le serv est off!") 
                State = 'Hors-Ligne ❌';
                Color = '#FF0000';
            } else if (State === 'stopping') {
                State = 'Arrêt ❌';
                Color = '#FF0000';
            } else if (State === 'starting') {
                State = 'Démarrage 🚀';
                Color = '#FFFF00';
            }
            
            /*
            client.channels.fetch("812698800622796850").send("@Notifications status serveur { Gmod }, Le serveur démarre !").then(msg => {
                    msg.delete(6000)});```
#

Comme sa ?

cyan iron
#

Oui

#

Il faut que tu comprennes ce que tu fais

keen narwhal
#

Je vais essaye

cyan iron
#

Si tu ne comprends pas et que tu copies bêtement ça sert à rien :/

keen narwhal
#

Je comprend vaguement

keen narwhal
cyan iron
#

Tu t'es trompé d'ID sûrement

keen narwhal
#

Alors soit je suis con ou con tu choisi ^^ xD

cyan iron
#

T'as vraiment laissé " ID " PTDRRR

keen narwhal
#

Et encore je peux dire Merci a ftnl, d'avoir détecté son spam qui a supp des message °-°

keen narwhal
cyan iron
#

Ptdrrr

keen narwhal
#

@cyan iron faut faire quoi ducoup ?

#

Je veux qu'il envoie qu'un message et qu'il le supprimer 10m après

keen narwhal
#

Bah le hasPermission et null mais je comprend pas pourquoi

spring dock
#

c'est message.member qui est null

#

ce serait pas plutôt message.author que tu veux?

slim anvil
#

alors normalement c'est bien sur le <GuildMember> mais message existe bien aussi ?

keen narwhal
#

S'il te plait ^^

keen narwhal
keen narwhal
keen narwhal
#

pour quoi tu fait une variables var ?

#

Internet :/

#

Je vais te send en mp une setInterval simple ^^

#

Super merci ^^

slim anvil
keen narwhal
#

Faut que j'install nodejs et que je setup tout car j'ai reboot mon pc il y à pas longtemp

#

Et le prob c'est que il es 10:10 donc dans 10 minutes je dois aller en sport

#

Donc je sais pas si j'aurai le temps

slim anvil
keen narwhal
#

Sinon voir le code pourrais aidé

#

message.user pourrais work ?

slim anvil
#

logiquement c'est sur le member donc message.member

#

log juste message, puis message.member et tu verras direct si c'est okay ce sera le plus simple

keen narwhal
#

Faudras que je test à soir

#

J'ai pas le temp de setup node js

keen narwhal
#

J'ai une erreur que j'arrive pas a resoudre pouvez vous m'aider voici le code :

if (State === 'on') { 
                var interval = setInterval (function () {
            client.channels.cache.get('812698800622796850').send("( test ) le serveur est en ligne !");
               message.delete({timeout: 600000}); 
            });
                State = 'En-ligne :white_check_mark:';
                Color = '#00FF00';
            } else if (State === 'off') {
                 var interval2 = setInterval (function () {
            client.channels.cache.get('812698800622796850').send("( test ) le serveur est arrêté !");
               message.delete({timeout: 600000}); 
            });
                State = 'Hors-Ligne :x:';
                Color = '#FF0000';
            } else if (State === 'stopping') {
                 var interval3 = setInterval (function () {
            client.channels.cache.get('812698800622796850').send("( test ) le serveur est entrain de s'arrêté !");
               message.delete({timeout: 600000}); 
            });
                State = 'Arrêt :x:';
                Color = '#FF0000';
            } else if (State === 'starting') {
                 var interval4 = setInterval (function () {
            client.channels.cache.get('812698800622796850').send("( test ) le serveur est entrain de démarrer");
               message.delete({timeout: 600000}); 
            });
                State = 'Démarrage :rocket:';
                Color = '#FFFF00';
            }```
slim anvil
#

message is not defined

#

car tu message.delete() mais tu le definis nul part

#

@half osprey tu peux me reexpliquer ton soucis spt

#

@keen narwhal tu peux faire un .then sur le .send

#

comme ca tu pourras récupérer le message envoyé puis le .delete()

cyan iron
#

Si tu veux un conseil essayé de revoir les bases @keen narwhal pour apprendre à mieux gérer tout ça 😉
Tu vas voir que ça va être plus simple pour toi

slim anvil
#
client.channels.cache
.get('812698800622796850')
.send("( test ) le serveur est en ligne !")
.then(message => {
  message.delete({timeout: 600000})
})

si je dis po de connerie

keen narwhal
#

je test sa imediatement enzo et je te dirait ^^

cyan iron
#

Yep c'est ça

keen narwhal
#

je l'aise l'interval ?

slim anvil
#

Bawi

#

ca va dans ton interval

keen narwhal
slim anvil
#
if (State === 'on') {
  setInterval(() => {
    client.channels.cache
    .get('812698800622796850')
    .send("( test ) le serveur est en ligne !")
    .then(message => {
      message.delete({timeout: 600000})
    })
  })
}

et ensuite tu fais ce qu'il faut pour si il est off ou autre

keen narwhal
#

ok, je test merci beaucoup

slim anvil
#

Mais a quoi sert l'interval enfaite

keen narwhal
#

A eviter que le bot spam les message

#

je veux qu'il envoi qu'une fois

slim anvil
#

ouais fin le setInterval c'est justemement pour éxécuter une action toutes les x secondes 😂

keen narwhal
#

..

#

donc c'est pas le bon code ?

slim anvil
#

no

keen narwhal
#

😢

#

effectivement il spam °-°'

#

Comment on fait pour lui dire de l'envoyé qu'une fois ?

slim anvil
#
let status, title, color

switch (State) {
  case 'off':
    status = 'le serveur est arrêté'
    color = '#FF0000'
    title = 'Hors-Ligne :x:'
    break;
  case 'stopping':
    status = 'le serveur est entrain de s\'arrêté'
    color = '#00FF00'
    title = 'Arrêt :x:'
    break;
  case 'starting':
    status = 'le serveur est entrain de démarrer'
    color = '#FFFF00'
    title = 'Démarrage :rocket:'
    break;
  default:
    status = "Le serveur est en ligne"
    color = '#00FF00'
    title = 'En-ligne :white_check_mark:'
}

client.channels.cache
.get('812698800622796850')
.send(status)
.then(message => {
  message.delete({timeout: 600000})
 })
#

tiens ca évite le code redondant

keen narwhal
#

Je modif tout le code par se code

slim anvil
#

Ouais t'enleve ton if State === 'on' etc

#

et tu mets ça

keen narwhal
#

sa je vire

slim anvil
#

Ouais le var Color aussi

#

car je l'ai define plus bas donc pas de soucis

#

c'est un sacré bordel tout ça

keen narwhal
#

Tu est dispo vocal pour un partage ?

slim anvil
#

no sorry je suis au taff 😦

keen narwhal
#

Meme si tu parle pas ? x)

#

tu fait dans un ecrit

#

sa donne sa

#

je lance le bit

#

bot je te dit

#

.setColor(Color)
ReferenceError: Color is not defined

oak turret
#

Color = ?

keen narwhal
#

Yes faut que je mette une couleur

oak turret
#

bah oui du coup

slim anvil
#

je t'ai dis de delete color

keen narwhal
#

ben je l'ai dellete

slim anvil
#

donc du coup c'est plus Color mais color

#

relis ton code ensuite

keen narwhal
#

ya que celui la

slim anvil
#

dans ton .setColor(Color)

#

met .setColor(color)

#

regarde juste l'erreur c'est bien indiqué

fathom jay
#

hello, je suis un ptit peu embêté car je n'arrive pas à trouver la propriété JS qui me permet de trouver l'endroit de ma section sur la page qui ferait que quand je clique sur le bouton, mon scroll descend jusqu'à ma section qui fait 100vh, merci

#

ups c'est pas le bon screen

slim anvil
#

joue avec les encres html et un smooth scroll

#
scroll-behavior: smooth
#

sur ta div ou ca doit aller tu mets par exemple un id="section_1 et sur ton lien href="#section_1

half osprey
keen narwhal
#

a chaque requete de l'api

keen narwhal
slim anvil
#

Ah bah oui moi je sais pas après comment est fait le code qui contient tout ça

#

tu dois avoir un interval sur ta requête principal donc oui ca reste logique en soit

keen narwhal
#

Et on peut faire quoi quand c'est comme sa x)

keen narwhal
slim anvil
#

Bah le truc je vois pas trop de logique a ton truc

fathom jay
#

ah oui je me complique la vie pour rien 0_O, merci Enzo

oak turret
#

mais pourquoi t'envoies un message ? et pas plutôt tu modif le title de ton embed ? ou ton field

keen narwhal
oak turret
#

un peu pété mais comme tu veux

keen narwhal
#

Il peux juste pas l'envoyer qu'une fois ?

oak turret
#

bah normalement ça l'envoi qu'une fois mais ton truc doit être mal fait

keen narwhal
#

Stv je te donne le code

#

en mp

oak turret
#

nop pas mp

keen narwhal
#

ok

#

je te donne via un truc de mon hebergeur

#

Tu vois qu'elle que chose?

#

j'ai supp

#

dit moi si tu en a besoin

slim anvil
#

@keen narwhal c'est juste que tu fais un interval toutes les 5 secondes ou ta requete est rappelé, donc forcément le code de ce message aussi
Il faudrait a la limite venir voir si il y a pas deja ce message d'existant mais bof car toutes les 5 secondes ca va spam requete c'est pas ultra dingue

keen narwhal
#

J'ai pas compris

#

Il modif l'embed toute les 5s, apres faudrai faire en sorte qu'il n'envoi pas le message tout les 5s aussi

#

Bon @slim anvil j'abandone le truc, je vais faire en sorte que quand on fait !statuson bas il envoie le message

half osprey
# slim anvil <@!295129219426680833> tu peux me reexpliquer ton soucis spt

J'ai un problème avec mon système d'invitation

Voici le code :

        const invites = {}
        const guildSupport = client.guilds.cache.get("681855957441183755");
        let logsInvites = require("../../invites.json");

        guildSupport.fetchInvites().then(guildInvites => {
            invites[guildSupport.id] = guildInvites;

            const invite = guildInvites.find(i => logsInvites.get(i.code).uses < i.uses);

L'erreur :
UnhandledPromiseRejectionWarning: TypeError: logsInvites.get is not a function
Le invites.json :

[    {
        "guildID": "681855957441183755",
        "code": "rBBrGgTmcx",
        "temporary": false,
        "maxAge": 0,
        "maxUses": 0,
        "inviterID": "402042342627999744",
        "targetUser": null,
        "targetUserType": null,
        "channelID": "708285634720170075",
        "createdTimestamp": 1612729316011,
        "url": "https://  rBBrGgTmcx",
        "expiresTimestamp": null
    },
    {
        "guildID": "681855957441183755",
        "code": "yYbnD6YrEy",
        "temporary": false,
        "maxAge": 0,
        "maxUses": 0,
        "inviterID": "295129219426680833",
        "targetUser": null,
        "targetUserType": null,
        "channelID": "708082687331795037",
        "createdTimestamp": 1612202770108,
        "url": "https://   yYbnD6YrEy",
        "expiresTimestamp": null
    }
]```
Est-ce que quelqu'un connait une autre méthode pour .get ou régler le problème ?

Ce que je veux faire : prendre le nombre d'utilisations des invites avant l'arrivé du membre et comparer avec le nombre d'utilisations des invites après l'arrivé du membre pour trouver quel invite a été utilisé (celle qui a eu une utilisation en plus)
cyan iron
#

Comme nous l'a si bien dit notre cher Enzo, on peut faire un .find dans un fichier JSON :o
Je t'avoue que je n'ai pas encore essayé, mais si tu tente de faire un logsInvites.find() ça peut fonctionner j'imagine, je tente pour voir

#

Je te dis quand j'ai essayé !

half osprey
#

Faire un find dans un find ?

slim anvil
#

ui

#

ton .get il sort de nul part

#
const invite = guildInvites.find(i => logsInvites.find(inv => inv.code === i.code).uses < i.uses)
#

en gros après fait des vérifications etc de si ca existe bien

slim anvil
#

par contre bien entendu il faut le JSON.parse() avant qu'on soit d'accord sinon je vous ban kappa

cyan iron
#

xD

#

Je savais pas honnêtement merci

slim anvil
#

je sentais venir la question harold j'ai eu raison ?

half osprey
#

Ah non pardon

#

J'ai mal lu

slim anvil
cyan iron
#

C'est une variable

#

Tu peux l'appeler prout

#

Ou GCA

#
const invite = guildInvites.find(gca => logsInvites.find(inv => inv.code === gca.code).uses < gca.uses)
half osprey
#

Oui j'avais compris mais j'avais pas vu le premier find

cyan iron
#

oki pourtant c'était le tient de base

half osprey
#

Oui mais j'ai regarder trop vite

#

Ça va là OH xD

#

Il y a moyen de faire +1 au nombre d'utilisation de l'invite ?

cyan iron
#

:o

#

bah, +1 lol

half osprey
#

On peut modifier que le nombre d'utilisations de cet invite ?

cyan iron
#

Faire ça où dans le JSON ?

half osprey
#

Modifier pour l'invite dans le JSON

cyan iron
#

Si c'est possible !

#

avez la carte kiwi

half osprey
#

Comment parce que j'ai beau réfléchir j'y arrive pas

#

Mdr

cyan iron
#

Enzo je t'ai vu delete ma réaction 👀

#

Enzo je t'ai vu delete ma réaction 👀

#

Bref, déjà tu prend ton fichier, et tu le récupères comme ceci ( donc avec le JSON PARSE )

#
logsInvites = JSON.parse(fs.readFileSync(`./invites.json`, "utf8"));
half osprey
#

Juste invites.json xD

cyan iron
#

Ok ok xD

#

Ensuite, tu vas venir modifier ton truc, donc tu vas déjà prendre ce qui t'intéresse et le modifier

#

Alors vu que je fonctionne pas du tout comme toi pour les .json, je vais tenter un truc, j'espère que quelqu'un pourra me confirmer

#

Du coup tu prends ton logsInvites, et tu prend la valeur que tu souhaites modif

deep torrent
#

Hmm....

cyan iron
#

KESKE

#

Kestufou là toi

deep torrent
#

Pourquoi stocker dans un JSON?

cyan iron
#

xD

deep torrent
#

Suffit de stocker dans le cache xd

cyan iron
#

Laisse le faire zebi !

#

Bah si il restart c'est cuit

deep torrent
cyan iron
#

Il veut stocker les invites

half osprey
#

Car si on récupère chaque fois, c'est que les invites actuels, je veux aussi les invites qui ont expirés

cyan iron
deep torrent
#

Le truc c'est si le JSON se fait trop "call" bah...Il a mass chance de se faire corrompre

deep torrent
#

Le mieux c'est du enmap

#

Simple, puissant et reste local

half osprey
#

Le problème c'est que généralement le bot jongle entre mon pc et ma machine

cyan iron
#

Après ArviX a raison @half osprey si ton bot gère trop d'invites en même temps le JSON risque la corruption

deep torrent
#

Dans ce cas

cyan iron
#

ah !

deep torrent
#

Car c'est la même des 2 côtés

cyan iron
#

Attends

slim anvil
cyan iron
#

non il veut le mettre dans le JSON

#

et le stocker

half osprey
cyan iron
#

Y'a un méga beau gosse qui a fait un tuto

deep torrent
#

@half osprey Voici comment use une db enmap...

//npm i enmap
//nmp i better-sqlite3

//Dans le dossier du bot crée un dossier database
//Puis crée un dossier avec le nom de la db exemple: guilds

//En haut de votre code
client.guildsdb= new enmap({
            name: 'guilds',
            dataDir: './database/guilds/' //chemin d'acces du dossier
        });



//Dans l'évent ready
await client.guildsdb.defer


//Avant d'exploiter les données verifier que le serveur est dans la db
 client.guildsdb.ensure(guild.id, {
        _id: guild.id,
        prefix: ">",
        lang: "fr"//etc
    });


client.guildsdb.get(guild.id).prefix//Pour récuperer la donné il faut faire .cequevoussouyhaiter

//Pour modifier une donné
const data = client.guilds.get(guild.id);

    data.prefix = "!"

    client.guildsdb.set(guild.id, data);

//Voilà tout
cyan iron
#

xD

#

CASSE TOI

deep torrent
cyan iron
#

Tire toi ArviX xD

#

Va dev ton IA pepecry
Je veux que quelqu'un voit mon tuto

deep torrent
#

Xdd

deep torrent
#

Maintenant y a juste des problèmes visu

#

Mais ca c'est pas grave

cyan iron
#

:o

#

Du coup @half osprey dans ton cas, il faut que utilises plutôt MYSQL

deep torrent
#

Arrête de spam ton tuto mdrr

cyan iron
#

Tu vas voir c'est simple, efficace, et une fois que t'as compris tu vas faire des miracles avec

half osprey
#

Super le mysql, un petit problème, si je veux en avoir un je dois payer une machine non ? Parce que mon bot je l’héberge sur ma raspberry

half osprey
#

Ou je peux faire un mysql sur ma raspberry

deep torrent
#

Suffit d'installer MariaDB sur ton raspberry

half osprey
#

Ou je sais pas comment

cyan iron
#

Normalement oui

half osprey
#

Ok "suffit" toujours une galère d'installer des trucs sur ma raspberry

#

XD

deep torrent
#

Donc comme sur tous les VPS

deep torrent
half osprey
#

Bref

#

Je vais essayer

#

XD

slim anvil
#

Le cas de la base de données c'est bien mais ça se trouve dans son cas il y en aura juste pas d'utilité non plus

deep torrent
slim anvil
#

Si son discord est pas destiné à forcément recevoir un tas de personne, et que c'est bien fait le JSON suffit largement

deep torrent
#

Oui...Mais faut voir pour le future xd

cyan iron
deep torrent
#

moi et mon bot à 200 serveurs sur une db en JSON

cyan iron
#

bruh

half osprey
#

Justement mon but serait d'avoir du monde harold

cyan iron
deep torrent
slim anvil
#

Si ton système d'édition de JSON tu le fais bien encore une fois tu auras pas de corruption c'est toujours pareille

half osprey
#

Pour l'instant on en a 50... xD

cyan iron
#

Ah !

slim anvil
#

utiliser du mysql ne garantit pas aucun bug lol

slim anvil
#

Suffit de bien faire les choses et tout ce passe bien btw KappaShrug1

deep torrent
cyan iron
#

Faut vraiment être un boulet pour avoir une corruption quand même

deep torrent
slim anvil
#

Parce que t'utilises les bases de données pour un minimum wailrone

cyan iron
#

Avec un bot Discord tu peux pas trop corrompre je pense pas, ou du moins j'ai jamais réussi à le faire xD

slim anvil
#

Après si il a l'envie oui tant qu'à faire fait le avec une base de données que ce soit sql ou nosql

#

au moins t'apprendras des choses @half osprey

deep torrent
#

xd

cyan iron
#

Par contre fun fact, @deep torrent doit s'en souvenir, j'ai déjà fail une requête SQL et j'ai clear toute l'économie de mon bot 😂

deep torrent
#

Oui mdrr

half osprey
#

Donc à la base je vous rappelle que c'est pour m'AIDER pas pour débattre xD

slim anvil
#

Bah ton truc fonctionne en JSON ?

cyan iron
#

Pas faux

half osprey
#

Bah j'ai pas pu essayer

slim anvil
#

Si oui et que tu as envies passes avec une base de données

cyan iron
half osprey
#

Parce que j'essaie de suivre ce que vous racontez

cyan iron
#

ArviX fait le dashboard du bot stp pepecry

deep torrent
#

...

cyan iron
#

Sinon je le fait tu voulais le faire xD

deep torrent
#

J'ai une vie quand même

deep torrent
cyan iron
#

euh

#

Bref, aidons ce pauvre Yphar

#

DONC ! J'en étais où

deep torrent
#

MySQL > All

cyan iron
#

Bref, déjà tu prend ton fichier, et tu le récupères comme ceci ( donc avec le JSON PARSE )

#
logsInvites = JSON.parse(fs.readFileSync(`./invites.json`, "utf8"));
half osprey
#

FIN DU DÉBAT JE FAIS MYSQL

cyan iron
#

ok

#

xD

slim anvil
cyan iron
#

oui

slim anvil
#

histoire de comprendre la logique

cyan iron
#

Oui Enzo a raison, au moins tu pourras réutiliser

half osprey
#

J'avoue

cyan iron
#

Parceque bon tu vas pas non plus tout stocker en MYSQL

#

Tu vas en avoir besoin un jour du JSON et tu vas suer donc tu seras bien content de le savoir

half osprey
#

Sur mon bot j'ai d'autres trucs stocké en json

cyan iron
#

Je vais manger

#

:c

#

Déso ! xD

half osprey
#

Tkt

cyan iron
#

Mais en gros déjà find tes uses

half osprey
#

Je vais me débrouiller comme on dit dans le milieu, c'est la rue la vrai

deep torrent
#

Perso sur mon github

cyan iron
#

Avec la même méthode qu'Enzo

#

Bye GUYS !

deep torrent
#

J'ai un tuto comment faire une db JSON

deep torrent
#

Ca date un peu..

#

Donc c'est pas opti

#

Mais c'est fonctionnel

half osprey
#

Merci je vais essayer

deep torrent
#

Personnellement j'utilise plus le JSON...Sauf pour des données fixe...Comme un config.json

#

Avec le token du bot etc

half osprey
#

^^

half osprey
#

Comment je fais pour faire une variable avec ça de stocké dedans :

    {"yYbnD6YrEy": {
      "guildID": "681855957441183755",
      "code": "yYbnD6YrEy",
      "temporary": false,
      "maxAge": 0,
      "maxUses": 0,
      "inviterID": "295129219426680833",
      "targetUser": null,
      "targetUserType": null,
      "channelID": "708082687331795037",
      "createdTimestamp": 1612202770108,
      "url": "-yYbnD6YrEy",
      "expiresTimestamp": null
    }}

À partir de la variable invite qui contient :

{
        "guildID": "681855957441183755",
        "code": "qDZHg8Eyuv",
        "temporary": false,
        "maxAge": 0,
        "maxUses": 0,
        "inviterID": "402042342627999744",
        "targetUser": null,
        "targetUserType": null,
        "channelID": "727959820371755009",
        "createdTimestamp": 1613335721143,
        "url": "-qDZHg8Eyuv",
        "expiresTimestamp": null
    }```
deep torrent
#

const invite = data["yYbnD6YrEy"]

#

@half osprey

half osprey
#

Invite contient le deuxième truc

#

Et je veux faire une variable qui contient le premier

deep torrent
#

Comment tu fais pour inclure la db JSON?

half osprey
#

?

#

À la base j'ai le deuxième et je veux arriver a premier

deep torrent
#

Bah tu fais quoi pour afficher le message au dessus?

half osprey
#

C'est une variable récupéré par l'event

#

module.exports = async (bot, invite) => {

deep torrent
#

Ah ok

#

Et tu veux le stocker dans une db?

#

Ou une variable?

half osprey
#

Une variable

deep torrent
#

C'est quoi comme event?

half osprey
#

Invitecreate

#

Quand une invite est crée je la récupère et je la met dans mon json mais avec le code en "titre"

deep torrent
#

Ahh

#

Je viens de comprendre

half osprey
#

Tout fonctionne sauf le truc pour trouver comment mettre en "titre"

deep torrent
#

Bah...

#

Tu utilise mon tuto?

half osprey
#

Non

deep torrent
#

Ah...

half osprey
#

Celui du github ?

deep torrent
#

Tu utilises quoi alors?

#

xd

half osprey
#

Parce que il y a rien dedans

deep torrent
#

Bah si xd

half osprey
#

Pour stocker une date d'anniversaire ?

deep torrent
#

Oui

#

C'est une base xd

#

Pour illustrer

half osprey
#

Oui mais c'est pas ce que je veux

deep torrent
#

Mais c'est le même principe

deep torrent
#

Mais chercher un code similaire qui fait +- ce que tu veux et que tu vas adapter

half osprey
#

J'ai mal regardé

#

Encore

#

Et encore

deep torrent
#

T'inclus donc comment t'as base de donnée en JSON?

half osprey
#

J'ai cru que tu stockais id, date pas id:{date} :)

deep torrent
#

PS: j'ai fait une tuto comment use une db enmap sur g-ca.fr, mais faut que le staff verif

half osprey
#
  "cbKRPKY": {
    "invite": {
      "guildID": "681855957441183755",
      "code": "cbKRPKY",
      "temporary": false,
      "maxAge": 1800,
      "maxUses": 0,
      "inviterID": "295129219426680833",
      "targetUser": null,
      "targetUserType": null,
      "channelID": "708082687331795037",
      "createdTimestamp": 1614027145357,
      "url": "-cbKRPKY",
      "expiresTimestamp": 1614028945357
    }
  }
#

Ça me donne ça

#
    logsInvites[invite.code] = {
        invite
    }
#

J'ai trouvé je suis bête

#

Ça marche merci

deep torrent
#

Dr

keen narwhal
#

Bonjour, qu'elle qu'un aurai une idée ?

**        if(!message.member.hasPermission('MANAGE_MESSAGES')) return message.channel.send("Vous n'avez pas la permission d'utiliser cette commande.")
                           ^

TypeError: Cannot read property 'hasPermission' of null
**
Message: -infra
Member: null

Comment régler le member = null ?

deep torrent
#

message.member n'est jamais null....Sauf si dans des DM

keen narwhal
#

Bah justement c'est pas en Dm

deep torrent
#

Hmm...

#

Bah alors...Ton .hasPermission n'est pas valable

#

Je peux pas plus t'aider

#

J'utilise plus discord.js

keen narwhal
#

Je comprend vraiment pas pourquoi :/

deep torrent
#

@cyan iron

cyan iron
#

@deep torrent

deep torrent
#

@cyan iron

cyan iron
#

What is the problem

#

Attends je regarde

#

2s

half osprey
cyan iron
#

Euh

#

What

#

Attends

#

2s

keen narwhal
deep torrent
#

Non

#

author != member

cyan iron
#

@keen narwhal console log ton message, ça vient de là je pense

#

Je pense que tu exportes mal ton message et que message = client une connerie du genre

keen narwhal
#

Console log de mon message: Message: -infra

deep torrent
#

Supprime ton screen

#

Y a une ip

#

😉

keen narwhal
#

pg

#

C'est l'ip d'un VPS

deep torrent
#

oui mais bon

keen narwhal
#

c'est pas grave x)

deep torrent
#

Un DDOS va le faire down xd

keen narwhal
#

Si sa t'aide à te sentir mieux x)

deep torrent
#

xd

#

Oui

keen narwhal
deep torrent
#

xdd

#

Une tentative de pénétration

keen narwhal
#

Normalement la dessus je suis assez safe

deep torrent
#

Oracle VM => Start ParrotOS

cyan iron
#

T'as console log ton message ?

keen narwhal
#

ParrotOS ❤️

keen narwhal
deep torrent
cyan iron
#

Hein?

#

C'est pas normal ptdr

keen narwhal
#

Le console log de mon message c'est **Message: -infra
**

cyan iron
#

T'es pas censé avoir ça, t'es censé avoir le message avec author, member, etc

deep torrent
#

Yop

keen narwhal
#

Bah

cyan iron
#

Donc je pense que ma théorie est validée

keen narwhal
cyan iron
#

Zebi c'est quoi ça

deep torrent
#

C'est pas normal du tout

#

xd

cyan iron
#

😂

deep torrent
#

C'est quel Linux?

#

ParrotOs?

keen narwhal
#

Lubuntu xD

deep torrent
#

Ah ok

#

Pas ouf ouf xd

slim anvil
#

Je lui ai déjà dis tout à l’heure concernant le log il cherche pas vraiment à comprendre pourquoi

keen narwhal
#

18.04 il me semble

cyan iron
#

C'est quoi ce truc

slim anvil
#

Montre comment t’as fais ton console.log Keysex

deep torrent
cyan iron
#

Ta console est moche

#

😂

cyan iron
deep torrent
#

C'est toi qui est moche

#

xdd

keen narwhal
#

M'en fou de la console perso xD

#

Le GUI et dégeu c'est vrai x)

deep torrent
#

Ubuntu de base est mieux

keen narwhal
#

Attendais xD je dois cherché mon screen

deep torrent
#

bah fais-en un nouveau

keen narwhal
#

Il es sans doute mal mit

deep torrent
#

Remonte dans ton code

keen narwhal
#

Jusqu’à ou ?

slim anvil
#

En haut pour voir

deep torrent
#

Juste avant le client.on

#

Car d'après ce que je vois tu fais avec plusieurs client.on

#

De même event

keen narwhal
#

Tout en haut

cyan iron
#

AAAH

#

Il a fait un client.on dans un client.on?

slim anvil
#

T’as combien d’avant message ?kappo2

cyan iron
#

;-;

slim anvil
#

D’event *

cyan iron
#

Ok donc on a trouvé la source du problème

deep torrent
#

Tu veux un code propre? Utilise le handler ArviX, le meilleur handler au monde..

keen narwhal
deep torrent
#

😂

keen narwhal
#

aie

slim anvil
#

Tu peux en avoir plusieurs

#

Mais pas l’un dans l’autre

keen narwhal
#

Je voulais faire par event handler mais j'ai eu des soucis

keen narwhal
cyan iron
deep torrent
slim anvil
keen narwhal
slim anvil
#

essaye de remonter ton console.log en haut le if member has permissions

#

Pour voir un truc plz

keen narwhal
#

ok

#

**Message: -infra
**

slim anvil
keen narwhal
slim anvil
#

Vraiment bizarre ça que ça te renvoie le content direct et pas la collection

#

T’aurais pas touché à quelque chose ou autre

keen narwhal
#

J'ai rien touché

#

Au pire

#

Go réapprendre Discord.js ^^

#

Sa sera plus simple x)

deep torrent
#

Ou apprend Eris

#

xd

#

Comme moi

keen narwhal
#

Eris ?