#javascript-typescript

1 messages · Page 88 of 1

snow apex
#

pas encore

ashen rapids
#

Voilà, faut trier et t'auras sûrement un meilleur score

snow apex
#

j'ai regardé le array.sort sur le wiki ça a pas l'air compliqué

ashen rapids
#

Oui la fonction de base te mache tout le boulot

snow apex
#

y'as quelque chose que j'ai pas trés bien compris

#

comment j'peux demander al a fonction .sort() de trier par ordre décroissant ?

ashen rapids
#

T'as regardé la Doc de la fonction ?

snow apex
ashen rapids
#

Ta fonction sort() peut prendre une fonction en argument

snow apex
#

j'ai pas trop compris

#

je dois faire une commande externe pour mon tri ?

ashen rapids
#

Pour comparer des nombres plutôt que des chaînes, la fonction de comparaison peut simplement soustraire b à a

snow apex
#

je viens de lire ça a l'instant xd

#

j'étais pas descendu

ashen rapids
snow apex
#

yep c'est le lien sur le quel j'étais

snow apex
#

C'est que je comprend pas comment je peux trier par level

#

Ok je viens de voir

#

Je vais essayer quelque chose et je reviens vers toi, merci de ton aide 😄

ashen rapids
#

Ton a et ton b corresponde à un index de ton tableau

snow apex
#

yep j'ai vu , fat que je fasse a.level - b.level

ashen rapids
#

Exact
Comme ça tu pourras trier ton array d'object

snow apex
#

j'ai reussi !!!

#

les teams sont équilibrés

#

je vais faire un peu plus de test, mais merci beaucoup @ashen rapids pour ton aide

ashen rapids
#

Ca te donne quoi comme score ?

snow apex
#

j'ai vraiment beaucoup appris en faisant cette commande, merci à toi pour ton temps 😉

#

15-16

ashen rapids
#

Pas mal !

snow apex
#

je vais approfondir un peu pour que le bot puisse retourner les équipe et pas que le score de chaqu'une, mais bon ça c'est un jeu d'enfant

ashen rapids
#

Pas de soucis, avec plaisir

Content de voir quelqu'un qui veut juste apprendre 😇

snow apex
#

en regardant mon code comme ça je me rend compte que c'est super simple, fallais juste y penser ^^

#

merci à toi, bonne soirée !

ashen rapids
#

gg à toi

slim anvil
#

une alternative à vuex en beaucoup plus light, sans devoir créer son propre store
https://pinia.esm.dev/

Intuitive, type safe, light and flexible Store for Vue

burnt perch
#

Jvai l'utiliser juste pour l'ananas kawaiiii

boreal edge
#

Bonjour,
Je viens vers vous car j'ai ce regex : /file\(?.*?\)/gm, hors, j'aimerai bien pouvoir faire comme un insert d'un string dans mon regex à la place de file, savez-vous comment je peux m'y prendre car cela fait maintenant 30 minutes que je suis totalement bloqué

Merci d'avance 😉

ashen rapids
boreal edge
#

J'ai mon regex que je t'ai envoyé

#

Et j'aimerai bien pouvoir replace le file par un string qui sera mis dans mon regex

#

@ashen rapids

ashen rapids
boreal edge
#

Non non

#

J'ai déjà mon regex

#

qui me permet de fetch quelque chose qui commence par file

ashen rapids
#

Oue

boreal edge
#

Sauf que j'aimerai bien le modifier

#

par ce que je veux

#

sauf que je n'arrive pas du tout à remplacer le file par ce que je veux dans le rege

#

x

ashen rapids
#

Ha je crois que je commence à comprendre 😂

ashen rapids
boreal edge
#

yes

ashen rapids
#

Ça prend un string en premier argument

boreal edge
#

C'est ce que j'ai essayé de faire justement

#

Mais avec le regex que j'ai, ça m'a mis des erreurs

ashen rapids
#

Fais voir ?

boreal edge
#

Rien que quand je fais ça new RegExp("file(?.*?)", "gm"), ça ne fonctionne pas

#

J'ai un "Invalid group"

#

Que je n'arrive pas à faire sauter

#

Sauf si j'enlève le premier ?

keen narwhal
#

Bonjour j'aimerai faire une commande de set prefix et j'en ai trouvé une sur ce site mais cela ne fonctionne pas

keen narwhal
ashen rapids
boreal edge
#

Merci beaucoup en tout cas x)

keen narwhal
#

ca me met ça

#
  if (!prefixes[message.guild.id]){
                ^

ReferenceError: message is not defined
    at Object.<anonymous> (C:\Users\MESSAL\Documents\Guillaume\Codage\Bot discord\projet bot test\index.js:13:17)
←[90m    at Module._compile (internal/modules/cjs/loader.js:1063:30)←[39m
←[90m    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)←[39m
←[90m    at Module.load (internal/modules/cjs/loader.js:928:32)←[39m
←[90m    at Function.Module._load (internal/modules/cjs/loader.js:769:14)←[39m
←[90m    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)←[39m
←[90m    at internal/main/run_main_module.js:17:47←[39m

C:\Users\MESSAL\Documents\Guillaume\Codage\Bot discord\projet bot test>```
ashen rapids
keen narwhal
#

mais ca je sais mais faut mettre quoi

ashen rapids
#

Tu sais développer ?

keen narwhal
#

j'apprendq

ashen rapids
#

Déjà il faudrait ton code

keen narwhal
#

ok

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

module.exports.run = async (bot, message, args) => {

    if(!message.member.hasPermission("ADMINISTRATOR")) return message.reply("Vous n'avez pas la permission");
    if(!args[0] || args[0 == "help"]) return message.reply("Syntaxes: !prefix <nouveau prefix>");

    let prefixes = JSON.parse(fs.readFileSync("./prefixes.json", "utf8"));

    prefixes[message.guild.id] = {
        prefixes: args[0]
    };

    fs.writeFile("./prefixes.json", JSON.stringify(prefixes), (err) => {
        if (err) console.log(err)
    });

    let prefixEmbed = new Discord.RichEmbed()
    .setColor("#FF9900")
    .setTitle("Prefix Set!")
    .setDescription(`Set to ${args[0]}`);
    
    message.channel.send(prefixEmbed);

}

module.exports.help = {
    name: "prefix"
};```
#
let prefixes = JSON.parse(fs.readFileSync("./prefixes.json", "utf8"));

  if (!prefixes[message.guild.id]){
    prefixes[message.guild.id] = {
      prefixes: process.env.PREFIX
    };
  }

  let prefix = prefixes[message.guild.id].prefixes;
  let messageArray = message.content.split(" ");
  let command = messageArray[0];
  let args = messageArray.slice(1);

  if(prefix == command.slice(0, 1)) {
    let commandFile = bot.commands.get(command.slice(prefix.length));
    if(commandFile)
    commandFile.run(bot, message, args);
  }```
ashen rapids
#

Tu utilises la dernière version de DiscordJS ?

keen narwhal
#

oui

ashen rapids
#

Donc normal, les commandes ne fonctionnent plus de la même façon

#

Sur la dernière version, t'as les slash command maintenant

keen narwhal
#

ok

ashen rapids
#

Tes parenthèses plus précisément

boreal edge
#

Comment ça escape ? avec un .split ?

ashen rapids
#

Un truc du genre :

new RegExp("file\\(?.*?\\)", "gm")

boreal edge
#

Ah yes

#

Faut que je regarde

boreal edge
#

Thx

still scroll
#

Bonsoir, cette erreur me soûle comment je pourrais réglé ça ? CLIENT_MISSING_INTENTS

#

TypeError [CLIENT_MISSING_INTENTS]: Valid intents must be provided for the Client.

sharp grail
#

Hello

#

Cela veut dire que tu es en v13 de discord js

#

et que tu sois spécifier des intents pour ton client

still scroll
#

Mhh d'accord mais je débute en js et je regardais un tuto mais cette erreur me bloque tu saurait remplacer ça const client = new Discord.Client(); par la bonne solutions ?

desert riverBOT
sharp grail
#

Ci dessus des liens vers le guide et la ddoc sur ce que sont les intents et comment les utiliser

#

Sinon pour ton problème, tu peux faire un tour vers les options du client !

desert riverBOT
sharp grail
#

Pour t'expliquer rapidement, les intents te permettent d'accéder à des events et des données

#

je sais que ça peut paraître beaucoup à lire, mais le guide / la doc est vraiment bien fait

#

Pour le début tu auras besoin au mininum je pense d'accéder aux messages créés dans une guild (event: message create) et de quelques autres events avec l'intents guilds.

Donc, les options du client sont sous forme d'objet et la valeur attendue pour les intents c'est un array des différents intents du client (logique)

const client = new Discord.Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES]})
keen narwhal
#

Salut j'ai une erreur avec mon code DJS : TypeError: Cannot read properties of null (reading 'kick')

#
const { SlashCommandBuilder } = require('@discordjs/builders');
const Discord = require('discord.js');


module.exports = {
    data:
        new SlashCommandBuilder()
            .setName("kick")
            .setDescription("Kick someone")
            .addUserOption(option => 
                option.setName("membertokick")
                .setDescription("Member to kick").setRequired(true)
            ).addStringOption(option => 
              option.setName("reason").setDescription("Reason of kick").setRequired(true)  
            ),
            /**
            * @param {Discord.CommandInteraction} interaction
            */
    async execute(interaction){
        if(!interaction.member.permissions.has("KICK_MEMBERS")){
            return await interaction.reply("❌ You must have kick members permission")
        }
        let message = "kick"
        await interaction.options.getMember("membertokick").kick({reason: interaction.options.getString("reason")}).catch(e => {
            message = "❌ Missing permission"
        })
        await message.reply(message)
    },
};
#

sa marche très bien avec ma commande ban mais celle de kick me génère une erreur

ashen rapids
analog hamlet
#

salut j'ai un petit problème avec mon .catch qui n'est pas pris en compte, vous avez une idée ?

  connection = await message.member.voice.channel.join().then((connection)=>{
            try{
                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("fin");
            
                    
                }); 
                
            }catch (err){
                console.log(err)
            }
        })```
keen narwhal
#

ton catch n'est pas pris en compte car tu l'as mal "positionner" essaye de le mettre là

#
  connection = await message.member.voice.channel.join().then((connection)=>{
            try{
                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("fin");
            
                    
                }); 
                
            }
        }).catch(err){
              console.log(err)
        }
#

je suis pas sur mais moi c'est ce que j'aurai fait en tout cas @analog hamlet

analog hamlet
keen narwhal
#

ahhh oui att

analog hamlet
#

oué non même plus haut il est pas pris :/

keen narwhal
#

oui j'avais pas vu le try

#

att je regarde

analog hamlet
#

je ne comprends pas la semaine dernière le code marchait -_-

keen narwhal
#

bah logiquement si tu as pas d'erreur il te retourne rien en console

analog hamlet
#

oué mais la j'ai une erreur et il crash

keen narwhal
#

ah

analog hamlet
#

en gros c'est pour rec un channel sauf que ce code marche seulement sur les gens qui sont sur la version app de discord les gens qui sont sur la version web font crash le code, du coup normalement juste à partir d'un try{} et d'un catch ça devrait marcher mais là non :/

keen narwhal
#

bah là comme ça j'sais pas j'suis pas un expert en discord js essaye de voir avec quelqu'un d'autre désolé :/

analog hamlet
#

justement personne n'y arrive :u
sinon j'ai trouver un code qui permet de bypass l'erreur mais c'est pas hyper recommander :/

keen narwhal
#

à toi de voir en attendant

ashen rapids
#

Discord dit travailler sur un nouveau système de permission pour les slash command, car c'est un peu maladroit sur la manière dont ça a été fait

#

Vous vous êtes organisé comment vous de votre côté pour les permissions ?

timid loom
#

J'ai pas encore tout fait mais perso sur les slash commands c'est pas le plus gros souci je pense
En tout cas sur Discord.js le fait de créer des commandes c'est beaucoup trop verbeux et pour moi ils devraient le changer ça, que Discord update l'API ou pas
Après sur les permissions globalement que tu voies la commande ça me dérange pas et après tu fais des vérifications de base comme ce que tu pouvais faire sur les commandes de base en fonction de l'auteur du message donc au final je trouve que les perms sont pas si mal foutues, juste pas assez exploitées par Discord pour que sur ce point les slash commands soient meilleures

ashen rapids
timid loom
#

ouais fin pour moi c'est pas le plus gros problème que j'ai avec les slash commands actuellement quoi

ashen rapids
#

Tu utilises le DiscordJS Builder ?

timid loom
#

pour l'instant ouais

#

je prévois d'utiliser d'autres trucs si j'en trouve voire de faire mon propre système

ashen rapids
#

Apparrement ça bouge beaucoup en ce moment au niveau de Discord et DiscordJS, donc à voir ce que ça donne
Mais du coup pour set des permissions sur la commande, faut d'abord créer toutes les commandes, toutes les fetch, et set les permissions dans une boucle

Je trouve ça un peu lourd

timid loom
#

ouais

ashen rapids
#

Ha mais on peut pas cacher la commande quand on a pas la perm ?

#

Ca la grise en fait

keen narwhal
#

Salut quelqu'un pourrait me dire pourquoi mon embed ne s'envoie pas ?

const { MessageEmbed } = require('discord.js');
const { prefix } = require('../config.json')

module.exports.execute = async (client, message) => {
    console.log("ok")
    if (message.author.bot) return;
    if (message.content.startsWith(prefix + "infoembed")) {
        console.log("ok")
        const infoembed = new MessageEmbed()
            .setColor('#0099ff')
            .setTitle('Some title')
            .setURL('https://discord.js.org/')
            .setAuthor('Some name', 'https://i.imgur.com/AfFp7pu.png', 'https://discord.js.org')
            .setDescription('Some description here')
            .setThumbnail('https://i.imgur.com/AfFp7pu.png')
            .addFields(
                { name: 'Regular field title', value: 'Some value here' },
                { name: '\u200B', value: '\u200B' },
                { name: 'Inline field title', value: 'Some value here', inline: true },
                { name: 'Inline field title', value: 'Some value here', inline: true },
            )
            .addField('Inline field title', 'Some value here', true)
            .setImage('https://i.imgur.com/AfFp7pu.png')
            .setTimestamp()
            .setFooter('Some footer text here', 'https://i.imgur.com/AfFp7pu.png');

        message.channel.send({ embeds: [infoembed] });
    }
}
sharp grail
#

D'ailleurs j'ai pas compris pourquoi si la commande est en mp (commande globale), tu peux pas reply l'interaction PepeClown

#

tu dois mp l'utilisateur

#

c'est pas pratique ;_;

sharp grail
ashen rapids
#

Oue mais je pensais que si t'avais pas la perm sur la slash command, elle s'affichait pas

sharp grail
keen narwhal
sharp grail
#

pour recevoir les events concernant les messages dans une guild

#

tu dois avoir l'intent GUILD_MESSAGES, donc Intents.FLAGS.GUILD_MESSAGES

#

pour avoir la liste de tous les intents et des events correspondant

desert riverBOT
keen narwhal
#
const client = new Client({ intents: [
    Intents.FLAGS.GUILDS,
    Intents.FLAGS.GUILD_MESSAGES
]});
#

j'ai fais comme ça

#

c'est bon ?

sharp grail
#

yes

keen narwhal
#

ok merci

sharp grail
#

avec plaisir 👀

keen narwhal
#

l'embed ne veut toujours pas s'envoyer :/

#

j'dois être maudit par djs je tente tout ce qui est possible pour l'envoyer mais rien n'y fait

sharp grail
#

mmh 🤔

#

ton handler marche bien ?

keen narwhal
#

normalement oui

#

j'ai aucune erreur console

queen ocean
#

Et les logs que t’a mit tu les vois ?

keen narwhal
#

nan

ashen rapids
#

Fallait commencer par ça 😏

queen ocean
#

Donc ta commande est pas exécuté 🤔

sharp grail
#

ton fichier s'appelle comment ?

keen narwhal
#

messageCreate.js

sharp grail
#

🤔

#

montre ton handler d'events ?

keen narwhal
#
const { SlashCommandBuilder } = require('@discordjs/builders');
const { REST } = require('@discordjs/rest');
const { Routes } = require('discord-api-types/v9');
const { clientId, guildId, token } = require('./config.json');
const fs = require('fs');

const rest = new REST({ version: '9' }).setToken(token);

const commands = [

]

const files = fs.readdirSync("./commands")

console.log(files)
files.forEach(f => {
    const props = require('./commands/' + f)
    if (props.data) commands.push(props.data.toJSON())
});

(async () => {
    try {
        await rest.put(
            Routes.applicationGuildCommands(clientId, guildId),
            { body: commands },
        );

        console.log('✅ Successfully registered application commands.');
    } catch (error) {
        console.error(error);
    }
})();
sharp grail
#

ah mais

#

c'est un handler pour des slash commands ça

keen narwhal
#

ah bah oui j'suis con

sharp grail
keen narwhal
#

Bonjour, je fais actuellement un systeme de levels, le principe est simple est simple 1 message = entre 15 et 25 xp . Pour définir au bout de combien d'xp on a un niveau je fais 0.15 fois la racine carrée de l'experience de l'utilisateur et j'ai le niveau. mais je cherche a faire l'inverse, en sachant le niveau trouver l'xp de l'utilisateur. j'ai essayé de faire le niveau au carré divisé par 0.15 mais ça marche pas. si qqn aurait une idée merci

sharp grail
#

C'est simplement une équation 👀

soit x nombre de level et y xp nombre entiers positifs ou nuls

0.15 * Math.sqrt(y) = n
n / 0.15 = Math.sqrt(y)
(n / 0.15)² = y

sharp grail
keen narwhal
#

OK

#

re salut, j'ai refait un peu tout mon code de 0 mais j'ai encore c'te soucis d'embed qui ne s'envoie pas

#

par exemple pour ce code :

const { MessageEmbed } = require('discord.js');

module.exports = {
    name: 'ping',
    aliases: ['latency', 'lag'],
    permissions: 'ADMINISTRATOR',
    description: "Envoyer le ping de l'utilisateur",
    cooldown: 5,
    execute(message, args, commandName, client, Discord) {
        const Response = new MessageEmbed()
            .setColor("GREEN")
            .setDescription(`🏓 ${client.ws.ping}ms`);
        message.channel.send({ embeds: [Response] })
    }
}
#

Mon commandHandler :

const { readdirSync } = require('fs');

module.exports = (client, Discord) => {
    const commandFolders = readdirSync('./Commands');
    for (const folder of commandFolders) {
        const commandFiles = readdirSync(`./Commands/${folder}`).filter(files => files.endsWith('.js'));
        for (const file of commandFiles) {
            const command = require(`../Commands/${folder}/${file}`);
            client.commands.set(command.name, command);
        };
    };
};
#

et pour les fichiers

sharp grail
#

Re bonjour, t'as un handler d'events ? x)

#

ah oui manifestement

#

yes, du coup, possible de voir ton event messageCreate ?

keen narwhal
#

yep

#

tien

#

le message était trop long

sharp grail
#

ah x))

#

je vois

#

tu get ta cmd qu'avec les aliases 🤔

keen narwhal
#

je dois rajouter quoi ?

sharp grail
#

ah non

#

pardon

#

j'ai mal lu

keen narwhal
#

ah

sharp grail
#

mmh 🤔

keen narwhal
#

j'suis bloquer sur la même erreur depuis cet aprèm j'peux pas avancer j'suis à deux doigts décéder sur place x)

sharp grail
#

est ce que tu es sur que ton execute dans ton fichier cmd s’exécute

#

et est ce que tu es sur que ton commande handler marche ? 🤔

keen narwhal
#

la question est comment s'en assuré

sharp grail
#

tu fais des console log par exemple

#

il ressemble à quoi ton event handler ? 🤔

keen narwhal
#
const { readdirSync } = require('fs');

module.exports = (client, Discord) => {
    const eventFolders = new readdirSync('./Events');
    for (const folder of eventFolders) {
        const eventFiles = readdirSync(`./Events/${folder}`).filter(files => files.endsWith('.js'));
        for (const file of eventFiles) {
            const event = require(`../Events/${folder}/${file}`);
            if (event.once) {
                client.once(event.name, (...args) => event.execute(...args, client, Discord));
            } else {
                client.on(event.name, (...args) => event.execute(...args, client, Discord));
            };
        };
    };
};
#

en console il me détecte bien le fichier ping.js et les dossiers parents

sharp grail
#

Oh

#

je vois ptet

keen narwhal
#

ah peut être mon miracle de la soirée

sharp grail
#

est ce que tu peux faire un console.log dans ton fichier messageCreate

#

au tout début

keen narwhal
#

je console.log quoi ?

sharp grail
#

ce que tu veux, ok par exemple, et ensuite test d'envoyer un message

keen narwhal
#

ah ouais ok

#

je reçois rien en console

sharp grail
#

ah voilà

#

le pb vient de ton event handler

#

event.name.split(".")[0];

#

essaye ça 🤔

keen narwhal
#

ok j'ai att

#

ok la commande marche
D:\DiscordJS\Events\Message\messageCreate.js:18
const command = client.command.get(commandName) ||

#

TypeError: Cannot read properties of undefined (reading 'get')

sharp grail
#

client.commands

#

fin

#

ça dépend de ce que tu as def comme collection

#

ouais c'est client.commands.get

keen narwhal
#

D:\DiscordJS\Events\Message\messageCreate.js:40
cooldowns.set(command.name, new Collection());
^

ReferenceError: Collection is not defined

#

ok j'ai

#

cet erreur est toute con enft

sharp grail
keen narwhal
#

roh yes enfin doux jésus marie joseph

sharp grail
#

bah voilà 👀

#

pas compliqué au final 200iq

keen narwhal
#

bon par contre le cooldown ne marche pas hahaha

sharp grail
#

je t'avoue que je comprends pas cette ligne cependant

#

const { cooldowns } = client;

keen narwhal
#

sans te mentir le système de cooldown j'était paumé aussi

#

il vient d'un tuto

sharp grail
#

mmh

#

tu les def où tes collections ?

#

car en fait ça n'a vraiment aucun sens

keen narwhal
#

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

#

ici

#

au tout début

sharp grail
#

bah là tu import les collection depuis discord js 🤔

#

en gros tu def où que client.cooldowns = new Collection()

keen narwhal
#

nul part

#

ça doit se passer ici l'erreur je pense

#
    /**
     * @param {Client} client
     * @param {Message} message
     */
#

j'ai ça aussi

sharp grail
#

je dois t'avouer que je ne connais absolument mais alors pas du tout ça

keen narwhal
#

ah bon bah pg tkt tu m'as déjà bien aidé j'vais pouvoir continuer

sharp grail
#

mais je pense pas que le problème vienne de ça

sharp grail
keen narwhal
#
const { token } = require('./config.json');
const Discord = require('discord.js');
const { Intents, Collection } = Discord;
const client = new Discord.Client({
    intents:
        [
            Intents.FLAGS.GUILDS,
            Intents.FLAGS.GUILD_MESSAGES,
            Intents.FLAGS.GUILD_INVITES
        ]
});

client.commands = new Collection();
client.cooldowns = new Collection();

['eventsHandler', 'commandsHandler'].forEach(handler => {
    require(`./Handlers/${handler}`)(client, Discord)
});

client.login(token);
#

ah bah si il est là

#

j'avais zappé x)

sharp grail
#

ah je me disais

keen narwhal
#

il manque un truc dans mes intents ?

#

mais j'pense pas

sharp grail
#

bah ça dépend x)

desert riverBOT
sharp grail
keen narwhal
#

nan je pense pas parce que le code doit envoyé un embed d'erreur si jamais la commande est exécuter 2 fois dans la même minute

#

et y a rien qui pourrait correspondre que j'ai pas déjà mis

sharp grail
#

Oui nan mais pour ton cooldowns les intents n'intervienent pas

#

mmh

#

problème function

floral bolt
#

Salut, jessaye de faire un truc comme ca : ```
async function FetchUserInformations(users) {
const token = await GetToken()
users.forEach(async user => {

    const userResponse = await axios.get(
        `URL`,
        {
            headers: {
                Authorization: `Bearer ${token}`,
                'Client-Id': ``
            },
        })
    
    UserInformation = userResponse
})
return UserInformation

}```

#

mais ca me remplis le UserInformation avec la meme choses tous le temps

#

alors que j'aimerais avoir 2 résultats car j'ai 2 users

keen narwhal
keen narwhal
#

ok merci

slim anvil
#

le users te return quoi ?

floral bolt
#

enfaite j'essaye de faire en sorte de récupérer les infos de plusieurs user toutes les 20 minutes et que ca soit stoker dans une table

#

ah bah j'ai reussi 😄

slim anvil
#

Mais c'est sur ton API à toi ?

#

pourquoi pas avoir une route qui elle même te return tous les users voulu ? que plutot faire de multiple get

floral bolt
#

non l'api twitch

slim anvil
#

Ah yup oki

floral bolt
#

Quelqu'un pourrait me dire comment faire pour avoir un format sympa pour le temps ? 2021-09-12T15:47:42Z

ashen rapids
#

C'est une librairie pour manipuler les Dates

#

Hyper pratique

floral bolt
#

top merci

ashen rapids
#

Petite question
J'ai mon VSCODE qui me dit : 'await' has no effect on the type of this expression.
Sauf que j'ai bien une fonction async

#

On est d'accord que c'juste mon éditeur qui part en couille ?

ashen rapids
#

Oue c'était bien ça

slim anvil
#

ouais par moment faut juste relancer l'éditeur

#

le cache de VScode

oak turret
#

ça m’est jamais arrivé ou j’ai du bypass cette remarque de vs kappa

ashen rapids
#

Ca me le fais souvent en ce moment

oak turret
#

ça te bloque ton debug? ou c’est juste une information

slim anvil
#

généralement ca arrive surtout sur les gros projets avec du webpack, rolllup etc mais bon ca m'arrive pas tant que ça non plus, essaye peut etre de clear cache de vscode ? thinkgeometric

slim anvil
#

momentjs est bcp trop lourd, et malheureusement tu ne peux pas choisir ce dont tu as besoin, tu es obligés d'importer tout moment
juste pour du formatage ou autre, tu peux simplement utiliser DateFNS, et à la limite Dayjs

ashen rapids
#

D'après npm

slim anvil
#

Il est lourd

#

à partir du moment ou tu es obligés d'importer toute la lib pour utiliser uniquement .format()

#

là ou sur date-fns tu import uniquement format quand tu en as besoin qui plus est

#

Donc la différent est forcément notable

#

un exemple

ashen rapids
#

Je suis d'accord que c'pas intelligent mais la diff est notable, c'est de l'opti au mm prêt

slim anvil
#

Pas au mm prêt

#

typiquement dateFns dispose d'une fonction uniquement pour addDays, moment c'est un .add() ou tu passes un argument pour lui dire que c'est pour ajouter un Day, donc la fonction est bcp plus lourde et lente lors de l'appel de celle-ci

#

y a pleins de comparaison ou on te dit que uniquement sur ce genre de chose c'est 8 à 10 fois plus rapide, c'est pas rien :/

#

c'est juste "plus chiant" a utiliser car oui tu dois import quand t'as besoin, mais après ton app tu lui fais gagner en perfomance sans trop d'effort, c'est tjrs important

ashen rapids
#

Je suis intéressé par avoir une comparaison entre moment et date-fns au niveau de la perf alors (sans compter le poid du package)

#

Mais je suis ok que Moment a pas été très intelligent là-dessus*

slim anvil
#

C'est juste que c'est assez vieux, mais c'est juste pour ça qu'ils ont sortis Luxon hein

slim anvil
ashen rapids
#

Je savais pas que Luxon = Moment

slim anvil
#

date-fns tu vas pouvoir simplement importer la fonction que tu veux, donc tu import pas tout dans ton projet

slim anvil
#

après je suis ok sur le fait que moment ca reste la moins verbeuse pour le coup

ashen rapids
#

Ha oui du coup ils maintiennent plus Moment

sharp grail
#

Après tu peux juste utiliser les méthodes avec les dates en natif c'est complet

#

Fin ca suffit

ashen rapids
#

Pas toujours, c'est souvent chiant à manipuler

slim anvil
#

c'est genre hyper chiant ouais mdr

#

Si tu veux un bon formatage, je vois pas l'intérêt de réecrire une fonction, surement moins bien, qu'une lib qui le fait déjà

sharp grail
#

Baah ça fait le taf en vrai

#

Après ouais c'est un peu chiant donc c'est à l'avis de chacun

keen narwhal
#

Salut j'ai une erreur mais je comprends pas pourquoi RangeError [EMBED_FIELD_NAME]: MessageEmbed field names must be non-empty strings.

const { MessageEmbed } = require('discord.js');

module.exports = {
    name: 'info',
    aliases: ['about', 'me'],
    description: "Envoyer ses infos personnels ou les infos d'un autre joueur",
    execute(message, args, commandName, client, Discord) {
        const guild = message.guild;
        const info = new MessageEmbed()
            .setTitle("Voici les informations de " + guild.name)
            .addFields(`Le fondateur du serveur ${guild.name} est ${guild.owner}`)
            .setColor("BLUE")
        message.channel.send({ embeds: [info] })
    }
}
ashen rapids
#

La syntaxe c'est ça :

.addFields( { name: 'Regular field title', value: 'Some value here' }, { name: '\u200B', value: '\u200B' }, { name: 'Inline field title', value: 'Some value here', inline: true }, { name: 'Inline field title', value: 'Some value here', inline: true }, )

keen narwhal
#

Ahhhhhh

ashen rapids
#

La syntaxe c'est ça :

        { name: 'Regular field title', value: 'Some value here' },
        { name: '\u200B', value: '\u200B' },
        { name: 'Inline field title', value: 'Some value here', inline: true },
        { name: 'Inline field title', value: 'Some value here', inline: true },
    )```
keen narwhal
#

oui j'avais complètement oublier que ça avait changer

ashen rapids
#

Ou si tu veux qu'un field : .addField('Inline field title', 'Some value here', true)

#

Même chose mais sans s

keen narwhal
#

merci !

#

ah j'ai encore le même message d'erreur pourtant j'ai changer

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

module.exports = {
    name: 'info',
    aliases: ['about', 'me'],
    description: "Envoyer ses infos personnels ou les infos d'un autre joueur",
    execute(message, args, commandName, client, Discord) {
        const guild = message.guild;
        const info = new MessageEmbed()
            .setTitle("Voici les informations de " + guild.name)
            .addField('Fondateur du serveur', guild.owner, true)
            .setColor("BLUE")
        message.channel.send({ embeds: [info] })
    }
}
#

ok donc ça vient du guild.owner parce que quand je mets du texte il me dit rien

ashen rapids
#

Il faut que tu rajoutes un .toString()

keen narwhal
#

il me met une erreur sur le .toString()

ashen rapids
#

Montre ?

#

Attends, faut que je regarde un truc sur la doc

keen narwhal
#
const { MessageEmbed } = require('discord.js');

module.exports = {
    name: 'info',
    aliases: ['about', 'me'],
    description: "Envoyer ses infos personnels ou les infos d'un autre joueur",
    execute(message, args, commandName, client, Discord) {
        const guild = message.guild;
        const info = new MessageEmbed()
            .setTitle("Voici les informations de " + guild.name)
            .addField('Fondateur du serveur', guild.owner.toString(), true)
            .setColor("BLUE")
        message.channel.send({ embeds: [info] })
    }
}
#

TypeError: Cannot read properties of undefined (reading 'toString')

ashen rapids
#

C'est pas owner

#

Mais .ownerId

keen narwhal
#

ouais mais du coup ça me donne une suite de chiffre au lieu d'avoir le pseudo

ashen rapids
#

Tu peux faire <@ownerId>

#

Je sais pas si ça marche dans un embed

#

Jamais essayé

keen narwhal
#

du coup je mets entre ${} ?

ashen rapids
#

Tu peux oui

#

Entre `

keen narwhal
#

ah bah sa marche pas j'ai tout de souligner

ashen rapids
#

Montre ?

keen narwhal
keen narwhal
#

ah et aussi quelqu'un sait pourquoi j'obtient une valeur nul ici

#
                { name: '• Fondateur du serveur 👑', value: `${guild.ownerId.toString()}` },
                { name: '• Nombre de channel écrit 📝', value: `${guild.channels.cache.filter(ch => ch.type === "text").size}`},
                { name: '• Nombre de channel vocaux 🎼', value: `${guild.channels.cache.filter(ch => ch.type === "voice").size}`},
                { name: '• Nombre de personne présente sur le discord 🙋‍♂️', value: `${guild.memberCount - 1}`}
ashen rapids
#

Non t'as pas compris ce que je voulais dire 😂

#

Plutôt <@ID_OWNER>

keen narwhal
#

euh tu viens de me perdre t'as pas un exemple stp x)

ashen rapids
#

<@guild.ownerId>

keen narwhal
#

sans les {} du coup ?

#

j'pense pas que sa fonctionne dans un embed

#

mais du coup tu sais pourquoi j'ai une valeur nul pour mes salons vocaux et écrits ?

ashen rapids
#

Si avec les {

keen narwhal
#

j'pense que sa marche pas parce que j'ai une erreur

#

mais au pire j'laisse comme ça c'est pas grave

ashen rapids
#

value: ${<@guild.ownerId>}

keen narwhal
#

nan j'ai une erreur

ashen rapids
#

Montre ?

keen narwhal
ashen rapids
#

T'as oublié les `

keen narwhal
#

avec c'est encore pire x)

#

je pense que sa fonctionne pas dans un embed

ashen rapids
#

Montre ?

#

Rien à voir, là c'est une erreur dans ton éditeur

keen narwhal
ashen rapids
#

T'as oublié de fermer avec > déjà

keen narwhal
#

toujours des erreurs

ashen rapids
#

Et c'est seulement ton Owner id que tu dois mettre dans tes brackets

#

<@${guild.ownerId}>

keen narwhal
#

j'enlève le guild ?

ashen rapids
#

Non

#

Tu laisses ça dans tes brackets

keen narwhal
#

${guild.<@ownerId>} comme ça ?

ashen rapids
keen narwhal
#

ah yes merci

uneven kayak
#

BOnsoir, quelqu'un saurait expliquer pourquoi il me manque certains pseudo ?

#
  compteur = 0
  text =  ""
  text2 = ""
  text3 = ""
  while (compteur != data.params.used_slots) {
    if(data.params.players[compteur]) {
      var pseudo = data.params.players[compteur].name

      if(compteur < 14) {
        console.log('1ère condition'+compteur+' | '+pseudo)
        text = text + `${pseudo}\n`
      }

      if(compteur > 14 && compteur < 29) {
        console.log('2ème condition'+compteur+' | '+pseudo)
        text2 = text2 + `${pseudo}\n`
      }

      if(compteur > 29) {
        console.log('3ème condition'+compteur+' | '+pseudo)
        text3 = text3 + `${pseudo}\n`
      }
    }
    compteur = compteur + 1
  }```
Résultats des console log

1ère condition0 | Bot01
1ère condition1 | Bot02
1ère condition2 | Bot03
1ère condition3 | Bot04
1ère condition4 | Bot05
1ère condition5 | Bot06
1ère condition6 | Bot07
1ère condition7 | Bot08
1ère condition8 | Bot09
1ère condition9 | Bot10
1ère condition10 | Bot11
1ère condition11 | Bot12
1ère condition12 | Bot13
1ère condition13 | Bot14
1ère condition14 | Bot15
2ème condition16 | Bot17
2ème condition17 | Bot18
2ème condition18 | Bot19
2ème condition19 | Bot20
2ème condition20 | Bot21
2ème condition21 | Bot22
2ème condition22 | Bot23
2ème condition23 | Bot24
2ème condition24 | Bot25
2ème condition25 | Bot26
2ème condition26 | Bot27
2ème condition27 | Bot28
2ème condition28 | Bot29
2ème condition29 | Bot30
3ème condition31 | Bot32
3ème condition32 | Bot33
3ème condition33 | Bot34
3ème condition34 | Bot35
3ème condition35 | Bot36
3ème condition36 | Bot37
3ème condition37 | Bot38
3ème condition38 | Bot39
3ème condition39 | Bot40

hazy mirage
uneven kayak
#

J'ai tout essayé mais j'ai toujours pas réussi à résoudre le problème

hazy mirage
#

Tu pourrais envoyer tout le code stp je suis pas sûr que le probleme vienne de la portion que tu as envoyé

slim anvil
#

alors j'ai pas lu les logs que tu envoies ou quoi, mais si tu as des cases manquantes, ca peut peut etre venir de ta condition

#

if(compteur < 14) {
donc 14 est ignoré
if(compteur > 14 && compteur < 29) { 14 est ignoré, 29 aussi
if(compteur > 29) { 29 est ignoré

#

c'est voulu ?

hazy mirage
#

Oui mais ça explique pas tout c'est pour ça

#

il manque le Bot31 et le Bot 16 dcp

uneven kayak
slim anvil
#

if(data.params.players[compteur]) {

#

il y a peut etre juste pas idk, et comme il incremente dans ts les cas

#

faudrait avoir un log de la data recu

hazy mirage
#

ah non mais pardon étant sur tel j'avais mal vu ce qu'il loggait

#

ta full raison mdrrrr

uneven kayak
#

Je log la data entière ?

slim anvil
#

si c'était voulu ou non

hazy mirage
#

Il y a des cases qui sont pas pris en compte parce que tu fais des comparaisons strictement supérieur ou inférieur

#

a mon avis dans ton cas il y a des cases ou tu devrais faire <= ou >= par ex

uneven kayak
slim anvil
#

dans tous les cas

#

tu as des éléments ignorés

hazy mirage
#

if compteur >= 14 et >= 29 alors je pense

slim anvil
#

le probleme vient de là

#

oui c'est meme sur pilot

uneven kayak
#

Je crois que je l'ai déjà fait, mais le truc c'est pour quoi Bot01 est ignoré ?

slim anvil
#

1ère condition0 | Bot01
1ère condition1 | Bot02

#

tu l'as non ? thinkgeometric

#

ah pas sur l'embed

uneven kayak
#

Dans les logs j'ai tout mais pas sur l'embed

slim anvil
#

là comme je ne sais pas, essaye de régler déjà l'autre soucis de retester

#

de log aussi text, voir si il est bien dedans avant de l'envoyer dans l'embed

#

pour remonter au coeur du probleme

#

petit à petit

uneven kayak
#

je test

#

Quand je log text text2 text3 en dehors de la boucle

Bot01
Bot02
Bot03
Bot04
Bot05
Bot06
Bot07
Bot08
Bot09
Bot10
Bot11
Bot12
Bot13
Bot14
Bot15

Bot15
Bot16
Bot17
Bot18
Bot19
Bot20
Bot21
Bot22
Bot23
Bot24
Bot25
Bot26
Bot27
Bot28
Bot29
Bot30

Bot30
Bot31
Bot32
Bot33
Bot34
Bot35
Bot36
Bot37
Bot38
Bot39
Bot40
#

J'ai mis des >= et <= à chaque condition, maintenant j'ai tout sauf le 1er
Pourtant dans le log de text il y est

opal harness
#

Yo, comment je récupère la personne qui a invité quelqu'un ?
message.mentions.users.first()

sharp grail
sharp grail
#

ça dépend de comment tu veux le faire, si c'est juste combien de personnes l'utilisateur a invité (via les invitation illimités de préférences) tu recup toutes les invites d'une guild et tu prends celle de l'utilisateur, sinon pour un truc plus poussé tu stockes ça dans une db

#

et tu edit si une personne leave par ex, où réinvité après avoir quitté

#

etc.

fresh river
#

Hello, je viens vers vous pour vous demandez un petit coup de main, j'ai un petit soucis, j'essaie de faire un petit bot musique pour moi mais j'ai un soucis quand je veux le lancer pour le tester ça m'affiche cette erreur (pourtant je ne vois pas d'erreur, je préfère demander à d'autres personnes au cas ou):

sharp grail
#

@fresh river je te conseille de regnérer le token de ton bot au plus vite

fresh river
#

Déjà fait oui j'ai zappé

sharp grail
#

sinon pour ton problème c'est que quelque part tu essaies de lire la propriété de quelque chose qui n'existe pas (undefined)

fresh river
#

Oui, mais le soucis, c'est que j'ai bien fait gaffe et y a rien qui n'est pas bon

#

Enfin si du coup il doit y avoir quelque chose, mais je vois pas ce qui ne va pas

oak turret
#

t’as rien dans ton dossier commands/ ?

fresh river
#

Nop

oak turret
#

ok et t’as bien npm i discord.js-commando etc?

fresh river
#

Oui

#

Tout est bien dans le package.json etc...

inner escarp
#

Peut etre que ton nodejs a pas les droits admin ?

#

Normalement à moins que tu ai modifié ton installation NodeJs est dans ton path donc t'es pas obligé de tracer tout le chemin

fresh river
#

Si normalement y a les droit admin

burnt perch
#

Exec en admin

#

Ça peut faire des miracles

#

@fresh river

fresh river
#

Non ça ne marche pas

oak turret
#

attends je crois savoir où est ton bleme

#

montre ton dossier

dire latch
keen narwhal
#

Juste à un endroit il a mis client.once c'est pas client.on

ashen rapids
keen narwhal
#

Ok non mais je dis ça comme ça moi j'apprends juste à coder

keen narwhal
#

Les bots musique vont être shutdown par discord

#

Ça sert à rien de s’embêter à en faire un

ashen rapids
#

Je pense que si tu utilises l'API Youtube juste pour un serveur, ça passe

keen narwhal
#

J’ai pas plus creuser que ça

ashen rapids
#

En se faisant de l'argent

keen narwhal
#

Ah donc tout les autres doivent aussi abandonner leur bot juste pour lui

#

Genre rythm et tout

ashen rapids
#

Oui

#

C'est Youtube qui strike

#

Mais si tu utilises l'API Youtube juste pour un serveur, t'auras jamais de soucis je pense

#

Là le problème c'est que des milliers de gens en profitaient derrière

keen narwhal
#

Ah ouais je vois

#

Y a bien une solution qui va se débloquer

ashen rapids
#

Ya Spotify après

slim anvil
#

Après ce sera meme sentence avec spotify a mon avis KappaRetard

ashen rapids
#

Un jour ou l'autre je pense oui

inner escarp
#

En même temps il y a légalement un problème et un manque à gagner énorme pour les musiciens (et maisons de disques) du fait de ne payer que 10€ par mois pour des centaines d'utilisateur

#

La seule solution légale serait de faire payer la même redevance que les magasins (pour la musique) aux bots et encore c'est pas la même population

opal harness
#

Bonjour,
J'aurais besoin d'aide pour fetch un membre via son ID en gros je stock l'id du joueur, et je voudrais récupérer les informations complete de la personne comme je peux faire pour un channel avec un fetch
Cordialement
GPOIRE

opal harness
ashen rapids
#

Dans ton object Guild, t'as les membres

#

Et tu utilises la méthode fetch() pour récupérer ton membre

dire latch
#

@fresh riverEssaye ma solution pour voir 🙂

fresh river
#

Je vais essayer

opal harness
#

Hello,
Comment je peux faire pour check tout les joueurs connecté dans un channel vocal

ashen rapids
#

Tu as pu voir la doc du VoiceChannel. Sur la page de la doc, qu'est ce qui peut être intéressant pour toi déjà ?

opal harness
#

Problème réglé

keen narwhal
#

Salut est ce que c'est bien d'utiliser repl.it pour coder un bot en JS ?? Ou c'est mieux d'utiliser Node.JS

#

Ou peu importe

slim anvil
#

Mais replit c’est simplement un IDE online je crois donc aucun rapport avec node.js ou non

keen narwhal
#

ah

#

J'ai suivi des tutos ou on utilisait replit

slim anvil
#

Mais c’est juste ton ide logiquement

keen narwhal
#

Dans tous les cas utilise nodejs et vscode

slim anvil
#

https://nuxtjs.org/fr/v3/ yeah le vite bundler sur nuxt ça va etre le feu

Nuxt.js

Nuxt 3 is rebuilt from the ground up for the modern web. Hybrid static & server rendering, API routes and native serverless.

ashen rapids
#

Salut !

Je viens un peu vous partager mon code pour faire du code review et avoir un peu l'avis de tout le monde 😇
J'ai voulu rendre un peu plus propre mon code (et surtout plus lisible), pour enlever un enchainement de if / else.
Je suis donc arrivé à ça :

                const actions = {
                    'view': async () => {
                        const score = await interaction.client.scoreboard.getScore(user);

                        return `${user} a ${score} FatPoint(s)`;
                    },
                    'add': async () => {
                        if (points <= 0) {
                            return interaction.reply('Le nombre de points doit être supérieur à 0');
                        }
                        await interaction.client.scoreboard.editScore(user, points);
                        return `${user} a reçu ${points} FatPoint(s)`;
                    },
                    'remove': async () => {
                        if (points <= 0) {
                            return interaction.reply('Le nombre de points doit être supérieur à 0');
                        }
                        await interaction.client.scoreboard.editScore(user, -points);
                        return `${user} a perdu ${points} FatPoint(s)`;
                    },
                    'set': async () => {
                        if (points <= 0) {
                            return interaction.reply('Le nombre de points doit être supérieur à 0');
                        }
                        await interaction.client.scoreboard.setScore(user, points);
                        return `Le nombre de points de ${user} a été défini à ${points} FatPoint(s)`;
                    },
                    'reset': async () => {
                        await interaction.client.scoreboard.resetScore(user);
                        return `Les points de ${user} ont été reset`;
                    },
                };

                return interaction.reply(await actions[type]());
#

Bon ce qui me dérange ici, c'est que je répète le :

                        if (points <= 0) {
                            return interaction.reply('Le nombre de points doit être supérieur à 0');
                        }```
Donc si vous avez des retours, je suis preneur !
slim anvil
#

add, remove et set sont quasi les memes finalement

#

tu ne pourrais pas les regrouper ?

#
update: async (type: string = 'edit') {
   if (points <= 0) return interaction.reply('Le nombre de points doit être supérieur à 0')
   // code here
}
#

et du coup venir conditionner

#
await interaction.client.scoreboard[type === 'edit' ? 'editScore' : 'setScore'](user, points);
#

par ezemple

ashen rapids
#

Oui du coup au lieu de :

return interaction.reply(await actions[type]());```
J'aurais:
```js
                return ['view', 'reset'].includes(action) ?
                    interaction.reply(await actions[type])()
                    :
                    interaction.reply(await actions['edit'])(type);
slim anvil
#

tu peux meme l'envoyer tous le temps c'est pas bien grave

#

au pire il en fera rien

ashen rapids
#

Les paramètres tu veux dire ?

slim anvil
#

oui

#

pour éviter la ternaire

ashen rapids
#

C'est vrai mais je trouve ça bizarre d'envoyer des paramètres à une fonction qui n'en prend pas

#

Ya pas de soucis niveau opti ?

#

De cette sorte, j'ai pas de répétition de code mais ça me fais toujours 3 if dans la fonction 'update', pas bien grave

#

En fait j'ai une sous commande, 'manage', qui regroupe du coup add, remove, set, reset et view

slim anvil
#

Après ce que tu peux faire c'est avoir un objet de tes strings que tu return aussi

ashen rapids
#

Je suis obligé de conditionner mon ternaire

slim anvil
#

comme ca tu l'appelles elle pour savoir le texte que tu dois return

#

et tu peux le faire pour chaque aussi

#

Moi à ta place enfaite j'aurai simplement eu un service qui updateOrCreate

ashen rapids
#

C'est-à-dire ?

slim anvil
#

{
'add': '%user% blablabalabla %points%'
}

#

et venir remplacer les %__% par le bon params

ashen rapids
#

J'ai mon service update() qui permet d'ajouter des points et le service set() permet de fixer le nombre de points, pas de créer

slim anvil
#

le update ajoute à la valeure existante et le set remplace ?

ashen rapids
#

Exact

slim anvil
#

Ah yes okay

ashen rapids
#

Donc vu que je récupère l'action dans la commande directement, avec : const type = interaction.options.getString('action');
Bah je suis obligé d'avoir mon ternaire pour dire que add / remove et set, c'est l'action update

slim anvil
#

Ah oui okay

#

attend je réfléchis

#

Bah enfaite dans ce cas là t'emmerde pas

#

avant le call de ton action

#
if (['set', 'add', 'remove'].includes(type)) return interaction.reply('Le nombre de points doit être supérieur à 0');
#

comme ça il appelle meme pas le reste

#

car de toute façon ça servira à rien

ashen rapids
#

J'ai pas compris ta condition là ?

slim anvil
#

euh pardon

#

oui si c'est bon

ashen rapids
#

Tu veux plutôt dire : && point <= 0

slim anvil
#

et oui

#

pardon

#

il manque le coeur du truc

ashen rapids
#

Putain oui pourquoi je me fais chier comme ça

slim anvil
#

comme ça pas de params pour rien, pas d'appel pour rien

#

tout est bon

ashen rapids
#

Ce qui donne :

                const actions = {
                    'view': async () => {
                        const score = await interaction.client.scoreboard.getScore(user);

                        return `${user} a ${score} FatPoint(s)`;
                    },
                    'add': async () => {
                        await interaction.client.scoreboard.editScore(user, points);
                        return `${user} a reçu ${points} FatPoint(s)`;
                    },
                    'remove': async () => {
                        await interaction.client.scoreboard.editScore(user, -points);
                        return `${user} a perdu ${points} FatPoint(s)`;
                    },
                    'set': async () => {
                        await interaction.client.scoreboard.setScore(user, points);
                        return `Le nombre de points de ${user} a été défini à ${points} FatPoint(s)`;
                    },
                    'reset': async () => {
                        await interaction.client.scoreboard.resetScore(user);
                        return `Les points de ${user} ont été reset`;
                    },
                };

                if (['set', 'add', 'remove'].includes(type) && points <= 0) {
                    return interaction.reply('Le nombre de points doit être supérieur à 0');
                } else {
                    return interaction.reply(await actions[type]());
                }
#

C'est déjà moins long 😂

slim anvil
#

pas nécessaire le else

ashen rapids
#

Oue je peux le mettre en dehors aussi, c'est vrai

#

Merci pour tes retours intéressants !

mystic bison
#

bonsoir

#

j'ai un petit problème

#
const {
    Client,
    Message,
    MessageEmbed
} = require('discord.js');
const maildb = require('../../models/maildb');

module.exports = {
    name: 'mail',
    description : 'Enregistre votre adresse mail',
    /** 
     * @param {Client} client 
     * @param {Message} message 
     * @param {String[]} args 
     */
    run: async (client, message, args) => {

        const email = args.join(' ');
        const member = interaction.options.getMember(message.author.id);
        if (!email) return message.channel.send(`\`Merci de refaire la commande en indiquant votre adresse mail.\``)
        
        message.channel.bulkDelete(parseInt(1), true);
        maildb.findOne({
            guild: message.guild.id,
            user: message.author.id
        }, async (err, data) => {
            if (err) throw err;
            if (!data) {
                data = new maildb({
                    content: [{
                        mail: email
                    }]
                })
            } else {
                const object = {
                    mail: email
                }
                data.content.push(object)
            }
            data.save()
        })
        message.reply(`\`E-mail enregistré avec succès : ${email}\``).then(m => {
            setTimeout(() => {
                m.delete()
            }, 7000)
            const role = interaction.options.getRole('mail');
            const member = interaction.options.getMember(user);
            member.roles.add(role);
        })
    }

}```
#

et j'ai cette erreur là

#

C:\Users\melvi\Desktop\FollowDorian Elon\commands\utility\mail.js:19
const member = interaction.options.getMember(message.author.id);
^

ReferenceError: interaction is not defined
at Object.run (C:\Users\melvi\Desktop\FollowDorian Elon\commands\utility\mail.js:19:24)
at Client.<anonymous> (C:\Users\melvi\Desktop\FollowDorian Elon\events\MessageCreate.js:21:23)
at Client.emit (node:events:394:28)
at MessageCreateAction.handle (C:\Users\melvi\Desktop\FollowDorian Elon\node_modules\discord.js\src\client\actions\MessageCreate.js:23:14)
at Object.module.exports [as MESSAGE_CREATE] (C:\Users\melvi\Desktop\FollowDorian Elon\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
at WebSocketManager.handlePacket (C:\Users\melvi\Desktop\FollowDorian Elon\node_modules\discord.js\src\client\websocket\WebSocketManager.js:345:31)
at WebSocketShard.onPacket (C:\Users\melvi\Desktop\FollowDorian Elon\node_modules\discord.js\src\client\websocket\WebSocketShard.js:443:22)
at WebSocketShard.onMessage (C:\Users\melvi\Desktop\FollowDorian Elon\node_modules\discord.js\src\client\websocket\WebSocketShard.js:300:10)
at WebSocket.onMessage (C:\Users\melvi\Desktop\FollowDorian Elon\node_modules\ws\lib\event-target.js:132:16)
at WebSocket.emit (node:events:394:28)
at Receiver.receiverOnMessage (C:\Users\melvi\Desktop\FollowDorian Elon\node_modules\ws\lib\websocket.js:970:20)
at Receiver.emit (node:events:394:28)
at Receiver.dataMessage (C:\Users\melvi\Desktop\FollowDorian Elon\node_modules\ws\lib\receiver.js:517:14)
at Receiver.getData (C:\Users\melvi\Desktop\FollowDorian Elon\node_modules\ws\lib\receiver.js:435:17)
at Receiver.startLoop (C:\Users\melvi\Desktop\FollowDorian Elon\node_modules\ws\lib\receiver.js:143:22)
at Receiver._write (C:\Users\melvi\Desktop\FollowDorian Elon\node_modules\ws\lib\receiver.js:78:10)
PS C:\Users\melvi\Desktop\FollowDorian Elon>

ashen rapids
#

Tu as un mélange entre DiscordJS V12 et DiscordJS V13

mystic bison
#

en v13 je devrais l'écrire comment, car la j'ai recopier la doc discord

ashen rapids
ashen rapids
#

Même chose c'est-à-dire ?

mystic bison
#

même erreur

hazy mirage
#

tu définis toujours pas de variable interaction dans ton code 👁️

#

d'ou est-ce que tu sort const member = interaction.options.getMember(message.author.id); ?

mystic bison
oak turret
#

member = ?

#

c'est message.member.roles.add("id");

hazy mirage
#

la ligne 42 sur le screen est pas la même que tu as d'actuellement exécutée, mais sinon c'est message.member.roles.add

mystic bison
#

thanks but now I have this error

dire latch
#

Il ne trouve pas le message @mystic bison

mystic bison
dire latch
#

Dr @mystic bison

lyric oasis
#

qui peux m'aider pour un de bot discord musique

paper edge
#

C'est probablement trouvable sur internet c'est vu et revu les bot musique

lyric oasis
#

oe mais avec le tuto que j'ai trouver je suis bloquer a une etape

pale void
#

En expliquant ton bloquage, on pourra peut-être mieux t’aider 🙂

lyric oasis
pale void
#

Non

lyric oasis
#

ok

pale void
#

Il y a quoi de compliqué à envoyer son erreur ici ?

lyric oasis
#

voila se sa me dit

#

quand je veux exécuter

pale void
#

@lyric oasis, as-tu bien installé le module discord.js ?

lyric oasis
#

oui

pale void
#

Je peux voir ton package.json ?

lyric oasis
pale void
#

Tout s’explique !

paper edge
#

Évite de montrer ton token à tout le monde

lyric oasis
pale void
#

. . .

#

As-tu lu le lien que je t’ai envoyé ?

lyric oasis
#

oe

pale void
#

Et donc ? Qu’est-ce que tu n’as pas compris ?

lyric oasis
#

mon erreur

pale void
#

Dans ce cas, qu’est-ce que tu as compris ?

lyric oasis
#

rien

pale void
#

Ouah…

#

Alors là…

#

Donc tu n’as rien lu…

lyric oasis
#

si

pale void
#

Dans ce cas, tu as mal lu

#

La réponse t’es donnée noir sur blanc

#

DiscordJS Commando est abandonné et ne sera donc pas compatible avec la v13.
Ils vous demandent donc de migrer vers le framework Saphire.

lyric oasis
#

a ok comment je fais

pale void
#

Bah tu migres vers Saphire

lyric oasis
#

donc je dois tout recommencer

pale void
#

En gros, oui

lyric oasis
#

ok

#

tu aurrais un tuto qui marche

pale void
#

Moi non, Google, oui

lyric oasis
#

ok

lyric oasis
pale void
#

Dans ce cas, il faut apprendre à chercher 🙂

wheat escarp
#

j'ai cette erreur : Aucun débogueur disponible. Impossible d'envoyer 'variables' sur un bot de musique comment je peux régler ça ?

pale void
#

Euh, avec plus d’infos ce serait mieux 🙂

wheat escarp
#

tu veux mon code + package ?

hazy mirage
#

Au lieu d’utiliser le debuggueur utilise le terminal à gauche et fait node . dedans

pale void
#

Exactement

wheat escarp
#

ah bon

#

je vais essayer

#

j'écris juste node . ?

pale void
#

Oui…

#

Est-ce que vous savez qu’avant d’apprendre à utiliser une libraire, il faut apprendre le langage auquel il se rapporte et son environnement ?

hazy mirage
#

Ou sinon regarder mon super tuto de bot pour cette étape kappa

pale void
#

😂

wheat escarp
#

j'ai essayé mais ça m'affiche qu'il trouve pas le module commando

pale void
#

Quel as de la pub !

pale void
wheat escarp
#

je l'ai fais ...

hazy mirage
#

et bien fait npm i -s discord.js@commando

pale void
#

npm i

hazy mirage
#

Ah merde déjà dans le package.json alors fais ce qu’à dis lprogead

pale void
#

😄

lyric oasis
#

une personne de dispo pour m'aider pour le code d'en bot discord Svp

lyric oasis
lyric oasis
# keen narwhal envoie ton code

mon code est bon mais je suis bloquer car apres je ne connait pas les commande qui faut mettre pour un bot discord musique

keen narwhal
lyric oasis
junior lark
lyric oasis
pale void
#

@lyric oasis déjà, inspire-toi des bots déjà existants pour avoir une base

#

Ensuite, si tu en as les capacités, innove en ajoutant des commandes originales

junior lark
keen narwhal
#

Je pense surtout qu’il veut de l’aide pour le code

#

Pas les commandes

ashen rapids
#

@slim anvil Du coup j'suis allé voir un peu ce quep proposait date-fns par curiosité.
A ce que je vois dans la doc, ils fournissent rien pour gérer la timezone, si ?

slim anvil
#

Yup

pale void
ashen rapids
#

Il y a eu beaucuoup de débat sur DiscordJS V13 ici mais maintenant que j'ai pu tester, je peux le donner 😂

J'avoue que la gestion des permissions sur les slash commande n'est vraiment pas ouf, c'est pas pratique et je partage cet avis
Par contre pour les bouttons (les intéractions), je n'ai eu aucun soucis d'utilisation et je ne comprends pas le besoin d'utiliser une librairie externe discordjs-button comme beaucoup font

#

Voilà !

sharp grail
ashen rapids
#

Oui ça ok

oak turret
#

et t’as la même chose pour les slash command en v12

#

donc perso je reste en v12 avec mon commando 😜

keen narwhal
#

t'as pas des problèmes à rester en V12 ?

ashen rapids
#

C'est un risque sur le long terme après
A voir en fonction du besoin

oak turret
#

Aucun problème justement lol

ashen rapids
#

C'est quoi la librairie que tu utilises en V12 pour les slash command ?

oak turret
#

sur le coup j’ai pas le nom je suis pas sur pc

#

mais look sur npm y en a quelques unes

sharp grail
#

ça finira par être obsolète

slim anvil
#

bah enfaite oui et non

#

c'est juste que du coup il va devoir maintenir plusieurs sytème différents
Mais après en soit c'est pas Discord API qui update réellement, c'est surtout Discord.JS qui est simplement un wrapper a DiscordAPI

#

Mais du coup les appels sont toujours les mêmes je suppose, sinon la v12 serait deja broke

oak turret
#

pour l’instant je reste en v12 après ce n’est que mon avis perso ^^

timid loom
#

en gros c'est juste la version de la gateway utilisée qui est pas la même @slim anvil
le truc c'est que les versions de gateway, Discord fait pas mal de roulement dessus

#

et dans tous les cas ils update parfois certains trucs aussi

#

donc au final rester sur la v12 @oak turret c'est pas bête hein mais c'est comme rester sur un bateau qui coule
ça fonctionne pendant un temps mais j'espère que t'as bien la suite en tête parce que sinon tu vas te noyer

pale void
oak turret
ashen rapids
#

Ha si tu parles du Permission Manager

Oui ok mais c'est toujours une galère entre la création de la commande et le set des permissions

pale void
#

Mouais

ashen rapids
#

Le mieux serait de pouvoir set une permission en même temps que la création de la commande

pale void
ashen rapids
#

Yep

floral bolt
#

Salut j'ai un ti soucis j'essaye de faire un truc comme ca :

#
console.log(results)
            let xp = await results.xp + xpToAdd
            let level = await results.level
            let invite = await results.invite

            const needed = getNeededXP(level)

            if (xp >= needed) {
                level++
                xp -= needed
            }
            let insertExp = ` UPDATE member SET guild_id="${guildId}", user_id="${userId}", xp='${xp}', level='${level}' WHERE guild_id = '${guildId}' AND user_id = '${userId}'; `;
            console.log(insertExp)
#

mais je recois ca en console : [ RowDataPacket { id: 2, guild_id: '770348620993658920', user_id: '216029549769654273', name: 'Snox', xp: 38, level: 0, invite: 0 } ] UPDATE member SET guild_id="770348620993658920", user_id="216029549769654273", xp='NaN', level='undefined' WHERE guild_id = '770348620993658920' AND user_id = '216029549769654273';

#

l'erreur est au niveau du update

slim anvil
#

j'en vois un autre de soucis

spring dock
#

« await results.xp » « await results.level »……..
et du coup pour ton problème ça devrait être results[0].xp

#

par exemple

floral bolt
#

ah bah oui

floral bolt
#

let { xp, level, invite } = results[0] voila ! :p

#

je cherche a savoir quel lien a utiliser la personne pour rentrer dans le serveur vous pouvez me dire ce que c'est ?

#

jparle plus francais hein jsuis fatiguer

queen ocean
floral bolt
#

ouais mais justement j'aimerais bien savoir quand un mec rejoin la quel il a utiliser

#

si c'est celle de michel ou celle de jean jean

queen ocean
#

Bah je viens de te dire comment faire

kind agate
queen ocean
floral bolt
#

oui mais a quel moment je recup l'invitation

kind agate
#

au lancement de ton bot, tu récup toutes les invitations

#

quand un utilisateur join, tu regarde quelle invitation a +1

queen ocean
#

Voila sue

kind agate
#

je crois qu'ils vont bientot ajouter cette info à l'event member joined de tte façon

#

il y avait de la discussion sur le git de l'api

dire latch
#

Comme ça en gros

queen ocean
dire latch
#

😅

#

Dans un guildMemberAdd

#

Trop d'information tue l'information

#

Tu es en v12 ? @floral bolt

floral bolt
#

oui

dire latch
#

Ok

queen ocean
#

@floral bolt au pire paye moi pour faire ton bot KaPOP

floral bolt
queen ocean
kind agate
#

tu lui fais un hello world

#

pour 1E

wise flax
#

salut j'essaye de crée un code que je peu éxécuté dans la console

document.getElementsByClassName("swal2-input")[0]
var speed = prompt("Speed of checker/gen (Recommended 1000 for fast pcs, 500 for slow)")


function generateCode() {
 var code = "";
 var chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
 for (var i = 0; i < 4; i++)
   code += chars.charAt(Math.floor(Math.random() * chars.length));
 return code;
}
function main() {
  document.getElementById("swal2-input").value = generateCode()+ "-"+ generateCode()+ "-"+ generateCode()+"-"+ generateCode();
  document.getElementsByClassName("swal2-confirm swal2-styled").click();
}


setInterval(function() {
   main();
}, speed);```
j'ai un probleme danss cette ligne
 ```document.getElementsByClassName("swal2-confirm swal2-styled").click();```
je n'arrive pas a trouvé la class name alors que regardé dans le code c'est écris quoi
```<button type="button" class="swal2-confirm swal2-styled" aria-label="" style="display: inline-block;">Redeem</button>```
ashen rapids
#

Ici : class="swal2-confirm swal2-styled"
Ton button comporte la class swal2-confirm ET swal2-styled

#

La fonction getElementsByClassName doit prendre en paramètre une class

#

swal2-confirm swal2-styled n'est pas une class

wise flax
#

ah daccord merci

south steppe
#

et tu auras un tableau attention
pas simplement un element

lyric oasis
#

qui peux m'aider je ne comprend pas mon erreur

queen ocean
lyric oasis
#

ok voila le code mon erreur est a partit de for

#

const fs = require('fs');
const { Client, Collection, Intents, Interaction} = require('discord.js');
const{ token } = require('./config.json');

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

client.commands = new Collection();
const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));

for (const file of commandFiles) {
const command = require(./commands/${file});
client.command.set(command.date.name, command);
}

client.once('ready',() =>{
console.log('Je suis prêt!');
});

client.on('interactionCreate',async interaction =>{

});
client.login(token);

lyric oasis
queen ocean
ashen rapids
#

C'est quoi l'erreur ?

#

Hésite pas à utiliser les ` pour ton code

queen ocean
#

!code

#

Marche plus ca ?

#

Nul

lyric oasis
#

sur mon serv

ashen rapids
#

J'ai pas compris

lyric oasis
#

si je met sa
for (const file of commandFiles) {
const command = require(./commands/${file});
client.command.set(command.date.name, command);
}
mon bot ne marche plus et jsp pk

ashen rapids
#

Si tu peux donner l'erreur que t'as

lyric oasis
#

voila

lyric oasis
ashen rapids
#

Le soucis est dans l'erreur

#

C'est que ta commande n'a pas de propriété name

lyric oasis
#

ok et je dois faire quoi ?

sharp grail
#

Tu comprends ce que fait ton code ou non ?

ashen rapids
#

Je pense pas

#

Ici c'est plutôt réservé pour de l'aide en developpement
Si tu veux qu'on le fasse à ta place, tu peux créer une annonce sur le site de GCA !

lyric oasis
#

non tkt et oui je comprend

sharp grail
#

Donc si tu comprends tu devrais savoir comment régler cette erreur 🤔

lyric oasis
#

mais j'ai du mal pour corriger mes erreur

sharp grail
#

Bah c'est le principe du truc, en gros pour chaque fichier de ton dossier commands, il va set dans ta collection commands son nom en key et en valeur la cmd

#

donc command.date (je crois que c'est ça) n'existe pas, car manifestement tu ne l'as pas exporté dans un de tes fichiers

ashen rapids
#

name*

sharp grail
#

ou data je suppose car je vois que tu as un event interactionCreate

lyric oasis
#

ok mrc

keen narwhal
#

Yo les gars je debute en developpement et j espere que vous pourriez m aider

#

ca me met ca sur le terminale
et ca sur la console

#

et des fois ca me met ca

#

merci de bien m aide

hazy mirage
#

Il faut nous envoyer le code stp

sharp grail
#

Nan mais pour la première erreur c'est juste qu'il est en v13 et qu'il n'a mis aucun intents ou pas de valiss intents pour le client

robust fern
#

Vérifie bien ta version de discord.js puis ton code ou adapte le a la nouvelle version de discord.js@13.

dire latch
#

@keen narwhalCode si jamais 🤔

frosty idol
#

Bonsoir,
J'ai ceci comme erreur dans ma console en lançant un bot :

node:internal/modules/cjs/loader:1183
  return process.dlopen(module, path.toNamespacedPath(filename));
                 ^

Error: The module '/home/container/node_modules/canvas/build/Release/canvas.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 83. This version of Node.js requires
NODE_MODULE_VERSION 93. Please try re-compiling or re-installing
the module (for instance, using `npm rebuild` or `npm install`).
    at Object.Module._extensions..node (node:internal/modules/cjs/loader:1183:18)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12)
    at Module.require (node:internal/modules/cjs/loader:1005:19)
    at require (node:internal/modules/cjs/helpers:94:18)
    at Object.<anonymous> (/home/container/node_modules/canvas/lib/bindings.js:3:18)
    at Module._compile (node:internal/modules/cjs/loader:1101:14)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
    at Module.load (node:internal/modules/cjs/loader:981:32)
    at Function.Module._load (node:internal/modules/cjs/loader:822:12) {
  code: 'ERR_DLOPEN_FAILED'
}

Je suis sur un VPS perso donc possible que je n'ai pas tout installé 🤔 J'ai cherché mais je ne comprend pas bien au niveau des versions^^

ashen rapids
#

Fais un node -v pour voir ta version ?

frosty idol
#

v14.17.6

dire latch
#

Code 🤔

frosty idol
#

Je pense pas que il y aie un rapport avec le code ? 🤔

#

C'est une histoire d'erreur de version

ashen rapids
#

T'as une issue dessus sur Git

frosty idol
#

Ok je vais check ça merci

dire latch
frosty idol
#

C'est good, j'ai juste du changer la version dans le panel pterodcatyl

dire latch
#

Ok

#

@frosty idolNickel alors

pulsar fiber
#

salut quelqun sais faire en sorte qu'un bot renvoie une video local ?

ashen rapids
pulsar fiber
pulsar fiber
#

car j'essaye de faire un bot pour envoier des video lourde car j'ai pas nitro

ashen rapids
#

Euh ça je sais pas

#

Mais oue, un bot n'a pas les avantages nitro

pulsar fiber
#

nous on est limité a 8 sans nitro

#

je pense que le bot est limité a +

#
const path = require('path')
const { MessageAttachment,MessageEmbed } = require('discord.js')
const Commando = require('discord.js-commando')

module.exports = class VideoCommand extends Commando.Command {
  constructor(client) {
    super(client, {
      name: 'test',
      group: 'misc',
      memberName: 'test',
      description: 'Sends an image',
    })
  }

  run = (message) => {
    const embed = new MessageEmbed()
  .setTitle('test')
  .setDescription('test')
  .files(test.mp4)

  message.say(embed)
  }
}
#

bon j'en suis a ca

#

mais je me retrouve avec une erreur mdr

#

ReferenceError: test is not defined

ashen rapids
#

Tu peux pas mettre un file dans un embed ? 🤨

pulsar fiber
#

je sais pas mdr je par en live

ashen rapids
#

Et faut que tu mettes le chemin vers me fichier

#

C'est une option que tu dois utiliser directement dans ton send

pulsar fiber
#

message.send.files(test.mp4) ?

ashen rapids
#

Regarde la doc comment c'est fait

#

Ce que prends en option send()

pulsar fiber
#

je comprend quedal mdr

#
const path = require('path')
const { MessageAttachment,MessageEmbed } = require('discord.js')
const Commando = require('discord.js-commando')
const { testmp4 } = require('./test.mp4')

module.exports = class VideoCommand extends Commando.Command {
  constructor(client) {
    super(client, {
      name: 'test',
      group: 'misc',
      memberName: 'test',
      description: 'Sends an image',
    })
  }
  async run(message) {


if (message) {
    return message.send(testmp4)
}

  }
}
#

j'en suis rendu a ca

#

mais avec ca

#

😅

#

les gens qui vont lire ca vont avoir des pensée suicidaire je le sais

ashen rapids
sharp grail
pulsar fiber
#

alors je suis en "discord.js": "^12.4.1",

ashen rapids
#

Ha oui commando effectivement pas vu

pulsar fiber
#

ouaip

#

sinon c'est pas compatible dapres ce que jai compris

ashen rapids
#

Pas une bonne idée si tu créés un projet dessus, c'est mort commando

pulsar fiber
#

apres je comprend pas grand chose

ashen rapids
#

Ca fonctionne quand même le lien que je t'ai envoyé

#

Prends juste en compte la ligne rouge

#

Et pas la ligne verte

pulsar fiber
#

c'est un petit bot perso pour envoyer des video +lourdes rien de bien grand

#

je vais voir ca merci

ashen rapids
#

Ligne rouge : V12
Ligne verte : V13

pulsar fiber
#

okay thanks

#
const path = require('path')
const { MessageEmbed } = require('discord.js')
const { discord } = require('discord.js')
const Commando = require('discord.js-commando')
const embed = new discord.MessageEmbed().setTitle('Attachments').attachFiles(['./test.mp4']);

module.exports = class VideoCommand extends Commando.Command {
  constructor(client) {
    super(client, {
      name: 'test',
      group: 'misc',
      memberName: 'test',
      description: 'Sends an image',
    })
  }

run =  message.send(embed);
}
#

je sais pas ce que je fais mdrrr

ashen rapids
pulsar fiber
#

les bases ? 😆

#

ca sonnée bien dans ma tete franchement

sharp grail
#

ouh dur ce que tu as fait honnêtement

pulsar fiber
#

😅

#

jsais meme pas ce que je fais mdr

sharp grail
#

tu importes discord dans la librairie après avoir en plus importé messageembed

pulsar fiber
#

jsuis trop fort mdr

#

bas ouais mais si je mest les deux ensemble jai une autre erreur mdr

sharp grail
#

donc discord n'est pas défini de un

pulsar fiber
#

il est pas fun

sharp grail
#

ensuite use MessageEmbed() direct car tu l'as import de discord.js

sharp grail
pulsar fiber
#

ah

#

je l'importe d'ou ducoup ?

sharp grail
#

;_;

pulsar fiber
#

mdr

sharp grail
#

je vais te faire un ex

pulsar fiber
#

python au lycée c'est vachement plus simple mdr

#

tout ca pour pas payer nitro

sharp grail
#
// ton fichier fichier.js

function def() {
  // ta function
}
module.exports = {
  def,
}


// ton fichier index 

const { def } = require('./fichier.js')
const defObj = require('./fichier.js')

// def() = defObj.def()
console.log(defObj)
  // { def: [function:def] } (je crois que c'est affiché comme ça)
console.log(def)
  // [function:def]
pulsar fiber
#

donc si jai bien compris def du module exporte vien de ma fonction def() ?

sharp grail
#

oui, principe de module.exports

#

mais en fait ça donne ça car je l'exporte à travers un objet

#

si j'avais fait
module.exports = def
def aurait été undefined dans mon fichier index

#

je sais pas si tu as compris

#

calypso t'expliquera sans doute mieux que moi mdr

pulsar fiber
#

je vois sans voir mdr

#

je comprend le principe deja merci beaucoup

sharp grail
#

c'est déjà ça 👀

#

pas de soucis

potent heron
pulsar fiber
dire latch
#

@pulsar fiberducoups ta réussi ?

pulsar fiber
#

Mais la j'ai pas accès au pc car comment dire

#

Il est en petite pièce mdr

dire latch
#

Ok mdr

ashen rapids
#

Vous connaissez une lib qui permet de garder l'état d'un setTimeout après un restart d'une application ?

#

J'sais pas si vous comprenez ce que je veux dire

sharp grail
#

wow pas du tout

#

Perso je stocke ça également dans une db

ashen rapids
#

Oue j'y ai pensé mais si si je peux m'en passer ça m'arrange

sinful bone
#

si je peux me permettre tu en as besoin pourquoi ?

ashen rapids
#

Quand je dis db, c'est que j'aimerais éviter de stocker ça dans mon MongoDB
Si le module gère ça lui même dans un fichier local, ça m'éviterais de coder un truc

ashen rapids
sinful bone
ashen rapids
#

Non mais je sais 😂
La question c'est est-ce qu'il existe une lib qui existe déjà pour ce genre de besoin

Qui serait en gros un rewrite d'un setTimeout et qui gérerait lui même le stockage dans un fichier local

sinful bone
#

à ma connaisance non, ça m'étonnerait mais avec quick.db c'est plutot facile x)

ashen rapids
#

Si rien existe, je ferai sûrement ça yep

sinful bone
#

car automatiser ce genre de chose, trop complexe, trop limiter

#

fais le toi même tu auras tout ce que tu veux 😄

ashen rapids
#

Trop limité ça dépend, si quelque chose existe déjà et où ça répond à 100% à mes besoins why not

#

Tellement de choses à coder que j'ai pas envie de tout refaire

sinful bone
#

bah moi j'en connais pas, peut être qlq sera t'aider ^^

ashen rapids
#

Ya cron après mais ça c'est pour les tâches récurrentes

sinful bone
#

oui plus

arctic mural
#

yo

#

du monde qui fait du react native ?

timid loom
#

go poser ta question directement

arctic mural
#

ha mais je dev pas dans en java

civic dragon
#

Bonsoir je cherche a effectuer une redirection mais je n'ai pas accé a mon routeur dans ma class et je ne sais pas comme y avaoir accée si quelqu'un peut m'aider merci

export default class Search extends React.Component {

  constructor(props){
    super(props)
    this.state = {
      city : "Limoges",
    }
  }

  setCity = (city) => {
    this.setState({city})
  }
  goTo = () => {

      this.props.navigation.navigate('List',{
        city : this.state.city
    })
      
  }
  render(){  
    return (
      <View >
        <TextInput  style = {style.form} onChangeText={(city) => this.setCity({city})}/>
        <Button
            onPress={this.goTo}
            title="rechercher"
            color="#841584"
          />
      </View>
    );
  }
}
oak turret
#

Hello @slim anvil, dis moi t'aurais des références de dataTables cool à uses ?

timid loom
arctic mural
#

si tu prefere je posais la question pour qu'elqu'un

civic dragon
#

pour moi ahaha

#

vu que j'etais pas sur le serv

timid loom
#

ah ok

#

@civic dragon tu utilise React-Router?

civic dragon
#

oui

#

@timid loom

timid loom
#

yes deux sec je vérifie juste la doc pour pas te dire de bétises

slim anvil
#

C’est pas this.$router.push

#

Ou je confond avec nuxt moi

timid loom
#

tu confonds nuxt je crois

slim anvil
#

ouais

timid loom
#

de mémoire ça passe par des imports

civic dragon
#

nn c'est bon

slim anvil
#

Mais normalement tu l’as dans ton props

civic dragon
#

c'est bien ca la redirection

timid loom
#

ah bah ptn

civic dragon
#

oui props

timid loom
#

j'aurais pas cru

slim anvil
#

sinon tu peux import Redirect de react router aussi

timid loom
#

Je dois confondre avec les liens de redirect

#

yes c'est ça que j'avais en tête

slim anvil
#

Y a les 2

timid loom
#

dans ce cas ¯_(ツ)_/¯

slim anvil
#

@oak turret euh la non pas de tête look github t’en auras des sympas

#

là je suis sur tel sorry

civic dragon
#

j'ai deja essayé d'importer ca

import { Redirect } from 'react-router'

et

import { Redirect } from "react-router-dom"
#

mais j'ai toujours un null qui est return

pulsar fiber
# dire latch <@!303886594031484941>ducoups ta réussi ?

Pas de nouvelles bonne nouvelle on dis ça nan ? Bon bas ducoup ça a marché mais que si je l'héberge sur mon pc . Mais comme je dois m'en servir depuis mon téléphone j'ai pris un hébergeur et je me suis rendu compte que je suis un GROS TROU DU CUL j'ai voulu utiliser discord js commando pour me simplifier la vie vue que je n'y connais que dalle et arrivée la mon hébergeur est en v13 donc mon bot ne marche pas

#

Ducoup retour case départ car je

#

Suis complètement con

pulsar fiber
#

Heu jsp mdr

pulsar fiber
dire latch
#

Ah mdrr

#

Ba quand tu fais npm i discord.js

#

Tu met la version que tu veut

pulsar fiber
#

Rigole pas trop fort stp

dire latch
#

Ok 😦

pulsar fiber
#

Le bot est sur un ptérodactyl

dire latch
#

Oui

pulsar fiber
#

😂😂

dire latch
#

Tu peut quand même

pulsar fiber
#

Alors le problème

#

C'est qu'il est bloquer en starting

oak turret
#

"bloqué" = ?

pulsar fiber
#

les commande ne sexecute pas

oak turret
#

stoppe le et rallume le

pulsar fiber
#

deja fais

oak turret
#

sinon ça doit venir de ton code, je suis pas un pro de ptéro

pulsar fiber
#

nop c'est ptero de base

#

qui bloque comme ca

#

le nest est fais comme ca

oak turret
#

de mémoire mes process ptéro étaient en "online" donc bon :p

pulsar fiber
#

bas tout mes bot discord etais en "starting" mais marchais tres bien

oak turret
#

si tu le dis ^^ donc ton bot est en v12 ?

pulsar fiber
#

ouila

#

jai le discord js v12 dans mon node module

oak turret
#

et tu utilises commando?

pulsar fiber
#

ouaip

oak turret
#

fais voir une de tes commandes

pulsar fiber
#
const path = require('path')
const  messageEmbed  = require("discord.js");
const Commando = require('discord.js-commando')

module.exports = class VideoCommand extends Commando.Command {
  constructor(client) {
    super(client, {
      name: 'test',
      group: 'misc',
      memberName: 'test',
      description: 'Sends an image',
    })
    }


  async run(message){
  message.say({
    files: [{
      attachment: 'test.mp4',
      name: 'test.mp4'
    }]
  })
}


}
#

mais jai ca qui ressort

#

/home/container/node_modules/discord.js/src/rest/RequestHandler.js:154
throw new DiscordAPIError(request.path, data, request.method, res.status);
^

DiscordAPIError: Request entity too large
at RequestHandler.execute (/home/container/node_modules/discord.js/src/rest/RequestHandler.js:154:13)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async RequestHandler.push (/home/container/node_modules/discord.js/src/rest/RequestHandler.js:39:14) {
method: 'post',
path: '/channels/891337960455295046/messages',
code: 40005,
httpStatus: 413
}

oak turret
#

ouais ok sûrement le mp4 qui est trop gros

pulsar fiber
#

11mb

oak turret
#

check mais c'est peut-être ça

pulsar fiber
#

je vais test

#

mais jai le seum si c'est ca

#

sachant que cetais pour contourner ca

#

SON ONCLE LE DINO c'est a cause de ca

#

donc le bot est limité a 8mo

#

quelle bougre des montagne

oak turret
#

xd

pulsar fiber
#

si quelqu'un a une idée pour remedier a ca

sharp grail
#

tu coupes ton fichier ?

#

(ça serait pas pratique donc pas ouf)

pulsar fiber