#javascript-typescript

1 messages · Page 85 of 1

queen ocean
#

Tu peux pas envoyer deux fois le même msg d’affiler

cyan iron
#

okay

#

Comme sur MC Kapp

regal steppe
jovial turret
#

Le cors te l'empêche

#

Et discord aussi en fait

regal steppe
#

bonjour j'ai un problème : des que je lance le debogage ca me dit qu'il n'y a pas de debogeur disponible

jovial turret
#

Du coup il faut faire une API pour l'API si tu veux faire des appels en client

dire latch
#

@regal steppeJe te conseille de modifier ton token au cas ou

regal steppe
regal steppe
dire latch
#

Nan mais tu l'as mis sur ton screen, c'est pas très prudent @regal steppe rien à voir avec ton soucis 😉

regal steppe
#

ah oui tu n'a pas tord 😅

dire latch
#

👍

regal steppe
#

voila c'est changé merci de m'avoir prévenus ^^

dire latch
#

Np

regal steppe
#

est ce que tu peut m'expliquer brèvement ce qu'un api ?

cyan iron
regal steppe
#

ah ok zut ^^

bold sparrow
regal steppe
#

Ok mrc ^^

keen narwhal
#

Bonsoir,

Je me permets d’exposer à nouveau mon problème, j’ai réalisé un bot depuis un certain temps qui a pour objectif de calculer une durée précise entre deux commandes qui sont envoyées par le membre. Le problème étant que la nuit, les données soustraites au date.now() actuel sont considérées comme invalide (alors que j’obtiens logiquement la date et l’heure précise en ms), auriez-vous une idée voire besoin d’une partie du code ?

Merci.

lone flax
#

Hein quel rapport avec la nuit

#

Envoie ton code

indigo oak
#

@regal steppe toujours besoin d’aide ?

bold sparrow
#

What, Date.now() a peur de sortir la nuit ?

dire latch
#

@bold sparrow sûrement 😂😂

bold sparrow
#

Ah bah oui sur MDN c'est précisé

sharp grail
#

MDRRR

bold sparrow
#

Bientôt on apprendra qu'il fonctionnera sur les mêmes horaires que les fonctionnaires kappa

sharp grail
#

😂

boreal edge
#

Pour le coup ce n'est pas logique que ton Date.now() déconne la nuit

unborn knot
#

Hello j'aimerais couper le nom de plusieurs fichiers qui sont dans un dossier, j'ai donc ça : javascript //requiring path and fs modules const path = require('path'); const fs = require('fs'); //joining path of directory const directoryPath = path.join(__dirname, '/base/'); //passsing directoryPath and callback function fs.readdir(directoryPath, function (err, files) { //handling error if (err) { return console.log('Unable to scan directory: ' + err); } //listing all files using forEach files.forEach(function (file) { // Do whatever you want to do with the file console.log(file.slice(17)); let newFile = file.slice(17); fs.renameSync(`/base/${files}`, `/base/${files.slice(17)}`) }); });

#

Mais j'ai cette erreur

boreal edge
#

Fais un readDirSync plutôt

#

En quoi veux tu renommer tes fichiers ?

#

Tu aurais un exemple ?

unborn knot
#

Chaque fichier commence par ça j'aimerais enlever tout ce qui y'a avant le ^ (inclus)

unborn knot
#

J'ai ça mtn

#
fs.renameSync(`/base/${files}`, {file}.split("^")[1])```
bold sparrow
#

{file} est une variable générale, je n'ai pas lu ton code donc c'est pas adapté

#

Juste ce que je t'ai envoyé ça sert à split ton string en tableau, et je lui dit de récupérer la deuxième partie qui correspond à ce que tu veux

unborn knot
#

Okk merci !

opal harness
#

Bonjour,
Comment je pourrais faire pour changer le nom d'un channel déjà existant en discord.js

#

Car j'ai trouvé plein de truc pour les permissions mais pas changer le nom du channel

pseudo hollow
# opal harness Bonjour, Comment je pourrais faire pour changer le nom d'un channel déjà existan...
let channel: TextChannel|VoiceChannel;
channel.setName("nom");

Tout simplement la méthode setName ?
➡️ https://discord.js.org/#/docs/main/stable/class/TextChannel?scrollTo=setName

opal harness
pseudo hollow
#

Laquelle ?

sharp grail
#

Hello, tu es en discordjs v13 ou v12 ?

opal harness
#
(node:2580) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'id' of undefined
    at Object.module.exports.run (c:\Users\sandr\Documents\AtlanticaBotDiscord\commandes\ticketclaim.js:9:51)
    at Client.<anonymous> (c:\Users\sandr\Documents\AtlanticaBotDiscord\index.js:165:33)
    at Client.emit (events.js:376:20)
    at MessageCreateAction.handle (c:\Users\sandr\Documents\AtlanticaBotDiscord\node_modules\discord.js\src\client\actions\MessageCreate.js:31:14)
    at Object.module.exports [as MESSAGE_CREATE] (c:\Users\sandr\Documents\AtlanticaBotDiscord\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (c:\Users\sandr\Documents\AtlanticaBotDiscord\node_modules\discord.js\src\client\websocket\WebSocketManager.js:384:31)
    at WebSocketShard.onPacket (c:\Users\sandr\Documents\AtlanticaBotDiscord\node_modules\discord.js\src\client\websocket\WebSocketShard.js:444:22)
    at WebSocketShard.onMessage (c:\Users\sandr\Documents\AtlanticaBotDiscord\node_modules\discord.js\src\client\websocket\WebSocketShard.js:301:10)
    at WebSocket.onMessage (c:\Users\sandr\Documents\AtlanticaBotDiscord\node_modules\ws\lib\event-target.js:132:16)
    at WebSocket.emit (events.js:376:20)
(Use `node --trace-warnings ...` to show where the warning was created)
<node_internals>/internal/process/warning.js:43
#

@pseudo hollow

pseudo hollow
#

Y a quoi à la ligne 9 ?

#

du fichier ticketclaim.js

opal harness
# pseudo hollow du fichier ticketclaim.js

J'ai ça

if(bdd["channelticketopen"][message.author.id]["id"] == message.channel.id){
    "channelticketopen": {
        "665890800835624971": {
            "type": "text",
            "deleted": false,
            "id": "877824995789783071",
            "name": "🔴-arissbalaka",
            "rawPosition": 5,
            "parentID": "871050627906674699",
            "permissionOverwrites": [
                "860497208784584744",
                "665890800835624971",
                "861671951646982154"
            ],
            "topic": null,
            "nsfw": false,
            "lastMessageID": "877824997207441438",
            "rateLimitPerUser": 0,
            "lastPinTimestamp": null,
            "guild": "860497208784584744",
            "messages": [
                "877824997207441438"
            ],
            "createdTimestamp": 1629360188196
        }
    },
pseudo hollow
#

L'objet avec la clé message.author.id dans ton objet channelticketopen n'est pas défini visiblement :p

#

Je pense que si tu fais un console.log de bdd["channelticketopen"][message.author.id] tu vas te retrouver avec undefined dabs ta console.

pseudo hollow
#

Dans ce cas ton problème vient de ta gestion de ta base de donées.

opal harness
#

J'ai fait autrement

pseudo hollow
#

Pas de soucis 👍

opal harness
strong patio
#

quelqu'un aurait un tuto de 2021 pour les bots discord en js (version 13) parce que quasi l'entièreté des variables que j'entre ne sont plus valides xD

timid loom
strong patio
#

merci :DDD

fallow crown
#

Salut je suis toujours entrain de coder mon bot discord, je suis entrain de faire un système de member count qui s'affiche sur un channel discord. Je vous mets le code ci dessous:

client.on('guildMemberAdd', member => {
  var servID = member.guild.id
  console.log(servID);
  var countChannel = {
    total: bdd[member.guild.id]["Count"],
    serverID: servID
  }
  client.channels.cache.get(countChannel.total).setName(`Membres: ${member.guild.memberCount}`);
})


client.on("guildMemberRemove", member => {
  var servID = member.guild.id
  console.log(servID);
  var countChannel = {
    total: bdd[member.guild.id]["Count"],
    serverID: servID
  }
  client.channels.cache.get(countChannel.total).setName(`Membres: ${member.guild.memberCount}`);
})

et ma bdd.json:

"877845327833608212": {
        "Count": "877845539889217578"
    }

Et donc comme vous l'aurez peut etre compris je veux appeler l'id du channel sur lequel il y aura le nombres de membres et l'id du serv. J'ai fait ce code mais il ne fonctionne pas et il ne retourne auccune erreurs. Quelqu'un pourrait m'aider svp?

bold sparrow
#

Var n’existe plus déjà

fallow crown
#

C'est a dire ?

bold sparrow
#

let ou const mais pas var

fallow crown
#

Ok je vais essayer

#

Merci

bold sparrow
#

nan mais ça arrangera pas ton problème

fallow crown
#

Ah

bold sparrow
#

Juste c’est pour te le dire

fallow crown
#

Ok

#

Merci quand même

sharp grail
#

si ?

#

;_;

desert riverBOT
bold sparrow
#

Il est plus formalisé Var

fallow crown
#

Je suis en v12 pour info

sharp grail
#

mais quel rapport, c'est une déclaration de variable

bold sparrow
#

avec les nouvelles versions de ECMA

sharp grail
#

c'est node l

#

#

et si

bold sparrow
#

Node c’est du JS

sharp grail
#

oui

fallow crown
#

Oui

sharp grail
#

mais ça existe toujours ;_;

bold sparrow
#

Et il dépend de Lecma

#

Oui mais bon si tu fais ça t’auras jamais de client en tant que free-lance kappa

slim anvil
#

je vois pas trop le rapport avec le freelance par contre mais bon

bold sparrow
#

C juste pour dire qu’il est déprécié

#

Var c’est bien mais ça cause des problèmes

slim anvil
#

Mais oui il a raison sur le fait que var s'utilise plus vraiment, c'est ton compiler qui va venir te générer un code lisible pour tous les navigateurs

#

mais var s'utilise plus trop de part sa trop grande portée

sharp grail
#

dacc

fallow crown
#

Ok donc let ou const

bold sparrow
#

Oui

fallow crown
#

Dacc

bold sparrow
#

J’ai horreur des bdd en JSON vraiment

#

Je comprends pas le principe

sharp grail
#

ils en font pas mention dans le mdn par contre

sharp grail
bold sparrow
#

Non

#

Clairement pas

#

Passe sur du SQL après du JSON ça va être l’enfer pour comprendre

sharp grail
#

mmh si

#

c'est beaucoup plus simple

bold sparrow
#

Mongo c’est très bien

sharp grail
#

je suis d'accord

#

mais faut installer

bold sparrow
#

Et c’est 15x plus simple que du JSON

sharp grail
#

mmh non

#

clairement pas

bold sparrow
#

puisque ça fonctionne sur le principe du JSON

#

Mais en mieux foutu

slim anvil
#

mon coeur se brise

sharp grail
#

effectivement

fallow crown
#

Pourquoi

bold sparrow
#

Oue sinon t’as sqli

#

Mais Mongo <3

slim anvil
#

car c'est du noSQl

#

pas du SQL

fallow crown
#

Ah

bold sparrow
#

SQL est très bien mais pas dans le même principe que Mongo

slim anvil
#

c'est juste comme je t'ai dis plus vraiment conseillé

#

à cause de la porté de la scope de var

bold sparrow
#

la scope de Var est trop dangereuse

slim anvil
#

c'est + reco de passer par une let

bold sparrow
#

Parfois ça peut t’aider d’utiliser Var quand t’as la flemme

sharp grail
bold sparrow
#

C’est déprécié pour l’expérience utilisateur

#

Pas dans la doc

#

J’ai pas utiliser les termes clés

slim anvil
#

ça veut pas dire interdit deprecated

bold sparrow
#

Rooh

slim anvil
#

c'est non recommandé

sharp grail
#

bah oui

#

donc

#

bref

slim anvil
#

je t'expliquais juste pourquoi

sharp grail
#

oui 👀

#

merci

bold sparrow
keen igloo
#

Quelqu'un sait pk j'ai cette erreur quand j'essaie d'installer un framework ?

slim anvil
#

npm i discord-akairo

#

et vire ta ligne

keen igloo
#

je vais test

bold sparrow
#

Si tu le fais manuellement forcément que ça va pas fonctionner

timid loom
#

bah il faut faire npm i et c'est bon, il peut le mettre si il veut si il installe après 🤔
après oui ça suffit pas

slim anvil
#

là c'est surtout l'url qui est pas bonne mais oui il peut le fait manuellement y a aucun soucis là dessus 🤔

analog hamlet
#

salut j'ai un problème sadgun

const connection = await message.member.voice.channel.join();
        const receiver = connection.receiver.createStream(message.member, {
            mode: "pcm",
            end: "silence"
        });
    
        const writer = receiver.pipe(fs.createWriteStream(`./recorded-${message.author.id}.pcm`));
        writer.on("finish", () => {
            message.member.voice.channel.leave();
            message.channel.send("Finished writing audio");
        });```
j'essaie d'enregistrer un vocal mais il me dit que le ficher est corrompu
#

une idée ?

dire latch
#

Passe pas par le debugger @analog hamlet

analog hamlet
dire latch
#

Normalement

timid loom
keen narwhal
#
if (timeServiceMinutes >= 15) {
      function timeService(duration) {
        var minutes = Math.floor((duration / (1000 * 60)) % 60),
          hours = Math.floor((duration / (1000 * 60 * 60)) % 24);
      
        hours = (hours < 10) ? "0" + hours : hours;
        minutes = (minutes < 10) ? "0" + minutes : minutes;
        
        return hours + "h. " + minutes + "min.";
      }
      const embedTotalMsg = new Discord.MessageEmbed().setColor('#34C924');

      if (timeServiceMinutes >= 60) {
        embedTotalMsg.setDescription(`${check}・__Prise de Service__
            
        Ton service a duré ${timeService(totalTime)}`);
      } else {
        embedTotalMsg.setDescription(`${check}・__Prise de Service__
            
        Ton service a duré: ${timeService(totalTime)}`);
      }

      await message.author.send(embedTotalMsg).catch((err) => {});

      const embedServiceEnd = new Discord.MessageEmbed()
        .setColor('#34C924')
        .setDescription(`${check}・Fin de service de ${message.author} (${timeService(totalTime)} de service)`)
        .setFooter(moment().format('Do MMMM YYYY, HH:mm:ss'))

      bot.channels.cache.get(config.servicelogs).send(embedServiceEnd);

      isTimer = 0;
      time = 0;

      const service = [...dataSERVICE[message.author.id].service];
      if (dataSERVICE[message.author.id].timeRemoved) {

      const timeRemoved = [...dataSERVICE[message.author.id].timeRemoved];

      dataSERVICE[message.author.id] = {
        time,
        isTimer,
        timeRemoved,
        service
      };

      dataSERVICE[message.author.id].service.push(`${totalTime}`);

      fs.writeFile('./pds_data/data_service.json', JSON.stringify(dataSERVICE, null, 4), err => {
        if (err) console.log(err);
      });
      } else {

      dataSERVICE[message.author.id] = {
        time,
        isTimer,
        service
      };
      dataSERVICE[message.author.id].service.push(`${totalTime}`);

      fs.writeFile('./pds_data/data_service.json', JSON.stringify(dataSERVICE, null, 4), err => {
        if (err) console.log(err);
      });
    }
    }

timeServiceMinutes est la durée entre les deux commandes en minutes (ms convertis en minutes), le bot ne réagit plus dans la nuit lorsque cette commande est rentrée (je n'ai pas tout mis parce que la cmd contient largement plus de 4000 caractères, j'ai mis ce qui était nécessaire)

strong patio
#

pourquoi client.commands = new Discord.Client(); ne marche plus ?

lone flax
#

Parce que ça n'a aucun sens de faire ça

#

new Collection() à la limite

strong patio
#

ben je veux faire un client.commands.set(props….)

lone flax
#

Là tu initialises un client discord dans commands

#

Bah oui donc faut faire une collection

strong patio
#

effectivement

dire latch
#

er n'existe pas @analog hamlet

analog hamlet
# dire latch **er** n'existe pas <@!438025774662942720>
const channel = message.member.voice.channel;

        const connection = await channel.join();
        const receiver = connection.receiver.createStream(message.member, {
          mode: "pcm",
          end: "silence"
        });
      
        const writer = receiver.pipe(fs.createWriteStream('./recording.pcm'));
        writer.on('finish', () => {
          channel.leave();
          message.channel.send('It went quiet, so I left...');
        });``` il y a aucun **er** dans mon code, juste de ne comprend pas pourquoi il me sort "**the compressed data passed is corrupted**"
dire latch
#

Tu as un fichier nommer events.js ?

analog hamlet
#

oui

dire latch
#

Regarde dedans

#

C'est ça ton erreur

analog hamlet
#

en fin j'ai pas de "fichier event.js" mais j'ai un dossier event avec tout les events de dans

dire latch
#

Ah, ba regarde dans tes fichiers, tu as mis throw er

analog hamlet
#

en fait mon code marchais bien et puis il m'a sorti un jour cette erreur

dire latch
#

Ah ba là, jsp

analog hamlet
# dire latch Ah ba là, jsp

ha update !
le code fonctionne mais que sur l'app discord, si je vais sur la version web et que j’exécute la fonction le bot crash

dire latch
#

🤔

analog hamlet
#

attend si tu veux je te rec wtf

dire latch
#

Ba là, je ne saurai pas quoi te dire mdr

#

Mais, tu as l'erreur quand tu vas dans un vocal ? @analog hamlet

analog hamlet
#

quand je commence a parler

#

attend je met la video et je te send le lien

dire latch
#

Sa doit être le module pour enregistrer qui te fais ça

analog hamlet
#

il y a pas de module mis a part fs

dire latch
#

Ba ton code ducoups

#

Pareil

analog hamlet
#

mais pourquoi il marche sur l'app et par sur web

#

😭

dire latch
#

Car c'est comme ça 🤷‍♀️

analog hamlet
#

je sais pas si je peux mettre des liens ici, par précaution je te send mp

dire latch
#

Pas besoin

twin bane
#

j'ai essayer et ca a l'aire de fonctionner ! mais j'ai une autre erreur encore plus venere ...

C:\Users\ProMr\OneDrive\Bureau\blud\v2\node_modules\discord.js\src\rest\RequestHandler.js:298
      throw new DiscordAPIError(data, res.status, request);
            ^

DiscordAPIError: Cannot send an empty message
    at RequestHandler.execute (C:\Users\ProMr\OneDrive\Bureau\blud\v2\node_modules\discord.js\src\rest\RequestHandler.js:298:13)
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async RequestHandler.push (C:\Users\ProMr\OneDrive\Bureau\blud\v2\node_modules\discord.js\src\rest\RequestHandler.js:50:14)
    at async TextChannel.send (C:\Users\ProMr\OneDrive\Bureau\blud\v2\node_modules\discord.js\src\structures\interfaces\TextBasedChannel.js:171:15) {
  method: 'post',
  path: '/channels/866003769404555283/messages',
  code: 50006,
  httpStatus: 400,
  requestData: {
    json: {
      content: undefined,
      tts: false,
      nonce: undefined,
      embeds: undefined,
      components: undefined,
      username: undefined,
      avatar_url: undefined,
      allowed_mentions: undefined,
      flags: undefined,
      message_reference: undefined,
      attachments: undefined,
      sticker_ids: undefined
    },
    files: []
  }
}
dire latch
#

Tu essayes d'envoyer un message vide @twin bane

#

C'est marquer ton erreur -__-

sharp grail
#

oui

twin bane
#

je vais envoyer mon code ...

#
const { MessageEmbed } = require("discord.js") 

module.exports = {
  name: "stats",
  category: "Infos",
  description: "stats important du serveur",
  emoji: "👥",

  run: async (client, message, args) => {
    if(message.author.bot) return;
      message.delete();

      const member = message.guild.members.cache
      const onlines = member.filter(u => u.guild.presences.cache === 'online').size
      const dnd = member.filter(u => u.guild.presences.cache === 'dnd').size
      const idle = member.filter(u => u.guild.presences.cache === 'idle').size
      const offline = member.filter(u => u.guild.presences.cache === 'offline').size 
      const stats = new MessageEmbed()
        .setColor('#2f3136')
        //.setTitle('Stats !')
        .addField(`⭐ Nitro boost`, `\`Niveau\` [»](https://google.com) **${message.guild.premiumTier}**\n\`Nbr de boost\` [»](https://google.com) **${message.guild.premiumSubscriptionCount}**`)
        .addField(`👥 Membres » ${message.guild.memberCount}
        `, `> 🟢 En ligne [»](https://google.com) **${onlines}**
        > 🔴 Ne pas déranger [»](https://google.com) **${dnd}**
        > 🟡Inactif [»](https://google.com) **${idle}**
        > ⚫ Hors ligne [»](https://google.com) **${offline}**
        ────────────
        **${message.guild.members.cache.filter(member => !member.user.bot).size}** Humains [»](https://google.com) **${message.guild.members.cache.filter(member => member.user.bot).size}** Robots`)
        .setFooter(`demandé par ${message.author.username}`,message.author.avatarURL())
        .setTimestamp()
            
        message.channel.send(stats); 
    }
};
#

donc non ... je n'envoie pas un message vide

#

enfin je ne crois pas le faire .... kappo

sharp grail
#

mmh

#

tu es en v13 ?

twin bane
#

yep !

sharp grail
#

si oui normal, tu dois mettre

#

ah bah voilà

twin bane
#

je dois mettre ?

desert riverBOT
sharp grail
#
message.channel.send({ embeds: [stats] })
#

En v13 ils ont changés 👀

twin bane
#

alors bon ... j'ai essayer, ca marche ... a moitier par contre ... attend j'envoie le code et un screen

sharp grail
#

dacc

twin bane
#

deja voila l'erreur

(node:8124) DeprecationWarning: The message event is deprecated. Use messageCreate instead
(Use `node --trace-deprecation ...` to show where the warning was created)

dans ma console et le screen arrive ^^

sharp grail
#

ah c'est normal, en v13, le nouvel event lors de l'envoi d'un message est messageCreate, l'ancien marche toujours, mais il est déprécié

twin bane
#

voila le probleme... les online,inactif, ext ne marche pas ...

sharp grail
sharp grail
#

en fait

#

le soucis là dedans c'est que déjà pour chaque membre tu vas voir la presence manager

#

alors que c'est celle de la guild

#

donc

#

perte de performances

dire latch
#

@twin baneTu as mis les intents ?

sharp grail
twin bane
twin bane
dire latch
sharp grail
twin bane
dire latch
sharp grail
twin bane
sharp grail
#

yop, du coup

const presence = message.guild.presences.cache
      const onlines = presence.filter(u => u.status === 'online').size
      const dnd = presence.filter(u => u.status === 'dnd').size
      const idle = presence.filter(u => u.status === 'idle').size
      const offline = presence.filter(u => u.status === 'offline').size
sharp grail
twin bane
sharp grail
#

ou le code

#

je m'explique

#

à partir de la v13

twin bane
#

le index ?

sharp grail
twin bane
#
const config = require("./config.json");
const { Client, Collection } = require("discord.js");
const discord = require("discord.js");


const { glob } = require("glob");
const { promisify } = require("util");
const globPromise = promisify(glob);


const chalk = require("chalk");
const client = new Client({
  intents: 32767,
});
const fs = require("fs");

module.exports = client;


client.commands = new discord.Collection();
client.slashCommands = new Collection();


let folders = fs.readdirSync("./commands/");


folders.forEach((dir) => {
  const commandFiles = fs
    .readdirSync(`./commands/${dir}/`)
    .filter((file) => file.endsWith(".js"));

  for (const file of commandFiles) {
    const command = require(`./commands/${dir}/${file}`);

    client.commands.set(command.name, command);

    console.log(chalk.green(`${command.name} load successfully [COMMAND]`));
  }
});


let eventFolder = fs.readdirSync("./events");

eventFolder.forEach((dir) => {
  const eventFiles = fs
    .readdirSync(`./events/`)
    .filter((file) => file.endsWith(".js"));

  for (const file of eventFiles) {
    const Event = require(`./events/${file}`);
    const eventNames = file.split(".")[0];
    console.log(chalk.yellow(`${eventNames} load successfully [EVENT]`));
  }
});

client.login(config.token);


sharp grail
#

tu déclares ton client

dire latch
#

Pourquoi tu déclares deux fois ton discord.js ?

#

Supprime cet ligne const discord = require("discord.js");

twin bane
dire latch
#

Et modifie ceci client.commands = new discord.Collection(); en ceci client.commands = new Collection();

#

Ah github

dire latch
#

👍

sharp grail
#

par contre je dois avouer que je ne trouve aucun informations sur les intents avec les nombres

#

donc en gros les intents te permettent d’accéder à des events et des données

dire latch
#

const client = new Client({ intents: [Intents.FLAGS.GUILDS] });

#

Par exemple

desert riverBOT
sharp grail
bold sparrow
#

De ce flags *

sharp grail
twin bane
#

bon ducoup tout refonctionne bien ! mais j'ai toujours ce warning ...

(node:11716) DeprecationWarning: The message event is deprecated. Use messageCreate instead
(Use `node --trace-deprecation ...` to show where the warning was created)

mais vue que j'utilise module.export ... je vois pas comment changer ca ...

bold sparrow
#

messageCreate

#

Pas message

#

L’événement

dire latch
#

Tu as mal nommé ton fichier ?

bold sparrow
#

client on messageCreate

dire latch
bold sparrow
#

Bien sûr que si

twin bane
#

mais vue que je suis en module.export mon evenement utilise pas de client.one

dire latch
#

Non

sharp grail
bold sparrow
#

C’est messageCreate l’événement pas message

twin bane
dire latch
#

Tu dis de faire un client.on -__-

bold sparrow
#

Utilises la doc Duck pour une fois

sharp grail
#

à la place de message

dire latch
#

Va lire la doc plutot que moi même

bold sparrow
#

Rien à voir avec la doc son code

#

Bref

dire latch
dire latch
bold sparrow
#

J’ai pas regardé son code c’était pour qu’il comprenne

#

Que c’était dans un client on

dire latch
#

Mais tu dis nimp, donc ne me dis pas que c'est moi qui a tort mdrr

bold sparrow
twin bane
dire latch
bold sparrow
#

Du coup message, pas messageCreate

twin bane
bold sparrow
#

Tu dois avoir un event message

#

Tu modifies le nom par messageCreate

#

Easily

dire latch
#

Ou message ? @twin bane

twin bane
#
const { MessageEmbed } = require("discord.js") 

module.exports = {
  name: "stats",
  category: "Infos",
  description: "stats important du serveur",
  emoji: "👥",

  run: async (client, message, args) => {
    if(message.author.bot) return;
      message.delete();

      const member = message.guild.members.cache
      const presence = message.guild.presences.cache
      const onlines = presence.filter(u => u.status === 'online').size
      const dnd = presence.filter(u => u.status === 'dnd').size
      const idle = presence.filter(u => u.status === 'idle').size
      const offline = presence.filter(u => u.status === 'offline').size
      
      /*const onlines = member.filter(u => u.guild.presences.cache === 'online').size
      const dnd = member.filter(u => u.guild.presences.cache === 'dnd').size
      const idle = member.filter(u => u.guild.presences.cache === 'idle').size
      const offline = member.filter(u => u.guild.presences.cache === 'offline').size */
      const stats = new MessageEmbed()
        .setColor('#2f3136')
        //.setTitle('Stats !')
        .addField(`⭐ Nitro boost`, `\`Niveau\` [»](https://google.com) **${message.guild.premiumTier}**\n\`Nbr de boost\` [»](https://google.com) **${message.guild.premiumSubscriptionCount}**`)
        .addField(`👥 Membres » ${message.guild.memberCount}
        `, `> 🟢 En ligne [»](https://google.com) **${onlines}**
        > 🔴 Ne pas déranger [»](https://google.com) **${dnd}**
        > 🟡 Inactif [»](https://google.com) **${idle}**
        > ⚫ Hors ligne [»](https://google.com) **${offline}**
        ────────────
        **${message.guild.members.cache.filter(member => !member.user.bot).size}** Humains [»](https://google.com) **${message.guild.members.cache.filter(member => member.user.bot).size}** Robots`)
        .setFooter(`demandé par ${message.author.username}`,message.author.avatarURL())
        .setTimestamp()
            
        message.channel.send({ embeds: [stats] })
    }
};
sharp grail
#

concrètement pour les intents, tu peux faire comme ça

const { Client, Collection, Intents } = require("discord.js");

const client = new Client({
  intents: [ 
    Intents.FLAGS.GUILDS,
    Intents.FLAGS.GUILD_MEMBERS,
    Intents.FLAGS.GUILD_BANS,
    Intents.FLAGS.GUILD_EMOJIS_AND_STICKERS,
    Intents.FLAGS.GUILD_INTEGRATIONS,
    Intents.FLAGS.GUILD_WEBHOOKS,
    Intents.FLAGS.GUILD_INVITES,
    Intents.FLAGS.GUILD_VOICE_STATES,
    Intents.FLAGS.GUILD_PRESENCES,
    Intents.FLAGS.GUILD_MESSAGES,
    Intents.FLAGS.GUILD_MESSAGE_REACTIONS,
    Intents.FLAGS.GUILD_MESSAGE_TYPING,
    Intents.FLAGS.DIRECT_MESSAGES,
    Intents.FLAGS.DIRECT_MESSAGE_REACTIONS,
    Intents.FLAGS.DIRECT_MESSAGE_TYPING,
    ],
});

et mettre en commentaire ceux que tu n'utilises pas

dire latch
#

Nan pas ça, tu dois avoir un event nommé message quelque part

twin bane
#

ah dans tout mes code ?

bold sparrow
#

@twin bane Etant donné que tu utilises un handler, tu dois avoir un fichier dans tes événements nommé message

dire latch
twin bane
# bold sparrow <@!350679550465933312> Etant donné que tu utilises un handler, tu dois avoir un ...

trouver mais avec messageCreate ...

const client = require("../index");
const prefix = require("../config.json").prefix;

client.on("messageCreate", async (message) => {
  if (!message.content.startsWith(prefix)) return;

  if (message.author.bot) return;

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

  const cmd = args.shift().toLowerCase();

  let command = client.commands.get(cmd);

  if (command) command.run(client, message, args);

});
bold sparrow
#

Ah bah il y a un client.on

#

Duck ?

#

:)

#

Bref

bold sparrow
#

Le dossier event

dire latch
#

Rien à voir ducoups

#

Mais ouais

twin bane
bold sparrow
#

De quoi rien à voir ?

#

events, tu changes message par messageCreate

twin bane
#

le nom du fichier ducoup ?

bold sparrow
#

Oui, attends le fichier message c'est celui qui contient ce que tu as envoyé ?

twin bane
#

yep

bold sparrow
#

Ah bah ça sert à rien alors

dire latch
#

Tu changes client.on("messageCreate", async (message) => { par module.exports = (bot, message) => {

bold sparrow
#

Il est inutile

bold sparrow
#

Je t'invite au passage, à apprendre Javascript si tu veux continuer ton bot

#

Sinon tu vas galérer

twin bane
#

enfin si ... le bot demarre mais les commande ne marche plus ducoup

twin bane
dire latch
#

Change bot par client

bold sparrow
#

JS !== V13

dire latch
#

Pour commencer

bold sparrow
#

Tes commandes ne fonctionnent pas c'est normal

twin bane
#

discord js ... en V13

bold sparrow
#

Maintenant tu dois modifier ton nom de fichier

#

par messageCreate

dire latch
#

Non

bold sparrow
dire latch
#

Va falloir que tu apprennes le js toi aussi, nan ? @bold sparrow

bold sparrow
#

Wow

#

Modifie le nom du fichier.

dire latch
#

Pour faire quoi au juste ? 🤔

bold sparrow
#

pour faire un système handler correcte

sharp grail
#

vous avez pas bientot fini @dire latch & @bold sparrow

bold sparrow
#

Son nom de fichier correpond à l'event

dire latch
#

Ok mek

bold sparrow
#

Dev certifié ?

#

Certifié incompétent ?

dire latch
#

@bold sparrowStop chercher pour rien, tu dis nimp depuis tout à l'heure en fait, donc calme toi

sharp grail
twin bane
bold sparrow
#

mrfafidoo, modifie le nom du fichier stp

dire latch
#

Mais sa sert à rien de ce que tu lui dis

#

Omg

#

Viens mp @twin bane

twin bane
#

je vais essyer quand meme ^^

#

oki

bold sparrow
#

J'viens de voir

#

Il load pas les events

#

Il faut le préciser dans l'export

dire latch
#

Oula

sharp grail
bold sparrow
#
for (const file of eventFiles) {
    const Event = require(`./events/${file}`);
    const eventNames = file.split(".")[0];
    client.on(eventNames, ...args) 
    console.log(chalk.yellow(`${eventNames} load successfully [EVENT]`));
  }```
#

Un truc du genre

#

Je sais pas c'est quoi ton Client, si c'est client, bot ou quoi

sharp grail
bold sparrow
#

et btw : @dire latch A quel moment il a bind client dans son event ?

bold sparrow
dire latch
#

Ok mek

bold sparrow
#

Bah répond

#

A quel moment il l'a bind ?

#

J'y connais rien, je veux apprendre

dire latch
#

Google est ton amis

#

Va apprendre comme tu m'as dis hein mdr

bold sparrow
#

hein :)

dire latch
#

Si tu le dis

slim anvil
#

Vous voulez pas arrêter de faire les barbos 2 secondes

#

Et juste aider normalement sans passer pour des branquignoles onche

dire latch
#

Yep

bold sparrow
#

Mes excuses Duck

floral bolt
#

Salut, dites moi je cherche a trouver la fonction OnKeyUp mais pour React quelqun sait comment ca marche ?

hazy mirage
#

C'est ce que tu cherche ou po?

floral bolt
#

oui mais ca marche po

hazy mirage
#

ok désolé !

#

tu as essayé de console.log(error) pour voir ?

#

ah pardon

floral bolt
hazy mirage
#

j'avais compris que ça te renvoyais ça

#

tu peux envoyer l'index.js stp Valerio

#

ah merci

#

c'est ça que je voulais

#

j'arrive

#

version de discord.js ? la 12 ?

#

Euh

#

C'est étonnant, moi je n'ai pas le problème

#

Je veux dire par là que ça m'envoie le message

#

Est-ce que ça ne viendrait pas de tes paramètres discord ou meme des paramètres que tu as défini sur le serveur ?

blazing wadi
#

Les intents @hazy mirage

sharp grail
#

et je crois pas que y a de gateaway intent sur les direct message

blazing wadi
#

Si si

dire latch
blazing wadi
#

Moi je propose ptdr

dire latch
#

Tu étais en v13 alors 🤷‍♀️

blazing wadi
#

à part les intents

blazing wadi
#

yesssssssssssssss

#

😂

#

y a absolument pas grand chose qui change

#

fin si mais bon

dire latch
#

J'ai pas trop fais de v13 🤷‍♀️

blazing wadi
#

moi aussi

#

c'est pour ça que je demande

#

😂

#

TypeError: Cannot create property 'shardCount' on string '1M5Gr2Ob2WPNZT7JmLkSW3SztEFVKmQ1eFad-4fwaCtOxWsB4QBVCpARxEMg1XbzZsZ-'

#

J'ai toujours cette erreur

dire latch
#

Shard, tu le démarres mal ?

wide jacinth
#

Slt ! J'ai une petite question svp. Comment faire pour que mon appli web apparaissent parmis les appli quand un utilisateur appuie sur le bouton partage sur les resaux comme youtube ou tik tok ?

dire latch
#

Faut que les applis en question les acceptes @wide jacinth

#

🤷‍♀️

#

Je m'y connais pas donc jsp

wide jacinth
#

Ok merci quand meme

dire latch
#

Go Google après et demande dans #general @wide jacinth

wide jacinth
#

Bah c'est pas facile de trouver un resultat google quand tu sais pas expliquer clairement avec des mots cle ce que tu veux

dire latch
#

Ouais c'est vrai 😅

wide jacinth
#

x)

bold sparrow
#

How to create a share button with API

#

Something like this

#

Tu peux le faire avec express

wide jacinth
#

Ok je vais voir merci

#

@bold sparrow t’as pas compris

#

Je veux que on vois mon site parlais ma liste des appli quand on appuie sur le bouton share de TikTok par exemple

bold sparrow
#

Bah faut voir ça avec les dev de lappli

#

Ça dépend deux

wide jacinth
#

D'acc

keen narwhal
blazing wadi
wide jacinth
hardy glacier
keen narwhal
hardy glacier
#

Mais vous êtes sur que c'est ça?

lone flax
#

Non pas du tout

#

Le menu de partage est fait par Apple/Android

#

Pas les applications

#

Ça c'est made by android par exemple

hardy glacier
#

Yes, je suis plus d'accord, et je pense que le menu est fais automatiquement en fonction des applis du tel qui ont ou non le param de partage ou un truc du style

lone flax
#

Oui, il faut ajouter l'action quand tu dev sur Android Studio

hardy glacier
#

Yes, ou sur react native du coup

lone flax
keen narwhal
oak turret
#

Hello, quelqu'un aurait le lien ou utilise un éditeur html dans ce genre ? https://simditor.tower.im/, si quelqu'un en connait un cool ou quoi !

blazing wadi
#

Je comprends rien à Discord.js V13

#

c'est ouff

#

Genre je dois édit quoi pour le passer en v13

#

voici mon index en v12 :

const {Collection, MessageEmbed, Client, WebhookClient} = require('discord.js');
const config = require('./Database/config.json');

const token = config.token,
    client = new Client({
        partials: [
            "MESSAGE",
            "CHANNEL",
            "GUILD_MEMBER",
            "REACTION",
            "USER"
        ]
    });
require('dotenv').config();
require("moment-duration-format");
const disbut = require('discord-buttons');
disbut(client);

client.commands = new Collection;
client.aliases = new Collection;
client.cooldown = new Collection;




client.login(token).catch(console.error);


require(`${process.cwd()}/handlers/eventHandler.js`)(client);
require(`${process.cwd()}/handlers/commandHandler.js`)(client);


client.config   = require(`${process.cwd()}/Database/config.json`);```
ashen rapids
#

Ton command handler est probablement à refaire

tight lodge
#

En V13, ce n'est plus les partials mais les intents. Il me semble.

sharp grail
# ashen rapids Ton command handler est probablement à refaire

Premièrement effectivement je crois pas que les partiales existent encore, c'est des intents, ensuite, discord buttons n'est pas compatible donc il va falloir utiliser l'event interaction create et beaucoup de choses changent. Ensuite je ne sais pas comment fonctionne ton commande handler mais normalement il devrait toujours fonctionner 🤔

ashen rapids
#

Sauf s'il utilise les slash command

#

Ce qui est vivement conseillé

sharp grail
#

Bah l'ancien handler fonctionne toujourw

#

Si c'est pas bot certif y a pas de soucis

ashen rapids
#

T'enregistre pas forcément les commandes de la même façon si tu veux faire quelque chose de commun entre le handler et l'enregistrement des slash commands

blazing wadi
#

En fait j'aime pas trop le système harold

#

Faut peut être que je vous montre mon commandHandlze

#

Je vais créer un fil pour pas encombrer

oak turret
#

j'vois pas trop à quoi ça sert les / commands

bold sparrow
#

Discord se veut le plus interactif possible, l’implémentation des / commands en fait partie

#

Des choses interactives

#

Ce qui est pas mal c’est que si ta commande est globale tu peux l’utiliser partout

#

Comme ici avec Discord JS

oak turret
#

Ouais bof, un peu pourri je trouve cette maj mais ok

blazing wadi
#

ouais mais on est pas obligé

bold sparrow
#

Nan c’est tellement bien

blazing wadi
#

juste moi je veux juste passé en v13 après je suis trkl

bold sparrow
#

Ça peut paraître compliqué à comprendre le système mais ça va

bold sparrow
#

Mais les bots certifiés c’est la dictature

#

Ce qui est normal

oak turret
#

Ouais peut-être, fin franchement ça a l'air + chiant à faire qu'autre chose ces / commands j'ai regardé vite fait ça vaut pas trop le coup

blazing wadi
#

Mais genre comment je fais pour passer du handler djs 12 à 13

bold sparrow
blazing wadi
#

j'ai essayé trois fois

#

au bout d'un moment j'en ai eu marre

#

surtout pour l'utilité c'est la même chose

bold sparrow
#

Faut lire la doc attentivement

blazing wadi
#

en plus quand tu fais /

#

t'as toutes les commandes possibles

#

c'est ignoble

bold sparrow
#

Donc aucun problème

blazing wadi
#

en tout cas si vous pouvez m'aider pour mon handler

oak turret
#

Ouais bah du coup, j'préfère la v12 resté avec mon bon commando et implémenté tout ce système sans v13

blazing wadi
#

j'ai crée un fil si vous voulez 🙂

bold sparrow
#

Ton handler n’est pas censé ne pas fonctionner

blazing wadi
#

bah ça me mets ça regarde vient dans mon fil je vais pas encombrer ici

bold sparrow
oak turret
#

jamais

bold sparrow
#

Tu resteras en v12 jusqu’à la fin de DJS

oak turret
#

maybe

blazing wadi
#

si c'est possible ça me déranhge pas

ashen rapids
#

Au contraire c'est ultra pratique leur maj

Plus besoin de gérer les arguments et c'est tellement plus simple pour l'utilisateur, nottament pour mention

blazing wadi
#

😂

ashen rapids
#

Regarde déjà comment enregistrer une commande en slash command

blazing wadi
#

si tu veux j'ai mis mes codes dans un fil

blazing wadi
#

c'est tout

ashen rapids
#

Quelle est l'erreur avec ton handler actuel ?

blazing wadi
#

Justement j'en ai aucune

#

En fait, quand je fais admettons !help

#

Ça me renvoie rien

#

Alors que ma.commande est faite et aucun bug est à déplorer

ashen rapids
#

Car le nom de l'event qui se déclenche lorsqu'un message est envoyé a changé

#

C'est messageCreate maintenant il me semble

#

Regarde la doc 😁

blazing wadi
#

C'est plus message

sharp grail
#

Enfin il me semble

#

Il est déprécié

#

Donc si tu use message tu vas avoir un warn dans ta console

#

Donc vaut mieux utiliser messageCreate

dire latch
#

Yep @sharp grail

#

message fonctionne juste un warn inutile 😅

sharp grail
#

Oui

#

Donc autant mettre messageCreate

oak turret
slim anvil
#

oui

#

Tu en veux un vraiment comme ça

#

Ou même un plus type article etc

#

Car en mieux t’as Editor.js

#

Et après t’en quill editor aussi dans ce style

oak turret
#

Parfait merci c'est ce que je cherchais !

ashen rapids
#

C'est déprécié, donc ça va finir par disparaître. Après suffit de débug ton évent avec des console.log pour voir ce qui ne fonctionne pas

loud flint
#

Quill j'utilisais avant et c'est sympa aussi

#

Les widgets tiny je les trouve très intuitifs et beaux, j'ai découvert cet éditeur rte via Umbraco, ils utilisent ça et franchement j'en suis pas déçu

lapis onyx
#

Salut, je débute avec la librairie discord.js et je ne comprends pas pourquoi lorsque j'écris un message sur mon serveur il n'est pas log dans ma console ? ```js
require('dotenv').config();
const { Client, Intents } = require('discord.js');

const client = new Client({ intents: [Intents.FLAGS.GUILDS]});

client.on('ready', () => {
console.log(Logged in as ${client.user.tag}!);
});

client.on('message', msg => {
console.log(debug => ${msg});
});

client.login(process.env.CLIENT_TOKEN);```

dire latch
#

Met messageCreate à la place de message @lapis onyx

sharp grail
#

le problème vient des intents provided

sharp grail
#

il faut pour les messages dans une guild :
GUILD_MESSAGES (l'intent, qui te donne accès à)

  • MESSAGE_CREATE
  • MESSAGE_UPDATE
  • MESSAGE_DELETE
  • MESSAGE_DELETE_BULK
dire latch
#

Celui du message 🙂

#

🤔

sharp grail
lapis onyx
#

Merci, c'était bien les intents

sharp grail
#

pas de soucis 👀

dire latch
#

Good ducoups

keen narwhal
ancient sonnetBOT
#
Citation de Stanislas ☂0001 posté dans #javascript

Clique sur [📝](#javascript-typescript message) pour accéder au message
QuoteSBonsoir,

Je me permets d’exposer à nouveau mon problème, j’ai réalisé un bot depuis un certain temps qui a pour objectif de calculer une durée précise entre deux commandes qui sont envoyées par le membre. Le problème étant que la nuit, les données soustraites au date.now() actuel sont considérées comme invalide (alors que j’obtiens logiquement la date et l’heure précise en ms), auriez-vous une idée voire besoin d’une partie du code ?

Merci.QuoteE

blazing wadi
keen narwhal
ancient sonnetBOT
#
Citation de Stanislas ☂0001 posté dans #javascript

Clique sur [📝](#javascript-typescript message) pour accéder au message
QuoteS```js
if (timeServiceMinutes >= 15) {
function timeService(duration) {
var minutes = Math.floor((duration / (1000 * 60)) % 60),
hours = Math.floor((duration / (1000 * 60 * 60)) % 24);

    hours = (hours < 10) ? "0" + hours : hours;
    minutes = (minutes < 10) ? "0" + minutes : minutes;
    
    return hours + "h. " + minutes + "min.";
  }
  const embedTotalMsg = new Discord.MessageEmbed().setColor('#34C924');

  if (timeServiceMinutes >= 60) {
    embedTotalMsg.setDescription(`${check}・__Prise de Service__
        
    Ton service a duré ${timeService(totalTime)}`);
  } else {
    embedTotalMsg.setDescription(`${check}・__Prise de Service__
        
    Ton service a duré: ${timeService(totalTime)}`);
  }

  await message.author.send(embedTotalMsg).catch((err) => {});

  const embedServiceEnd = new Discord.MessageEmbed()
    .setColor('#34C924')
    .setDescription(`${check}・Fin de service de ${message.author} (${timeService(totalTime)} de service)`)
    .setFooter(moment().format('Do MMMM YYYY, HH:mm:ss'))

  bot.channels.cache.get(config.servicelogs).send(embedServiceEnd);

  isTimer = 0;
  time = 0;

  const service = [...dataSERVICE[message.author.id].service];
  if (dataSERVICE[message.author.id].timeRemoved) {

  const timeRemoved = [...dataSERVICE[message.author.id].timeRemoved];

  dataSERVICE[message.author.id] = {
    time,
    isTimer,
    timeRemoved,
    service
  };

  dataSERVICE[message.author.id].service.push(`${totalTime}`);

  fs.writeFile('./pds_data/data_service.json', JSON.stringify(dataSERVICE, null, 4), err => {
    if (err) console.log(err);
  });
  } else {

  dataSERVICE[message.author.id] = {
    time,
    isTimer,
    service
  };
  dataSERVICE[message.author.id].service.push(`${totalTime}`);

  fs.writeFile('./pds_data/data_service.json', JSON.stringify(dataSERVICE, null, 4), err => {
    if (err) console.log(err);
  });
}
}

timeServiceMinutes est la durée entre les deux commandes en minutes (ms convertis en minutes), le bot ne réagit plus dans la nuit lorsque cette commande est rentrée (je n'ai pas tout mis parce que la cmd contient largement plus de 4000 caractères, j'ai mis ce qui était nécessaire)![QuoteE](https://cdn.discordapp.com/emojis/864578798538981376.webp?size=128 "QuoteE")
ashen rapids
#

Pour faire ce genre de chose, je te conseille moment
Moins galère

ashen rapids
#

Avis à ceux qui ont déjà implanté un automod (anti spam) sur leur bot JS :

Vous êtes parti sur une solution open source ou tout from scratch ?

#

Ça a l'air sacrément chiant à coder et à tester haha

dire latch
#

Sois tu le fais toi même, sois avec un module @ashen rapids

ashen rapids
#

C'était pas vraiment ma question 😂

slim anvil
#

#general message

ancient sonnetBOT
#
Citation de Enzo0001 posté dans #discussion-libre

Clique sur [📝](#general message) pour accéder au message
QuoteSTester c’est douterQuoteE

slim anvil
#

vois avec Zaros je crois il a mit un anti spam sur GCA mais c’est du basique

#

Comment tu vois la chose toi

ashen rapids
#

J'avais vu un module existant exprès pour Discord sur git mais ça a pas l'air top + le gars pète un peu plus haut que son cul (excusez moi du terme)

grave lily
#

est-ce que c'est possible de me dire comment faire pour compter les visiteur sur mon site je sais pas comment programmer ceci

ashen rapids
grave lily
#

pas en node js

#

en js

#

ca fait quoi spam f5

ashen rapids
#

Oui mais ta valeur faut bien que tu la stocke quelque part

#

Que du front tu peux pas

#

C'est dynamique

#

Mais aujourd'hui tu peux utiliser un outil comme Google Analytics ou Matomo pour calculer ce genre de chose

queen ocean
#

Pour le reste, full manuel pour éviter les erreurs 👀

ashen rapids
#

Oue je vois

#

Genre Dyno et Mee6, où ils ont un système bien poussé, ça supprime souvent des messages legit

queen ocean
#

Pas très poussé du coup

ashen rapids
#

Ya pas un truc pour les full maj non plus ?

queen ocean
#

Waaaa j'aime pas les gens qui auto delete les full maj KaPOP

ashen rapids
#

Des fois, c'est bien utilisé mais la plupart du temps, c'est pour du troll / pub (d'après mon expérience)

dire latch
#

Oula non

ashen rapids
#

Disons que ça dépend des serveurs et des communautés 😅

#

Mais merci pour le retour Zaros !

queen ocean
#

tqt

coarse trench
#

Bonjour, comment savoir le badge hypesquad d'une personne ?

oak turret
#

bah look son profil

#

toi t’es de la bravery

#

mais js paspossible

#

j’crois pas du moins

#

c’est pas return comme info

coarse trench
#

Ahhhhhhhhhhhh

spring dock
#

si c'est les flags sur le user

oak turret
#

bv

tame kindle
#

C'est dur de relier un site Web à un bot discord ?

spring dock
#

non

tame kindle
#

D'accord

#

J'irais check sur internet

#

Merci

tame kindle
#

Comment est fait le colorless des embed discord gca ?

slim anvil
#

Le fait que ce soit transparent la ?

tame kindle
#

ui

slim anvil
#

Tu met la couleur du fond discord

tame kindle
#

c'est quel code couleur exactement

#

car moi quand je le fais si je mets ma souris dessus on le voit mais sur gca non

slim anvil
#

Euh je l’ai pas sur tel la

tame kindle
#

genre regarde

slim anvil
#

#2f3136

tame kindle
#

jtm

#

merci

tame kindle
#

je trouve que le "discord button" est vraiment fais avec le cul

#

genre jtrouve plein de soucis

ashen rapids
#

Comme ?

sharp grail
supple cairn
#

salut j'ai suivit le tutoriel de pilot2 sur le site mais quand je fait node . ca me met cette erreur :

      ^

TypeError [CLIENT_MISSING_INTENTS]: Valid intents must be provided for the Client.
    at Client._validateOptions (C:\Users\erwin\node_modules\discord.js\src\client\Client.js:544:13)
    at new Client (C:\Users\erwin\node_modules\discord.js\src\client\Client.js:73:10)
    at Object.<anonymous> (C:\Users\erwin\OneDrive\Bureau\programmation\botjs\PerduX\index.js:4:16)
    at Module._compile (internal/modules/cjs/loader.js:1063:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
    at internal/main/run_main_module.js:17:47 {
  [Symbol(code)]: 'CLIENT_MISSING_INTENTS'
}```
ashen rapids
#

Car tu as probablement suivi un tutoriel pour la V12 de DiscordJS

#

Alors qu'on est en V13

supple cairn
#

ah

ashen rapids
#

Maintenant, quand tu instancis le client, faut préciser les intents

supple cairn
#

j'ai juste copier coller le code

ashen rapids
#

Mauvaise idée 😏

dire latch
#

La flemme surtout mdr

supple cairn
#

mais c'est dur le js aussi

ashen rapids
#

C'est officiel, très complet et ultra pédagogue

supple cairn
#

non c'est trop long

ashen rapids
#

Tu suis juste les parties qui t'intéressent

supple cairn
#

je veux pas apprendre

dire latch
#

Ba abandonne 🤷‍♀️

ashen rapids
#

Dans ce cas là, je vois pas ce que tu fais ici 😅

supple cairn
#

mais la derniere fois que jai suivi le tuto de pilot2 ca fonctionner

magic epoch
#

😭😭😭😭

dire latch
#

Et non en v13

#

Ya rien de compliqué là dedans

ashen rapids
#

Sauf que DiscordJS a proposé une nouvelle version récemment. Évidement, les tuto de la V12 ne fonctionnent plus

supple cairn
#

j'ai pas installer de nouvelle version depuis

dire latch
#

Ils fonctionnent, faut juste changer sa version de djs @ashen rapids 🙂

sharp grail
dire latch
dire latch
supple cairn
#

a ok

ashen rapids
#

Ca sert à rien de commencer à dev sur une ancienne version, juste pour faire fonctionner un tuto

supple cairn
#

il y a quoi qui change dans la nouvelle version ?

dire latch
ashen rapids
#

Si tu veux pas apprendre, tu peux faire une demande de dev sur g-ca.fr

dire latch
#

Eh oh

dire latch
#

Il fait ce qu'il veut

sharp grail
dire latch
#

Tu es personne pour juger il me semble 😂

#

Laisser le dév sur la v12 si il préfère rhoo lala

ashen rapids
supple cairn
#

a chaque fois que je veux apprendre un language j'abandonne

sharp grail
ashen rapids
dire latch
supple cairn
#

des videos et des livres

tame kindle
ashen rapids
ashen rapids
sharp grail
supple cairn
#

non pas trop les bots moi c'est les sites

tame kindle
#

Jsplus jsuis sur tel

sharp grail
dire latch
ashen rapids
dire latch
#

Pour le module

supple cairn
#

chui pas tres fort en math

sharp grail
supple cairn
#

juste html css xD

slim anvil
#

faut juste savoir lire la doc de discordjs

supple cairn
#

jai 4 de moyenne en math xD

#

le premier language de programmation c'est dur

slim anvil
#

T’as pas besoin de math non plus pour un bot, sauf si tu cherches à faire un truc vraiment qui change

supple cairn
#

a apprendre

ashen rapids
#

Le guide tu as un paragraphe dans Get Started
Et tout est expliqué pour que tu puisses tout comprendre

slim anvil
#

Mais si c’est juste un bot de base comme on en voit souvent po besoin

supple cairn
#

pas grave j'attendrai avant j'apprend le web

tame kindle
sharp grail
tame kindle
#

Bah la doc est nul clairement

sharp grail
#

façon de le dire kappo

tame kindle
#

j'ai un soucis si quelqu'un peut m'aider je crée un fil

#

owo

coarse trench
#

Bonjour, quelqu'un pourrait m'aider ?

dire latch
#

message.delete({ timeout: 5000 })

#

Il me semble

sharp grail
#

car message.delete() serait censer fonctionner

sharp grail
ashen rapids
#

Il faut que tu utilises await

coarse trench
#

Oui oui c'est bon j'ai trouvé merci

coarse trench
ashen rapids
#

Ou then, mais await c'est mieux 😏

sharp grail
coarse trench
sharp grail
sharp grail
grave lily
#

est-ce que avec une commande prédéfini de javascript

#

c'est possible de voir si il y a quelqu'un qui vient sur ton site

grave lily
#

comment?

#

tt le monde me dit la meme chose personne ne me l'explique

ashen rapids
#

Je te l'avais déjà expliqué

#

Qu'est ce que tu n'as pas compris ?

grave lily
#

nan mais en code je parle

ashen rapids
#

Comme ça je te réexplique ce que t'as pas compris

grave lily
#

oui je veux bien

ashen rapids
#

Tu peux commencer par stocker une valeur. Cette valeur correspond à ton nombre de visites

#

Tu peux la stocker où tu veux, en fonction de ton archi

#

Dans une base de données MySQL, NoSQL ou tout simplement un fichier

#

Mais faut que ça soit côté back

grave lily
#

désolé de ne pas t'avoir répondue mais c'etait parce que j'etais en vacance pendant 2 semaines

#

la ou tu me dis que j'avais pas compris

ashen rapids
#

Justement je sais pas où tu as pas compris

grave lily
#

ok merci

#

c bon g compris

ashen rapids
#

Mais tu veux faire ça pourquoi ?

#

Parce que tu veux avoir une idée du nombre de visiteurs ?

grave lily
#

oui

ashen rapids
#

Dans ce cas là, réinvente pas la roue

#

T'as plein d'outils qui te permettent de mesurer une audience, avec des chiffres encore plus précis

#

Google Analytics pour le plus connu

#

T'as aussi Matomo, qui est plus libre

grave lily
#

mais tu peux utiliser ca en javascript

#

si c'est possible tu peux me montrer comment faire

ashen rapids
#

C'est une balise à intégrer dans ton code HTML

#

Dans un script

#

Donc oui

grave lily
#

ok

ashen rapids
#

Regarde sur Internet, t'as plein de très bons exemples

grave lily
#

ca marche avec un fichier js externe

ashen rapids
grave lily
#

ok merci pour la leçon

ashen rapids
#

En t'inscrivant sur Google Analytics, ils te donnent toutes les étapes pour inclure la balise, avec toutes les explications

grave lily
#

ok

#

je pense utiliser flask c'est plus facile a manier avec python

#

je prefer

ashen rapids
#

Comme tu veux !
Après c'est pas forcément une bonne idée d'utiliser ce genre de choses

Vaut mieux être sur du langage pur web et ne pas se rajouter une couche inutile

grave lily
#

pk

ashen rapids
#

Google Analytics, c'est un copié collé, ça te prends 5 minutes et c'est réglé

grave lily
#

ha d'accord

ashen rapids
# grave lily pk

Car à la base Python c'est pas pour faire du web
C'est mon avis mais je trouve ça bête de créer une framework pour tout et n'importe quoi

#

Si un jour le framework fonctionne plus, tu fais quoi ?

Et puis plus tu rajoutes de couches, moins t'es libre dans ce que tu fais

#

Alors qu'en restant sur du langage pur web, t'es sûr de pouvoir faire tout ce que tu veux

grave lily
#

oui...

#

je vois ce que tu veux dire

#

ok mais le ruby non plus c'est pas fait pour le web java non plus

#

et pourtant...

ashen rapids
#

Non pas vraiment

#

Et pourtant ?

grave lily
#

tu peux faire du web avec ses langages

#

(back-end)

ashen rapids
#

Oui après le backend c'est autre chose

grave lily
#

bha avec python c'est back-end

ashen rapids
#

Mais bon, après faut choisir ce qui est bon ou non
Un back en java où tu passes 3h par jour à compiler ce que tu fais, un peu chiant

grave lily
#

c'est vrai

ashen rapids
grave lily
#

non

#

tu peux faire du sqlite

#

en récupérant la variable

ashen rapids
#

Oui mais tu fais aussi du front

grave lily
#

oui

#

pas bcp

ashen rapids
#

C'est un peu la principale utilité 😏

grave lily
#

jsp

ashen rapids
#

Ca utilise d'ailleurs Jinja pour faire le rendu HTML

grave lily
#

oui

#

mais tu peux faire du backend

ashen rapids
#

C'est du fullstack oui

grave lily
#

c est ca qui est cool

ashen rapids
#

T'as des framework JavaScript aussi qui sont aussi simples à utiliser

#

Genre Vue

#

Et tu te rajoutes pas de stack inutile

grave lily
#

ok c bon je vais me debrouiller

#

merci

#

a toi

ashen rapids
#

Après si c'est pour une petite application, toute bête, Flask peut être bien. Mais je te conseille pas de prendre cette " mauvaise habitude "

#

A toi de voir, et hésite pas au besoin 😇

grave lily
#

ok

#

trés interessante cette conversation

#

pk mauvaise attitude

ashen rapids
#

Mauvaise habitude de rajouter des stacks comme ça sur des choses qui peuvent se faire aussi facilement sur les technos adaptées au web

grave lily
#

ok

grave lily
#

en faite c'est facile

#

je fais

#

visit = 0

#

counter = function() {
visit += 1
balise = document.queryselector(".p").Innerhtml(visit)
}

slim anvil
#

sauf que faut bien le save quelque part ce truc là

grave lily
#

si il est en ligne le site

#

c'est javascript qui le stock

#

non?

slim anvil
#

qui le stock ou du coup

ashen rapids
grave lily
#

j'ai un prblm

#

ca me dit que la variable est null

#

js: let visit = 0;
compte = function () {
visit +=1;
compteur = document.querySelector(".nbvisit");
compteur.innerHTML = visit};
compte();

#

html:<p class="nbvisit">0</p>

ashen rapids
#

Laquelle ?

#

Déjà tu appelles mal ta fonction

#

Et regarde ce que veut dire le mot clé let et quelle est la différence avec var

#

Mais encore une fois, ce que tu fais là ne te permettra pas d'atteindre ce que tu veux

grave lily
#

compteur is null

ashen rapids
#

Pour récupérer un élément sur ton DOM via une classe, c'est : getElementsByClassName

grave lily
#

je met quoi entre les parentheses

ashen rapids
#

Le nom de la class que tu veux récupérer

grave lily
#

avec le point ou pas

ashen rapids
#

Non

grave lily
#

faut que je mette le .value aussi

#

si je met le value ca me met compteur is undefined

ashen rapids
grave lily
#

oui

#

mais c'est bon je vais me débrouiller avec google anlytic

ashen rapids
#

Tu te feras moins chier yep

grave lily
#

mais faut que ton site soit en ligne

#

parce que il te demande ton url

ashen rapids
#

Yep, il faut

nocturne fable
#

Bonjour, j'ai un problème avec mon .hasPermission et je ne trouve pas le problème..

Voici mon erreur:

C:\Users\neird\OneDrive\Bureau\Hobbies\Développement\JS\Bot ElToman\index.js:61
    if (!message.member.hasPermission('KICK_MEMBERS')) {
                        ^

TypeError: message.member.hasPermission is not a function
    at Client.<anonymous> (C:\Users\neird\OneDrive\Bureau\Hobbies\Développement\JS\Bot ElToman\index.js:61:25)
    at Client.emit (node:events:406:35)
    at MessageCreateAction.handle (C:\Users\neird\OneDrive\Bureau\Hobbies\Développement\JS\Bot ElToman\node_modules\discord.js\src\client\actions\MessageCreate.js:23:14) 
    at Object.module.exports [as MESSAGE_CREATE] (C:\Users\neird\OneDrive\Bureau\Hobbies\Développement\JS\Bot ElToman\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (C:\Users\neird\OneDrive\Bureau\Hobbies\Développement\JS\Bot ElToman\node_modules\discord.js\src\client\websocket\WebSocketManager.js:345:31)
    at WebSocketShard.onPacket (C:\Users\neird\OneDrive\Bureau\Hobbies\Développement\JS\Bot ElToman\node_modules\discord.js\src\client\websocket\WebSocketShard.js:443:22)    at WebSocketShard.onMessage (C:\Users\neird\OneDrive\Bureau\Hobbies\Développement\JS\Bot ElToman\node_modules\discord.js\src\client\websocket\WebSocketShard.js:300:10)
    at WebSocket.onMessage (C:\Users\neird\OneDrive\Bureau\Hobbies\Développement\JS\Bot ElToman\node_modules\ws\lib\event-target.js:132:16)
    at WebSocket.emit (node:events:394:28)
    at Receiver.receiverOnMessage (C:\Users\neird\OneDrive\Bureau\Hobbies\Développement\JS\Bot ElToman\node_modules\ws\lib\websocket.js:970:20)
ashen rapids
#

C'est message.author si tu vises l'auteur du message

#

Et pas member

#

Si tu as un doute, tu as le doc de discordjs qui est hyper complète 😇

nocturne fable
#

ah d'accord, pourtant avant cela fonctionner 😅

nocturne fable
#

mais ca ne fonctionne toujours pas

#

TypeError: message.author.hasPermission is not a function

sharp grail
#

c'est un member d'une guild

#

donc forcément message.member

ashen rapids
sharp grail
#

c'est message.member.permissions.has()

ashen rapids
#

Faut bien penser à gérer ce cas d'erreur : Only available if the message comes from a guild where the author is still a member

sharp grail
#

évidemment, voilà pourquoi message.member et non message.author 👀

nocturne fable
#

le permissionhas à changé ?

ashen rapids
#

Yep j'ai confondu user et member

nocturne fable
#

ok merci à vous deux 🙂

keen narwhal
#

Bonjour

#

je voudrais faire un anti spam sur mon bot

#

pouvez vous m'aider

#

svp mercii

ashen rapids
#

Qu'est ce que tu aimerais mettre en place dans ton anti spam?

keen narwhal
#

Un truc assez réactif genre$

#

et qu'il agie de manière diférante quand les personne spam

#

avec différente chose

tame kindle
#

Mon systeme de langue sur mon bot discord est cassé tant que Quick.db n'est pas mis à jour pour la v13 sad

keen narwhal
#

en gros

ashen rapids
#

Pour les liens c'est assez facile

#

Tu check le message avec un regex, et s'il y a un lien discord.gg, tu ban

keen narwhal
#

un truc opti aussi x)

ashen rapids
#

(si tu veux ban)

keen narwhal
#

oui sa sera un ban

ashen rapids
#

C'est opti
Un regex qui check le message (une ligne) et une deuxième ligne pour ban

keen narwhal
#

apres avec quickdb je voudrais qu'il sois posible d'activé ou de désactiver se systement

#

systeme

keen narwhal
ashen rapids
ashen rapids
#

Tu peux check si quelqu'un envoie le même message en boucle

#

Tu saves l'ancien message de l'utilisateur, dès qu'il en envoie un autre, tu check si c'est le même, si c'est le même tu agis

keen narwhal
#

En gros, je voudrais que dés qu'une personne ajoute le bot l'anti spam et activé, ensuite si on fait une cmd il désactive l'anti spam

#

ensuite

ashen rapids
#

Tu peux même rajouter une sorte de timer en se disant : " est ce que ça fait + de 5 secondes ? "

keen narwhal
#

en gros sa sera un truc comme sa oui

ashen rapids
keen narwhal
#

genre att vien ici stv

tame kindle
#

discord js v13 a changé un truc des embeds ?

#

omg

#

oui

ashen rapids
#

Oui

sharp grail
ashen rapids
#

Tu peux même en send plusieurs facilement maintenant

tame kindle
#

maintenant on peut plus juste faire ```javascript
message.channel.send(embed) on doit faire

message.channel.send({ embeds: [exampleEmbed] })

sharp grail
#

les messagesoptions ont changés oui et je trouve ça mieux perso

ashen rapids
#

Je trouve ça mieux aussi !

sharp grail
#

juste ce qui est pas pratique c'est les messageattachment

tame kindle
#

de changement

sharp grail
#

bonne lecture

keen narwhal
#

je peux avoir le lien de la doc please

tame kindle
keen narwhal
#

merci

tame kindle
#

changement

slim anvil
#

Ah oui !

spring dock
#

ça devait être de la plus haute importance

slim anvil
dire latch
tame kindle
#

heuresement que l'equipe de discord.js ont des cerveaux surdeveloppés

#

je preferais avant

tight lodge
#

Et après ça se vante d'être un module simple pour interagir avec l'API Discord.

#

Very easy kappa

sharp grail
#

c'est pas compliqué mdr

sharp grail
tame kindle
#

j'ai vu

#

du coup je sais lire koa

twin bane
#

Bonjour ! je voulais savoir si une personne qui connais pas mal la nouvelle maj DJS 13 peux m'aider a tranformer un code de la V12 ? si oui voila le code ! merci d'avance, mrfafidoo

client.on('guildMemberAdd', async (member) => {
    if(db.has(`captcha-${member.guild.id}`)=== false) return;
    const url = 'https://api.no-api-key.com/api/v2/captcha';
        try {
            fetch(url)
                .then(res => res.json())
                .then(async json => {
                    console.log(json)
                    const msg = await member.send(
                        new MessageEmbed()
                            .setTitle('Please enter the captcha')
                            .setImage(json.captcha)
                            .setColor("RANDOM")
                    )
                    try {
                        const filter = (m) => {
                            if(m.author.bot) return;
                            if(m.author.id === member.id && m.content === json.captcha_text) return true;
                            else {
                                msg.channel.send("You have answered the captcha incorrectly!")
                            }
                        };
                        const response = await msg.channel.awaitMessages(filter, {
                            max : 1,
                            time : 10000,
                            errors : ['time']
                        })
                        if(response) {
                            msg.channel.send('Congrats, you have answered the captcha.')
                        }
                    } catch (error) {
                        msg.channel.send(`You have been kicked from **${member.guild.name}** for not answering the captcha correctly.`)
                        member.kick()
                    }
                })
        } catch (error) {
            console.log(error)
        }
})

le probleme fondamentale est les message send ... les packages requis sont

const db = require('quick.db')
const fetch = require('node-fetch');
const { MessageEmbed } = require("discord.js");
tame kindle
#

quand tu l'utilises ca te return une erreur ?

sharp grail
#

ça retournera déjà forcément une erreur

#

ce que tu peux changer déjà :

// v12
const msg = await member.send(
                        new MessageEmbed()
                            .setTitle('Please enter the captcha')
                            .setImage(json.captcha)
                            .setColor("RANDOM")
                    )
// v13
const msg = await member.send({ embeds: 
                        [new MessageEmbed()
                            .setTitle('Please enter the captcha')
                            .setImage(json.captcha)
                            .setColor("RANDOM")]
                    })

// v12
const response = await msg.channel.awaitMessages(filter, {
                            max : 1,
                            time : 10000,
                            errors : ['time']
                        })

// v13
const response = await msg.channel.awaitMessages({ filter,
                            max : 1,
                            time : 10000,
                            errors : ['time']
                        })
ashen rapids
#

Sur le guide t'as tout ce qui change en détail ..

tame kindle
#

SALUT

twin bane
sharp grail
twin bane
#

apres j'ai la theorie mais pas la pratique donc je voyais pas comment utiliser sa ...

desert riverBOT
sharp grail
#

Dacc

hybrid berry
#

c'est mieux je trouve

oak turret
#

cc je passe par ici, sur un discord anglais de dev djs, le « gérant » qui a dev notamment la lib des boutons est entrain de faire sa propre lib à la djs, et va faire un truc simple d’utilisation, clair et sans avoir besoin de tout changé à chaque maj

dire latch
#

Utilité ?

oak turret
#

t’as lu ?

#

je l’ai marqué

ashen rapids
#

J'attends de voir ça
Car généralement ce genre d'initiative, ça dure 6 mois puis après c'est plus maintenu

#

Et on se fait tous avoir

dire latch
#

Nan mais l'utilité de le faire ?

#

Car sa existe déjà

oak turret
#

C’est un mec sérieux ce dev anglais, il en a ras le cul de djs, et il va utiliser ses compétences pour faire sa propre lib et « régler » les soucis majeurs de djs entre guillemet

dire latch
#

A quoi sa sert d'avoir 2 choses pareils ?

#

Esce que sa seras fiable ?

#

Stable et autres ?

oak turret
#

où j’ai dis que c’était pareil

#

ta façon de penser est pas cohérente pour le coup

dire latch
#

En quoi c'est pas pareil ?

oak turret
#

c’est pas fait on en sait rien pour l’instant

#

Bah parce que il va proposer des manières de faire différentes, plus claires / simples après je ne connais pas sa todolist

ashen rapids
dire latch
#

Ba voilà, donc pareil que djs 🤷‍♀️ en quelque sorte donc bon

ashen rapids
#

La communauté ça sera sans doute l'étape la plus compliquée

oak turret
#

mais si tu t’arrêtes à dire « useless ça existe déjà, faudra arrêter pleins de choses mdr

dire latch
#

Surtout qu'on le connais pas le mec, esce que c'est fiable, stable et autres

oak turret
#

toit tu connais pas,  mais tous les dev « djs » anglais sont dessus

dire latch
#

Mouais

ashen rapids
#

Sans oublier que DiscordJS ça a déjà le soutiens de Discord, donc ça sera compliqué de faire concurrence

oak turret
#

bah y a ~4k membres, au lieu de partir dans le negatif voit le positif après fait ce que tu veux j’informe c’est tout

ashen rapids
#

Faut voir !

lone flax
#

J'vois pas trop le problème

oak turret
#

mais son but c’est d’avoir une utilisation plus simple et pas à se casser le cul à tout changer â chaque maj

ashen rapids
#

Du même avis, j'ai pas spécialement de soucis sur l'utilisation, je trouve ça hyper simple

lone flax
#

Comment tu peux avoir plus simple que djs

ashen rapids
dire latch
#

Juste simplifier ce qu'il existe déjà, c'est pas ouff après mdr

oak turret
#

la v13 pour moi ça commence à faire chier

ashen rapids
#

Est ce qu'il le fera ?

#

Ca on sait pas

lone flax
#

J'ai commencé le djs j'avais jamais fait du js de ma vie juste du Lua, et j'y arriverai super facilement

oak turret
#

Si justement, sinon il le ferait pas

dire latch
#

Ba en sois, c'est juste copier djs en simplifiant à ce que je comprends

#

Je verrai pas l'utilité de changé juste pour ça quoi

lone flax
#

Oui bah la v13 faut l'améliorer ça j'suis d'accord c'est complexe pour rien, mais à part ça c'est easy

#

Juste si on pouvait retirer ce .cache qui sert à rien et qu'on sait jamais où faut le mettre lul

dire latch
#

🙂

ashen rapids
# oak turret Si justement, sinon il le ferait pas

Il peut être motivé sur le coup et se rendre compte que maintenir le projet est long ..
Beaucoup se lancent dans des projets, te pondent des merveilles mais ça meurt au bout de 3 mois avec aucune communauté derrière pour récupérer le projet

oak turret
#

Encore une fois je connais pas sa todolist, mais perso rien qu’à voir la v13 se faire chier pour peu , commando outdated de plus, mon v12  me va bien

oak turret
#

On a quoi à perdre ? rien

ashen rapids
#

Et la V13 ya beaucoup de modif car faut dire que Discord est pas allé de main morte sur cette version avec toutes les nouveautés

#

La V11 à la V12 était pas aussi chiante

oak turret
#

Oui je sais