#javascript-typescript

1 messages · Page 95 of 1

ashen rapids
#

Explique ton problème, quelqu'un pourra peut-être t'aider !

patent storm
#

En gros, j'ai un tableau contenant tout les éléments, m'ont objectif est de filtrer ce tableau grâce a des checkbox, par exemple le résultat que je dois avoir

copper pagoda
keen narwhal
#

nan c bon j'ai trouve une alternative

keen narwhal
#

mongodb
quand un user rejoint ou envoie un message il est mis à la db mais quand qqn envoie un message ou rejoint n'est pas mis sur la db et j'ai cette erreur là :
````An Error has occured : ValidationError: User validation failed: balance: Cast to Number failed for value "{ type: [Function: Number], default: 0 }" (type Object) at path "balance", work: Cast to date failed for value "{ type: [Function: Date], default: 0 }" (type Object) at path "work", crime: Cast to date failed for value "{ type: [Function: Date], default: 0 }" (type Object) at path "crime", experience: Cast to Number failed for value "{ type: [Function: Number], default: 0 }" (type Object) at path "experience", level: Cast to Number failed for value "{ type: [Function: Number], default: 0 }" (type Object) at path "level"```

mon schema user.js
``` const mongoose = require('mongoose')

const userSchema = mongoose.Schema({
    _id: mongoose.Schema.Types.ObjectId,
    guildID: String,
    guildName: String,
    userID: String,
    userName: String,
    experience: {
        "type": Number,
        "default": 0
    },
    level: {
        "type": Number,
        "default": 0
    },
    balance: {
        "type": Number,
        "default": 0
    },
    crime: {
        "type": Date,
        "default": 0
    },
    work: {
        "type": Date,
        "default": 0
    }
    
});
module.exports = mongoose.model('User', userSchema);```
glass cargo
#

Simple pourtant

#

Quand tu modifie ta db (je sais pas où)

#

Toutes tes valeurs ne sont pas des nombres

neat lintel
#

Puis regardes, tes valeurs par défaut ont un problème, tu donne la valeur 0 à un objet de type Date. Faudrait new Date() à la place

glass cargo
#

Bien vu ^^

keen narwhal
glass cargo
#

Ah

#

Trouvé

#

Enfin je pense

keen narwhal
#

je t'écoute 🙂

glass cargo
#

T’es sûr qu’il faille mettre type entre " ?

#

Perso, je ne le fais pas

keen narwhal
#

ah

#

du coup default non plus

glass cargo
#

Yep

#

Je pense que le problème est là parce que t’es dans du js, pas dans du json

neat lintel
#

Normalement en JS ca marche quand meme il me semble

glass cargo
#

Nop

#

Ça ne marche qu’en json

neat lintel
keen narwhal
#

j'ai changé j'ai tjrs l'erreur

neat lintel
#

envois le code de la création de l'user si c'est ca qui pose problème

glass cargo
#

Bizarre

glass cargo
# neat lintel

Yep j’ai aussi testé de mon côté. Autant pour moi ^^

keen narwhal
#

et dans mon messageCreate (et aussi guild memberadd) ``` if(!dbUser) await client.createUser({
guildID: message.member.guild.id,
guildName: message.member.guild.name,
userID: message.member.id,
userName: message.member.user.tag,
balance: {
"type": Number,
"default": 0
},
work: {
"type": Date,
"default": new Date()
},
crime: {
"type": Date,
"default": new Date()
},
experience: {
"type": Number,
"default": 0
},
level: {
"type": Number,
"default": 0
}

    })```
neat lintel
#

await new User(merged); ici le await sert a rien. Une classe ne peux pas renvoyer de promise vu que elle renvoie l'objet construit

glass cargo
#

Ah ben voilà

#

Pk tu met type et Number dans ton messageCreate ?

#

Tu devrais mettre la valeur xD

neat lintel
#

faut meme pas de sous-objets en faite

keen narwhal
neat lintel
#
work: {
    "type": Date,
    "default": new Date()
},

doit devenir

work: new Date()
keen narwhal
#

ok

neat lintel
#

C'est pas censé etre un model ici

glass cargo
#

#

À mon avis, ça vient de ça

neat lintel
#

après si il y a pas de données, autant enlever toute la partie

balance: 0,
work: new Date(),
crime: new Date(),
experience: 0,
level: 0

Ca prendra la valeur par défaut donc pas besoins de la remettre ici

glass cargo
#

Yep pas faux

keen narwhal
#

@glass cargo c bon j'ai plus l'erreur merci !

keen narwhal
#

et d'ailleurs j'avais aussi l'erreur An Error has occured : TypeError: Cannot read properties of undefined (reading 'experience') at Client.client.addExp (E:\Dafaba\CODAGE\hpbot\util\functions.js:50:39) at processTicksAndRejections (node:internal/process/task_queues:96:5) at async module.exports (E:\Dafaba\CODAGE\hpbot\events\message\messageCreate.js:30:13) mais elle s'est enleve tout simplement vu que yavait l'erreur de la db l'user etait pas cree donc experience n'existait pas donc quand on envoyait un message il pouvait pas prendre en compte experience 🙂

glass cargo
#

🙃

celest copper
#

Bonjour a tous,
je suis le tuto https://g-ca.fr/tutoriels/tutoriel/creer-un-bot-discord-le-code
J'ai le même code (à part le token), cependant quand je lance le code, j'ai cette erreur :

TypeError [CLIENT_MISSING_INTENTS]: Valid intents must be provided for the Client.
at Client._validateOptions (C:\Users\Mathieu\Documents\BotDiscord\ListUserTS\node_modules\discord.js\src\client\Client.js:544:13)
at new Client (C:\Users\Mathieu\Documents\BotDiscord\ListUserTS\node_modules\discord.js\src\client\Client.js:73:10)
at Object.<anonymous> (C:\Users\Mathieu\Documents\BotDiscord\ListUserTS\index.js:4:16)
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)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
at node:internal/main/run_main_module:17:47 {
[Symbol(code)]: 'CLIENT_MISSING_INTENTS'

GCA

Apprends dans ce tutoriel le code pour créer un bot Discord avec Discord.JS !

inner escarp
#

A mon avis tu n'as pas la version de djs du tutoriel (qui ne doit pas être à jour)

hazy mirage
# celest copper Bonjour a tous, je suis le tuto https://g-ca.fr/tutoriels/tutoriel/creer-un-bot-...

Hello, sous la nouvelle version de discord.js (à savoir la v13) ça change un peu effectivement.
Au lieu de ```js

const client = new Client({
partials: ['GUILD_MEMBER', 'CHANNEL', 'USER', 'REACTION']
})```
Essaye


const client = new Client({
    intents: ["GUILDS", "GUILD_MEMBERS", "GUILD_PRESENCES", "GUILD_MESSAGES", "GUILD_VOICE_STATES", "GUILD_MESSAGE_REACTIONS"],
    partials: ['GUILD_MEMBER', 'CHANNEL', 'USER', 'REACTION']
})```
celest copper
#

ah merci 🙂

#

un lien sur la doc ? j'ai pas réussi a trouver

hazy mirage
#

ClientOptions c’est l’objet que tu passe dans la création de ton Client, et donc tu peux voir sur la doc "partials" et "intents" notamment

celest copper
#

merci

keen narwhal
#

Hello, petit soucis avec les emojis avant la V13 on pouvait les utiliser entre les serveurs où le bot était mais désormais on ne peux plus, sauriez-vous comme régler ce problème sans avoir à rajouter les emojis sur le serveur discord où on veut ?

hazy mirage
#

Salut, comment ça ? Ton bot est sur les serveur A et B, et il ne peut pas utiliser les emojis du serveur A sur le serveur B et vice versa ?

#

Est-ce que dans le Channel en question ton bot a la permission d’utiliser les emojis externes?

neat lintel
#

je penses que il parle des slash-commands

#

Les slash-commands sont un peu comme des webhooks et du coup effectivement les émojis d'un autre serveur ne fonctionnent pas

hazy mirage
#

Tu veux dire que genre la reply du bot a une slashcommand ne peut pas comporter d’emoji externe ?

neat lintel
#

oui sauf si ca a changé mais il me semble pas

hazy mirage
#

Je ne sais pas, interessant

leaden juniper
#

yo j'aimerais de l'aide, je ne comprends pas pourquoi mon code ne fonctionne pas (je suis en discord.js v13)

#

pk mon message se supprime ?

kind agate
#

Probablement un lien dedans

#

Retire le lien

leaden juniper
#

ah c'est ça

#
const { Client, Intents } = require('discord.js');
const { token } = require('./config.json');
const client = new Client({ intents: [Intents.FLAGS.GUILDS] });
const prefix = "!";

client.once('ready', () => {
    console.log('Bot epérationnel !');
});

client.on("ready", () => {
  client.user.setStatus("dnd");
  client.user.setActivity("Rien", {type: "PLAYING"});
});

client.on("guildMemberAdd", member => {
  client.channels.cache.get("893416266889564181").send(`Bienvenue ${member} ceci est un test !`);
});

client.on("messageCreate", message => {
    if(message.author.bot) return;

    if(message.content === prefix + "help"){
        const embedHelp = new Discord.MessageEmbed()
            .setColor('#2F3136')
            .setTitle('Liste des commandes')
            .setURL('o')
            .setDescription('Aucune commande discponible pour le moment')
            .setTimestamp()

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

client.login(token);
neat lintel
#

tu as pas mis l'intent GUILD_MESSAGES

#

ton bot peut pas recevoir de messages en conséquence

leaden juniper
#

aaah mais oui je suis bête merci bcp

keen narwhal
neat lintel
#

J'ai testé de mon coté les emojis et sur certains serveurs ca marche et sur d'autres non. J'ai pas compris précisément le problème

keen narwhal
#

Je pense que ça doit être une histoire de permissions

sudden cipher
#

Salut , j'aimerais me lancer sur la nouvelle version de discord.js pour pouvoir me lancer sauf que je ne sais pas comment débuter. Je cherche donc un "tuto" d'aide qui explique comment elle fonctionne et comment la coder correctement. Merci d'avance !

west needle
#

Salut j'ai un petit prblm en Ts

const createOne = async ({ name, description, ownerId, price }): Promise<ItemInterface> => {

    const owner = await User.findOne({ _id: ownerId });
    if (!owner) return null;

    const item = new Item({ name, description, ownerId, price });
    
    await item.save((err, item) => {
        console.log(item);
        if (err) {
            return console.error(err);
        }
    });

    return item;
}
#

Je n'arrive pas a donner un Type pour les argument de ma fonction
Si je fait name:string ou ownerId:mongoose.Schema.Types.ObjectId
J'ai une erreur comme quoi name n'est pas déclaré
Me ping si vous pouvez m'aider svp

#

Me ping si jamais vous pouvez m'aider

hazy mirage
#

Salut

Je pense que ce qu'il faudrait plutot que tu fasse c'est dans un fichier declaration faire ça:

export interface CreateOne {
   name: string;
   description: string;
   ownerId: mongoose.Schema.Types.ObjectId;
   price: string;
}```

et du coup remplacer ce que tu as déjà par ça

const createOne = async (data: CreateOne): Promise<ItemInterface> => {
const { name, description, ownerId, price } = data
}```

cyan iron
sudden cipher
#

oui mais elles dates toutes d'il y a 4 mois

worthy parrot
#

Bonjour

#

J'ai un problème

#
const Discord = require("discord.js");
const Client = new Discord.Client({
    intents: [
        Discord.Intents.FLAGS.GUILDS,
        Discord.Intents.FLAGS.GUILD_MESSAGES
   ]
});

const prefix = "!"; 

Client.on("ready", () => {
    console.log("bot opérationnel");
});

Client.on("messageCreate", message => {
    if(message.author.bot)return;

    if(message.content === prefix + "sunrise"){
        const embed = new Discord.MessageEmbed()
        .setTitle("Les Sunrises sont beaux")
        .setColor("#2F3136")
        .setThumbnail("https://cdn.discordapp.com/emojis/817700659519684658.png?size=96%22")
        .setFooter("Tout le monde le savait")
        
        message.channel.send({ embeds: [embed]});
    }
    else if(message.content === prefix + "help"){
        message.reply("gay")

        message.channel.send({ embeds: [embed]});
    }
});
#

Quand je mets ça j'ai dans ma console ça :

#
Debugger attached.
Waiting for the debugger to disconnect...
c:\Bipboup final\index.js:30
        message.channel.send({ embeds: [embed]});
                                        ^

ReferenceError: embed is not defined
    at Client.<anonymous> (c:\Bipboup final\index.js:30:41)
    at Client.emit (node:events:390:28)
    at MessageCreateAction.handle (c:\Bipboup final\node_modules\discord.js\src\client\actions\MessageCreate.js:25:14)
    at Object.module.exports [as MESSAGE_CREATE] (c:\Bipboup final\node_modules\discord.js\src\client\websocket\handlers\MESSAGE_CREATE.js:4:32)
    at WebSocketManager.handlePacket (c:\Bipboup final\node_modules\discord.js\src\client\websocket\WebSocketManager.js:350:31)
    at WebSocketShard.onPacket (c:\Bipboup final\node_modules\discord.js\src\client\websocket\WebSocketShard.js:443:22)
    at WebSocketShard.onMessage (c:\Bipboup final\node_modules\discord.js\src\client\websocket\WebSocketShard.js:300:10)
    at WebSocket.onMessage (c:\Bipboup final\node_modules\ws\lib\event-target.js:199:18)
    at WebSocket.emit (node:events:390:28)
    at Receiver.receiverOnMessage (c:\Bipboup final\node_modules\ws\lib\websocket.js:1093:20)

Node.js v17.2.0
neat lintel
glass cargo
neat lintel
#

Le tuto est en V12 et vu que elle est dépréciée c'est pas forcément une bonne idée de suivre ca pour le moment

sudden cipher
#

Oui je l'ai déjà vu @glass cargo mais c'est du V12

#

mais merci quand même

glass cargo
#

Ah bon ?

neat lintel
# sudden cipher Oui je l'ai déjà vu <@!692374264476860507> mais c'est du V12

Sinon tu as une série de vidéo du youtubeur getCodingKnowledge sur youtube en V13 cette fois si mais c'est avec le framework akairo qui est lui aussi déprécié et du coup il montre pas l'utilisation des intéractions comme les boutons, les slash-commands etc. Si tu débute et que tu veux pouvoir créer un bot facilement en V13 il y a le projet #sheweny-js qui a été crée dans ce but justement.

glass cargo
keen narwhal
#

Hello, avez-vous une idée de comment outre-passer la limite fixée à 100 messages fetch ?

neat lintel
#

Tu fetch plusieurs fois de suite si nécessaire

keen narwhal
#

Donc juste copier mon fetch et ils se suivront sans problème ?

neat lintel
#

faut ajouter un paramètre before dans les options sinon il te donnera toujours les 100 derniers

glass cargo
#

Yep 👍

#

Bonjour à tous 👋
J’aurais besoin de l’aide de quelqu’un qu’y si connaît bien sur mongoose.

J’aimerai récupérer toutes les données d’un array dans un document. Comment puis faire ?

neat lintel
#
TonModel.find({key: 'value'}) // Récupère tous les documents trouvés avec le filtre {key: "value"}

TonModel.findOne({key: 'value'}, "nom_de_ton_field") // Récupère seulement le field "nom_de_ton_field" du premier document trouvé avec le filtre {key: "value"}

TonModel.findOne({key: 'value'}) // Récupère le premier document trouvé avec le filtre {key: "value"}
glass cargo
#

Non pas ça x)

neat lintel
#

Bah la tu peux récupérer ton array en entier depuis un document

glass cargo
#

Dans un document, j’ai une key dont la value est un array

#

Et je souhaiterais récupérer cet array

neat lintel
#

oui

#

Bah soit tu fetch tous le document soit tu fais comme mon exemple 2 pour récupérer seulement l'array

glass cargo
#

J’vais essayer ça alors...

neat lintel
#

a la place de nom_de_ton_field tu mets le nom de la key qui contient l'array

glass cargo
#

Oki merci

leaden juniper
#

Bonjour, j'aimerais que je puisse lire les fichiers de mon dossier "commands" depuis mon fichier index.js pour que mon code soit plus simple à lire mais je ne trouve pas comment faire. Quelqu'un pourrait m'aider ? (je suis en discord.js v13)

ashen rapids
#

Regarde le guide de DiscordJS

#

Ils expliquent comment faire

leaden juniper
#

ah oui j'avais zappé ce chapitre mdr

keen narwhal
#

Salut j'ai suivi un tutoriel en faisant la commande ping mais quand j'essaye de faire la commande rien ne se fait et y'a pas de message d'erreur

sharp grail
#

bah 🤔

#

si tu as juste ce fichier comme ça il ne se passera rien c'est sur

keen narwhal
#

Euh oui j'en ai d'autres pardon

#

Je crois que c'est tout hein

fading glacier
keen narwhal
#

c'est event handler

fading glacier
#

Non pas ça

keen narwhal
fading glacier
#

Ton événement messageCreate

keen narwhal
fading glacier
#

Est-ce que sur le dashboard du bot du as activé les message intents ?

keen narwhal
#

le dashboard ??

fading glacier
#

Sur le site de discord

keen narwhal
#

ah

fading glacier
keen narwhal
#

oui

#

J'ai activé

fading glacier
# keen narwhal

Déjà ligne 37 tu crées une nouvelles collection mais tu l’as pas importé

#

Après si ça règle pas ton problème je sais pas

keen narwhal
#

Ok

#

ça marche toujours pas :/

#

C'est pas grave merci quand meme

peak cedar
#

Ya pas un truc du genree interaction ou chepa kua

keen narwhal
#

euh non

ashen rapids
#

Debug ton code avec des console.log

patent storm
#

Salut, j'ai un ptit soucis, en gros, j'ai un map d'un tableau, et je cherche à n'afficher que x élément du tableau, comment pourrais-je faire ? Quelqu'un aurait une idée ?

ashen rapids
patent storm
#

Oui

#

Du coup, je pensais faire un for et le map, mais le soucis c'est que le map va afficher tout les éléments

ashen rapids
#

Dans ta boucle, sur la condition de fin, tu fais i < 3 (ou ta valeur)

patent storm
#

Oui oui, mais du coup, je suis obligé de dégager mon .map on est d'accord ?

ashen rapids
#

Ha désolé je regardais ton for

#

Soit un for ou soit tu slices pour ensuite map()

patent storm
#

ah ok, en gros, est-ce qu'avec un .map on peut lui dire de ne parcourir que X éléments du tableau

ashen rapids
#

arr.slice(début, fin)

Et du coup dans ton map(), t'auras juste les index que tu veux

patent storm
#

Ah ok ok, je connaissais pas le slice merci je vais regarder

ashen rapids
#

values.slice(debut, fin).map((...) => display());

dire latch
#

Hey petite question pour vous !

#

J'ai un bot qui permet de mettre les membres du staff dans un embed automatiquement

#

Mais dans un rôle, il y a trop de membre, c'est possible de les partagé en deux ?

#

Pour créer 2 embed

ashen rapids
dire latch
#

En fait

#

Le rôle en question, il y a trop de membre pour 1 seul embed

#

Donc faudrait les divisés en deux @ashen rapids

#

Le rôle seul dépasse la limite d'un embed

ashen rapids
#

Oui, tu en fais 2 et tu fais :

.send({embeds: [embed1, embed2]})

Ou un système de pagination qui édite ton embed

dire latch
#

Mais comment je divise le rôle ?

slim anvil
#

Bah si il te renvoie un tableau tu coupes ton tableau en 2

dire latch
#

Et comment on fais ça 👀

slim anvil
#

Comme il disait justement par exemple

#

Tu peux de x a x

#

Et du coup ce serait ton premier tableau et le reste serait le 2eme

#

si tu utilises lodash tu as des méthodes qui le font automatiquement

#

Mais l’installe pas si tu l’as pas ça vaut pas le coup pour une fonction

dire latch
#

Mais pour divisé en deux, je dois utiliser quoi ? Un filter ?

slim anvil
#

Je te l’ai dis jsute avant tu peux passer par un slice

#

Le filter permet de filtrer donc c’est pas vraiment ce que tu veux faire

dire latch
#

Ok

slim anvil
#

Je suppose que tu fais une boucle sur tout tes rôles et afficher chaque membre de chaque rôle
Si tu sais à combien est limite un embed en field par exemple tu peux juste faire une boucle et avec l’index d’itération vérifier que tu ne sois pas au dessus de la limite, si tu es au dessus tu récrée un embed et tu addField sur le nouveau

dire latch
#

Tout compris comment faire 👀😢

#

Je te dirai demain

timid loom
peak cedar
#

help

ashen rapids
#

T'as sûrement pas mis le params

peak cedar
#

comment ça ?

ashen rapids
#

T'as cette erreur quand tu fais un /clear ?

peak cedar
#

genre /clear 15

#

est y'a ça qui pop

ashen rapids
#

Tu utilises un framework en particulier ou c'est un truc fait maison ?

peak cedar
#

const { Client, CommandInteraction, ApplicationCommandOptionTypes, Guild } = require("discord.js");

module.exports = {
    name: "clear",
    description: "Purge Message",
    type: "CHAT_INPUT",
    options: [{
        name: "nombres",
        description: "Donnez un nombre pour Purger (entre 1-99)",
        type: 10,
        required: true
    }],
    run: async(client, interaction, args) => {
        const member = interaction.member;
        if (!member.permissions.has("MANAGE_MESSAGES")) return interaction.reply({content:`Tu n'as pas la permission...`, ephemeral: true});
        if (interaction.channel && interaction.channel.type === "GUILD_TEXT") {
            interaction.channel.bulkDelete(interaction.options.getNumber('nombres', true)).then(() => {
                interaction.reply({content:`À ton service! (${interaction.options.getNumber('nombres', true)} message suprimé) <@${interaction.user.id}> `, ephemeral:true})

            })
        }

    }
}
#

@ashen rapidspeux importe si je marque un nombre ou txt

#

bah y'a lerreur

peak cedar
#

Bah maison envrai

ashen rapids
#

Alors essaie de debug ton code pour voir comment est générée ton erreur

peak cedar
#

bah ça dit nombres n'est po def

ashen rapids
#

Regarde où est gérée cette erreur

peak cedar
ashen rapids
#

Non dans ton code

#

C'est toi qui a dev tout ça ?

glass cargo
#

Bonsoir, j'ai une erreur bizarre qui s'affiche lorsque mon bot doit envoyer une vidéo qui se trouve dans le dossier "videos" :
code :

      if (StringOption === "addchannel") return interaction.reply({ content: `**${emojis.discordicons.textchannel} ➜ Voici une vidéo explicative sur l'utilisation de la commande \`/addchannel\` :**`, files: ["./videos/addchannel.mp4"]})

erreur :

AbortError: The user aborted a request.
      at abort (D:\Perso\Programation\Bots Discord\7_PubTool Support\node_modules\discord.js\node_modules\node-fetch\lib\index.js:1440:16)        
      at EventTarget.abortAndFinalize (D:\Perso\Programation\Bots Discord\7_PubTool Support\node_modules\discord.js\node_modules\node-fetch\lib\index.js:1455:4)
      at EventTarget.[nodejs.internal.kHybridDispatch] (node:internal/event_target:559:20)
      at EventTarget.dispatchEvent (node:internal/event_target:504:26)
      at abortSignal (node:internal/abort_controller:97:10)
      at AbortController.abort (node:internal/abort_controller:122:5)
      at Timeout.<anonymous> (D:\Perso\Programation\Bots Discord\7_PubTool Support\node_modules\discord.js\src\rest\APIRequest.js:71:49)
      at listOnTimeout (node:internal/timers:557:17)
      at processTimers (node:internal/timers:500:7) {
    type: 'aborted'
  }
} FetchError: request to 
    at ClientRequest.<anonymous> (D:\Perso\Programation\Bots Discord\7_PubTool Support\node_modules\discord.js\node_modules\node-fetch\lib\index.js:1483:11)
    at ClientRequest.emit (node:events:406:35)
    at TLSSocket.socketCloseListener (node:_http_client:420:11)
    at TLSSocket.emit (node:events:406:35)
    at node:net:672:12
    at TCP.done (node:_tls_wrap:580:7) {
  type: 'system',
  errno: 'ECONNRESET',
  code: 'ECONNRESET'
}
ashen rapids
#

Le fichier que tu essaie d'envoyer fait combien de Mo ?

ashen rapids
#

Du coup ta requête " Timed out "

#

Tu peux avoir cette erreur beaucoup moins facilement une fois sur le cloud

glass cargo
glass cargo
deep torrent
#

Je pense que c'est ta connexion

ashen rapids
#

C'est probablement ta connexion oui. Ça me le fais souvent

patent storm
#

Salut, ptite question, j'ai un text input, et j'aimerais récupéré sa valeur plus tard dans le code en JS, comment puis-je faire ?

#

avec un document.getElementById ?

ashen rapids
patent storm
#

yep

#

Mais ce qui m'énerve c'est que sa me dit que c'est null donc sa fonctionne pas ce que j'essaye de faire

ashen rapids
#

Tu utilises un framework ?

#

J'ai du mal à savoir lequel c'est

#

Mais là ce que tu fais, c'est que tu essaie de récupérer un élément du DOM puis tu return le DOM ensuite

#

Donc c'est normal que c'est null

cyan narwhal
#

Bonjour !

Je m'y connais pas du tout en JS
J'aimerais savoir comment faire pour détecter quand est-ce que je lâche une touche ?

J'ai un menu qui s'affiche quand on appuie sur "E" et disparaît quand je réappuie une deuxième fois, sauf que je veut que celui-ci s'affiche quand je reste appuyé et disparaisse une fois la touche laché.

cyan narwhal
#

J'ai essayer de faire ça mais ça marche pas

#

$(document).keyup(function(event) {
if(event.which == 101){ // if "E" is released
$(".crosshair").removeClass('fadeIn').removeClass('active');
$(".menu").removeClass('fadeIn');
$.post('http://menu/disablenuifocus', JSON.stringify({
nuifocus: false
}));
}
});

glass cargo
patent storm
patent storm
#

Salut, du coup, j'ai un petit problème, en gros, j'ai un bouton et une zone de text

             <input onchange="samActions.exec({do:'addToCart', id:'${v.id}', e:event})" type="text" class="center-align ${v.inCart ? `` : `color-1a`} " value="${v.quantity}" />
           <button onclick="samActions.exec({do:'addToCart', id:'${v.id}', e:event})" class="circle no-margin disabled">

Et avec le onchange du coup j'arrive bien a récupéré la valeur avec un data.e.target.value, cependant, j'aimerais aussi récupéré la valeur avec le button onclick mais forcément le data.e.target.value ne va pas fonctionnée dessus, un coup de pouce ?

slim anvil
slim anvil
#

tu gardes la meme fonction, mais tu vérifie que si tu as pas de 2eme paramètre, tu vas chercher la valeur de l'input directement

patent storm
#

ah bah nop au final sa fonctionne pas ce que j'ai tenté

#

mdr

#

Ah, en gros, je sais pas trop comment faire pour mon cas @slim anvil car en gros, je génère X button a l'aide d'un map, et en faite, j'arrive bien a récupéré la valeur de mon premier bouton avec un document.getElementById, mais je n'arrive pas a récupéré la valeur des autres button qui on donc le même ID

#

je sais pas si j'ai été clair ?

slim anvil
#

Oui un ID c'est unique

#

donc tu pourras pas passer par le meme ID

#

sois tu les rend dynamique avec button_${id}
sois tu le fais via une class

patent storm
#

Ah oui, pas con l'idée de mettre un ID dynamique, du coup sa m'a l'air de fonctionne encore une fois, merci, dsl hein je sais que mes pb peuvent paraître débile mdrr

patent storm
#

Dsl de t'embêter @slim anvil encore, mais j'ai aucune idée de si c'est possible de modifier la couleur d'un bouton dès qu'une valeur est saisi dans un input mais sans avoir besoin de recharger la page ou autre, dès que la modification a lieu sa le modifie, j'ai cherche sur internet mais jsp si je cherche au bon endroit

slim anvil
#

au onChange de ton input

patent storm
#

En gros dès que la valeur est différente de '' il faut changer la couleur du bouton

slim anvil
#

tu changes le style de l'element button ou tu ajoutes une class

patent storm
#

Mais justement avec un onChange, si le mec rentre une valeur par exemple 1 et la supprime, sa remettra pas le bouton à la couleur initiale ?

slim anvil
#

il faut que tu le gères

patent storm
#

Et du coup le fait que mon bouton soit en dessus du input sa va pas me dire qu'il ne le trouve pas ?

#

dans le code

peak cedar
#

DiscordAPIError: Missing Access a l'aide

#

jsais pu comment on fait

#

dans le discord

#

dev

#

portal

ashen rapids
#

Problème de permission

peak cedar
ashen rapids
#

Montre ton code et ton erreur complète 😁

peak cedar
ashen rapids
peak cedar
#

bah j'ai fait ça

#

nan c good

#

srry du derangement

#

🙂

#

Merci a t oi bg

ashen rapids
#

Niquel 💪

peak cedar
#

xd

ashen rapids
#

Dis-nous ?

peak cedar
#

cmd de clear

#

but

ashen rapids
#

Avoir juste un Échec de l'interaction, ça peut pas beaucoup m'aider

#

Faudrait l'erreur

#

Par contre BetterDiscord, pas ouf 😏😏

peak cedar
#

c juste un theme en soit ça passe

#

?

ashen rapids
#

C'est interdit pas les ToS de Discord

peak cedar
#

oh merte bah jvai le retirer 😂

#

oula jsavais po ça parcontre xd

peak cedar
#

console log

#

?

ashen rapids
#

Dans la console où t'as exécuté ton bot, t'as probablement une erreur

peak cedar
#

nop

#

si

#

😂

#

bah jlai mit pourtant

ashen rapids
#

C'est un truc que t'as fait maison ?

#

Ou c'est un " framework " ?

peak cedar
#

le clear c un gars qui m'a aider pas mal

#

mais dcp moi mm

ashen rapids
#

Ça semble être un blocage global sur les handlers de la structure

#

Faudrait voir où ça bloque

peak cedar
#

tt marche sauf les 2 derniere 😂

ashen rapids
#

Lire le code et voir comment il fonctionne

peak cedar
ashen rapids
#

Fais voir ton say.js ?

peak cedar
ashen rapids
#

Les commentaires pas du tout dans l'abus 😂😂

peak cedar
#

jle laisse pour le say c une commands que je prend en exemple

#

quand j'ai bsoin

ashen rapids
#

Le mieux c'est de contacter celui qui t'a codé ça
Car c'est compliqué d'aider sur ce genre de soucis

peak cedar
#

jle contacte jte dit quoi merci

opal mantle
#

Bonjour j'aimerai savoir comment on éteint son bot discord

#

le mettre hors ligne

ashen rapids
#

CTRL + C

#

S'il est lancé sur un terminal

opal mantle
#

pour le lancer je fais node index.js sur le terminal

ashen rapids
#

Oui

#

Pour l'arrêter CTRL + C

opal mantle
#

ça ne fait rien

#

ah si c'est bon j'ai rien dit

celest copper
#

Bonjour,
J'ai 2 questions :

  1. comment mettre des caractères spéciaux dans le nom d'un channel et majuscule
    2)Et le nom du channel ne se rafraichi pas toujours
    passer de 0 à 5 puis à 4 mais ne reviens pas à 5
client.once("ready", () => {
    console.log("bot connecté");

    const guild = client.guilds.cache.find(guild => guild.name === "Serveur de Matio");
    const channel = guild.channels.cache.find(channel => channel.name.startsWith("membres-sur-ts"));
    if (channel === undefined)
        guild.channels.create("membres-sur-ts  0");

    const teamspeak = new TeamSpeak({
        host: "***************",
        queryport: 10011, //optional
        serverport: *****,
        username: "************",
        password: "***********",
        nickname: "BotDiscord"
        })

    let scheduledList = new cron.CronJob('*/5 * * * * *', () => 
    {
        console.log("récupération liste des personnes connectées");
        teamspeak.clientList().then(clients =>
            {
                console.log(clients.length);
                channel.setName("membres-sur-ts  " + clients.length);
            });
    });
          
    scheduledList.start()
  });
ashen rapids
celest copper
#

j'édite x)

inner escarp
#

Faudra que tu change user et password aussi sur ton serveur ts...

celest copper
#

Pas de soucis, c'est un serveur test

#

Mais c'est miueux en effet, voila j'ai tout mis cette fois x)

neat lintel
#
  1. Tu peux rafraichir le nom d'un channel 2 fois en 10 mins
celest copper
keen narwhal
#

Bonjour j'ai mis discordjs/rest dans une const comme dans le guide mais quand je veux run le program il ce passe ça

neat lintel
#

fais npm i @discordjs/rest

keen narwhal
#

Ah c'est bon merci

coarse trench
#

^^

#

mdr.

patent storm
#

Salut, j'ai un objet, et j'aimerais faire un .map or ce n'est pas possible sur un objet quelqu'un aurait une idée ?

#

Voici mon objet en gros

ashen rapids
#

Tu peux utiliser Object.keys()

neat lintel
#

Pour itérer un objet tu peux faire Object.values(tonObjet) ca va te donner un array et la tu pourras faire un .map

#

Ou oui Object.keys en fonction de ce que tu veux

#

D'ailleurs pour les keys, for...in fonctionne

patent storm
#

Ok et c'est possible de crée un nouveau tableau en liant objet.values et objet.keys ?

ashen rapids
#

Oui avec un map du coup ?

patent storm
#

Yep en gros il me faudrait un tableau contenant les booleans et le count

#

Car je dois faire un .map et j'aurais besoin d'accéder à la fois au nom des catégories donc contenu dans les booleens

ashen rapids
#

Yep tu peux

patent storm
#

Et a la fois a leurs valeur donc le count

#

Ok et ca va être avec Keys et values ?

#

Dsl je suis une merde en JS

ashen rapids
#

Une merde, respecte toi un peu 😂

#
Object.keys(obj).map((key, index) => {
  console.log(key);
  console.log(obj[key]);
});```
patent storm
#

En gros avec ca je peut réunir uniquement les 2 qui m'interessent donc le booleans et le count et donc dégager le hasChanged...

ashen rapids
#

Tu peux quand même, ça va te renvoyer ton array

patent storm
#

c'est possible de faire 2 map en même temps ? En gros, j'ai 2 tableaux différents, et j'aimerais récupéré les informations des 2 pour utiliser dans un map

#

Ou alors tout simple en gros avec les 2 tableaux obtenir :

0: Array["légumes", 3, true]
1: Array["fruits", 5, true]
2: Array["toutes", 9, true]

#

Je sais pas si c'est bien clair

ashen rapids
#

Pas besoin de faire un .map dans ton .map

#

Tu peux récupérer les valeurs directement si tu sais où elles se trouvent

patent storm
#

En gros oui, regarde est-ce qu'il est possible de regroupe ses 2 tableaux, c'est compliqué je trouve pas trop sur le web

ashen rapids
#

Tu peux faire deux maps dans ce cas là

patent storm
#

Ah bon, mais du coup en faisant 2 map, sa risque pas de me répéter l'opération trop de fois ?

ashen rapids
#

Au pire

#

Si tu veux faire exactement le même traitement

#

Utilise .concat()

patent storm
#

Yep bah en gros pour faire simple, j'ai besoin de faire un .map sur le premier tableau pour récupéré la valeur du nombre de fruit etc... Et dans un bouton j'ai besoin de récupéré le true ou false du second tableau pour afficher le bouton en checked en fonction de si c'est coché

sharp grail
#

Bonsoir, je rencontre un problème avec les collections de discordjs
je ne comprends pas comment fonctionne la méthode <Collection>.hasAll(Array<K>) 🤔

fading glacier
#

Si je ne me trompe pas c’est pour vérifier si ta collection contient tous les éléments de ta liste et ça te retourne un booléen

sharp grail
#

dac, en théorie, mais j'ai l'impression que ça ne marche pas ;_;

ashen rapids
sharp grail
patent storm
fading glacier
sharp grail
#

Dac, merci 👀

fading glacier
#

Ça me fait pareil, sinon tu peux "bypass" en faisant ˋ<Array>.every((x) => <Collection>.has(x))`

sharp grail
#

moui mais bon x) 🤔

#

merci en tout cas

#

ptet report le problème 🤔

fading glacier
#

Ouais mais non enft c’est pas censé régler ton problème

#

Je viens de vérifier c’est exactement ça le <Collection>.hasAll

sharp grail
#

oui

#

mais j'ai l'impression que le collection.hasAll est buggé donc 🤔

fading glacier
#

Possible

sharp grail
#

le every marche de mon côté 🤔

#

d'ailleurs le hasAny est bug aussi

#

mais c'est pareil qu'un some donc bon

ashen rapids
#

Je vais tester le hasAll()

sharp grail
#

vas y 🤔

fading glacier
sharp grail
#

bah ça marche pas de ouf 🤔

fading glacier
#

Yes je viens de retester avec le every ça marche mais pas le hasAll

#

Vraiment bizarre

fading glacier
ashen rapids
#

Yep, ya en effet une erreur sur la doc

#

Je teste un truc

#

C'est du rest parameters

#

Pas un Array<> qui est demandé

#

@sharp grail

let collec = new Collection();
collec.set('1', 'ok');
collec.set('2', 'oui');
collec.set('3', 'non');

console.log(collec.hasAll('1', '3'));```
#

Return true

sharp grail
#

ça parait tout de suite plus logique

#

bah écoute merci 👀

ashen rapids
#

Pas de soucis !

sharp grail
#

ptet ouvrir une issue du coup ? 🤔

ashen rapids
#

Yep à mon avis

true wharf
#

Bonsoir, j'ai regardé par rapport à tout les orms disponnibles en js et j'ai vu prisma, vous en pensez quoi ?

keen narwhal
#

Hey, vous saurez comment faire en sorte qu'une touche sois appuyer mais automatiquement ?

hazy mirage
#

Yo @keen narwhal, est-ce que tu recherches un truc comme ça ?js const element = document.getElementById('tonsuperid') element.dispatchEvent(new KeyboardEvent('keypress', {'key': 'a'}));voir meme plus globalement document.dispatchEvent(new KeyboardEvent('keypress', {'key': 'a'}));

keen narwhal
#

J'ai essayer mais ça pas l'air de trop fonctionner

hazy mirage
#

Comment ça ?

keen narwhal
#

J'ai fais un event pour voir quand une touche est presser mais rien ne se passe

hazy mirage
#

jsp moi ça a l'air de fonctionner 👀

pulsar fiber
#

hey hey jai un troue de memoire comment on add un emojie perso dans du code ?

#

faut le recup avec \

#

mais je sais plus quoi faire avec ca

hazy mirage
#

imaginons tu as ça, tu viens le mettre dans le string de ton message puis terminé

pulsar fiber
#

okay merci jai chercher trop loin mdr

keen narwhal
pulsar fiber
#
const exampleEmbed = new MessageEmbed()
        .setColor("LUMINOUS_VIVID_PINK")
        .setDescription(messageAMA,"![200iq](https://cdn.discordapp.com/emojis/664531141675450369.webp?size=128 "200iq") ")
        .setTitle(NameToEmbed)
        .setImage(LinkInEmbed)
        await interaction.reply({ content: 'fais !', ephemeral: true });
        user.send({ embeds: [exampleEmbed] });
    },
}```
#

une idée de pourquoi l'emojie par pas avec ?

hazy mirage
#

Le bot est sur le discord de l’emoji ?

#

Si c’est un discord externe la perm d’utiliser des emojis externes?

patent storm
#

J'ai encore une petite question @ashen rapids, en gros j'ai quatres checkbox Fruits, Légumes Viandes et Toutes, et en gros, dès qu'une des trois donc Fruits Légumes ou Viandes sont off il faut désactiver Toutes et à l'inverse dès que les 3 sont coché faut recocher Toutes, une idée de comment faire ? J'ai tenté plein de truc mais galère à réactiver Toutes quand les 3 sont coché

ashen rapids
#

Tu peux utiliser onChange sur ton input

#

Pour détecter l'event déjà

patent storm
#

Yep c'est déjà fait :)

#

let filteredValues = [] // TODO
articles.values.forEach((article)=>{
filters.categories.count.forEach((filtre)=>{
filters.origins.count.forEach((filtre2)=>{
if(article.category.includes(filtre.categorie) && filtre.active && article.origin.includes(filtre2.origin) && filtre2.active)
filteredValues.push(article)
})
})
})

En gros je me sert de sa pour activer ou désactiver un bouton et sa fonctionne, maintenant faut j'essaye de trouver comment savoir quand faut que je réactive le bouton Toutes

#

Merde mauvais code wait

#

if(data.filter == "origin"){
this.model.filters.origins.count.forEach(el1=>{
if(data.id == el1.origin){
if(el1.active){
el1.active = false;
}else
el1.active = true;
}
})

#

Voila c'est lui, en gros le bouton s'active automatique si il a le paramètre active à true

patent storm
#

Petite question, quel fonction pouvons nous utiliser pour faire en sorte de modifier la couleur d'un bouton dès qu'une checkbox est coché ?

slim anvil
#

toujours dans ton event onChange

patent storm
#

Mhmm je vais look ca du coup, tu me parle bien pour ma dernière question ?

slim anvil
#

oui

patent storm
#

okay, je regarde après

pulsar fiber
hazy mirage
#

Top 👍

patent storm
#

Salut, j'ai un dernier soucis, j'aimerais trier mon tableau d'objet suivant le prix, comment pourrais-je faire ?

slim anvil
#

Tu peux utiliser .sort

peak cedar
#

une idée de comment collect

#
const { MessageEmbed, MessageActionRow, MessageSelectMenu, ThreadChannel } = require("discord.js");
const config = require("../../botconfig/config.json");
const ee = require("../../botconfig/embed.json");
const settings = require("../../botconfig/settings.json");
module.exports = {
    name: "test", //the command name for the Slash Command
    description: "Ecrire dans un chat avec le bot", //the command description for Slash Command Overview
    cooldown: 5,
    memberpermissions: ["MANAGE_SERVER"], //Only allow members with specific Permissions to execute a Commmand [OPTIONAL]
    requiredroles: [], //Only allow specific Users with a Role to execute a Command [OPTIONAL]
    alloweduserids: [], //Only allow specific Users to execute a Command [OPTIONAL]
    options: [ //OPTIONAL OPTIONS, make the array empty / dont add this option if you don't need options!
        //INFORMATIONS! You can add Options, but mind that the NAME MUST BE LOWERCASED! AND NO SPACES!!!, for the CHOCIES you need to add a array of arrays; [ ["",""] , ["",""] ] 
        //{"Integer": { name: "ping_amount", description: "How many times do you want to ping?", required: true }}, //to use in the code: interacton.getInteger("ping_amount")
        /*         {"String": { name: "text", description: "Que voulez vous envoyez ? [ +n+ = Newline ]", required: true }}, //to use in the code: interacton.getString("title")
         */ //{"User": { name: "ping_a_user", description: "To Ping a user lol", required: false }}, //to use in the code: interacton.getUser("ping_a_user")
        /*         {"Channel": { name: "in_where", description: "Où voulez vous que le message s'envoie", required: false }}, //to use in the code: interacton.getChannel("what_channel")
         */ //{"Role": { name: "what_role", description: "To Ping a Role lol", required: false }}, //to use in the code: interacton.getRole("what_role")
        //{"IntChoices": { name: "what_ping", description: "What Ping do you want to get?", required: true, choices: [["Bot", 1], ["Discord Api", 2]] }}, //here the second array input MUST BE A NUMBER // TO USE IN THE CODE: interacton.getInteger("what_ping")
        //{"StringChoices": { name: "what_ping", description: "What Ping do you want to get?", required: true, choices: [["Bot", "botping"], ["Discord Api", "api"]] }}, //here the second array input MUST BE A STRING // TO USE IN THE CODE: interacton.getString("what_ping")

    ],
    run: async(client, interaction) => {

        const row = new MessageActionRow()
            .addComponents(
                new MessageSelectMenu()
                .setCustomId('ticket')
                .setPlaceholder('Nothing selected')
                .setMinValues(1)
                .setMaxValues(1)
                .addOptions([{
                        label: 'Partenariat',
                        description: 'Pour devenir partenaire',
                        value: 'first_option',
                    },
                    {
                        label: 'Prob avec un membre(s)',
                        description: 'TManque de respect ou autres...',
                        value: 'second_option',
                    },
                    {
                        label: 'Autre(s)',
                        description: 'Si les autres selections ne sont pas votre cas',
                        value: 'third_option',
                    }
                ]),
            );




        await interaction.reply({ content: 'Pong!', components: [row] });


    }
}

#

genre jsais po du tout comment collect 😦

#

j'essaye depuis ce matin j'en ai marre 😦

ashen rapids
peak cedar
#

bah detecter quand il click sur une option

ashen rapids
#

Vérifie ensuite que c'est un menu, tu vérifies de quel menu il s'agit

#

Et ensuite tu récupère la value de l'option cliquée

peak cedar
#

j'ai un handler et genre y'a ça

#
//Import Modules
const config = require(`../../botconfig/config.json`);
const ee = require(`../../botconfig/embed.json`);
const settings = require(`../../botconfig/settings.json`);
const { onCoolDown, replacemsg } = require("../../handlers/functions");
const Discord = require("discord.js");
module.exports = (client, interaction) => {
    const CategoryName = interaction.commandName;
    let command = false;
    try{
            if (client.slashCommands.has(CategoryName + interaction.options.getSubcommand())) {
              command = client.slashCommands.get(CategoryName + interaction.options.getSubcommand());
            }
      }catch{
            if (client.slashCommands.has("normal" + CategoryName)) {
              command = client.slashCommands.get("normal" + CategoryName);
           }
    }
    if(command) {
        if (onCoolDown(interaction, command)) {
              return interaction.reply({ephemeral: true,
                embeds: [new Discord.MessageEmbed()
                  .setColor(ee.wrongcolor)
                  .setFooter(ee.footertext, ee.footericon)
                  .setTitle(replacemsg(settings.messages.cooldown, {
                    prefix: prefix,
                    command: command,
                    timeLeft: onCoolDown(interaction, command)
                  }))]
              });
            }
        //if Command has specific permission return error
        if (command.memberpermissions && command.memberpermissions.length > 0 && !interaction.member.permissions.has(command.memberpermissions)) {
          return interaction.reply({ ephemeral: true, embeds: [new Discord.MessageEmbed()
              .setColor(ee.wrongcolor)
              .setFooter(ee.footertext, ee.footericon)
              .setTitle(replacemsg(settings.messages.notallowed_to_exec_cmd.title))
              .setDescription(replacemsg(settings.messages.notallowed_to_exec_cmd.description.memberpermissions, {
                command: command,
                prefix: prefix
              }))]
          });
        }
        //if Command has specific needed roles return error
        if (command.requiredroles && command.requiredroles.length > 0 && interaction.member.roles.cache.size > 0 && !interaction.member.roles.cache.some(r => command.requiredroles.includes(r.id))) {
          return interaction.reply({ ephemeral: true, embeds: [new Discord.MessageEmbed()
            .setColor(ee.wrongcolor)
            .setFooter(ee.footertext, ee.footericon)
            .setTitle(replacemsg(settings.messages.notallowed_to_exec_cmd.title))
            .setDescription(replacemsg(settings.messages.notallowed_to_exec_cmd.description.requiredroles, {
              command: command,
              prefix: prefix
            }))]
          })
        }
        //if Command has specific users return error
        if (command.alloweduserids && command.alloweduserids.length > 0 && !command.alloweduserids.includes(interaction.member.id)) {
          return message.channel.send({ ephemeral: true, embeds: [new Discord.MessageEmbed()
            .setColor(ee.wrongcolor)
            .setFooter(ee.footertext, ee.footericon)
            .setTitle(replacemsg(settings.messages.notallowed_to_exec_cmd.title))
            .setDescription(replacemsg(settings.messages.notallowed_to_exec_cmd.description.alloweduserids, {
              command: command,
              prefix: prefix
            }))]
          });
        }
        //execute the Command
        command.run(client, interaction, interaction.member, interaction.guild)
    }
}


ashen rapids
#

Ca c'est pour les commandes

peak cedar
#

apres j'avais copier ça

#

client.on('interactionCreate', async interaction => {
if (!interaction.isSelectMenu()) return;

if (interaction.customId === 'select') {
    await interaction.deferUpdate();
    await interaction.editReply({ content: 'Something was selected!', components: [] });
}

});

#

de justement du discord guide

ashen rapids
#

Yep c'est bien ça

peak cedar
#

sauf que la c nimporte le quelle de la liste

#

j'avais tenter de a la place du customId === 'select ' mettre values === 'first_option'

#

mais ça marche pas

#

Jsuis perdu a partir de la

livid needle
#

Bonjour tout le monde, j'ai commencé un bot discord en JS, je voudrais créer une commande permettant de choisir son préfix, hors je n'arrive pas faire fonctionner ma commande, quelqu'un pourrai m'aider svp? (voici mon bout de code):

const prefix = `!`;

client.on('messageCreate', (message) =>{
    if(message.content === prefix + "prefixe"){
        message.reply('Entrez le nouveau préfixe:')
        client.on('messageReply', (message) =>{
            prefix <= `${message.content}`;
            message.reply(`Le nouveau préfix est : "${prefix}"`)
        })
    }
})
peak cedar
ashen rapids
#

Le customId est l'ID de ton interaction

#

Si tu regardes le code de ta liste, tu as mis un id custom

#

Pour ça que ça catch pas

peak cedar
#

jsais j'ai modif

#

client.on('interactionCreate', async interaction => {
if (!interaction.isSelectMenu()) return;

if (interaction.customId === 'ticket') {
    await interaction.deferUpdate();
    await interaction.editReply({ content: 'Something was selected!', components: [] });
}

});

#

genre ça oklm

#

mais la jsais pas comment verif si il a clicker dans une case speciale

#

car avec ce code c toute les case la mm choses

ashen rapids
#

Ton event est détecté ? Si tu mets pas un console.log par exemple ?

livid needle
peak cedar
#

Je log quoi ?

ashen rapids
peak cedar
#

oui

#

mais n'importe quelle case fait ça

ashen rapids
#

Ok j'avais mal compris

peak cedar
#

jsuis pas clair non plus 😂

#

mais ducoup jvoudrais que 1 option fait une choses

#

et non pas toutes les option la mm choses

ashen rapids
#

Tu es censé avoir la liste des choix possibles

peak cedar
#

ok jvai teste

ashen rapids
#

Des choix sélectionnés*

ashen rapids
livid needle
ashen rapids
peak cedar
#

console.log(interaction.values)

ashen rapids
#

Tu as la version de DiscordJS

peak cedar
#

Undefined

peak cedar
ashen rapids
livid needle
peak cedar
ashen rapids
peak cedar
ashen rapids
peak cedar
#

CommandInteraction {type: 'APPLICATION_COMMAND', id: '921431027044470785', applicationId: '835099212559024148', channelId: '911734194919587947', guildId: '911734194919587942', …}

peak cedar
ashen rapids
#

On voit pas tout là

#

Il faut le console.log dans ton interactionCreate

peak cedar
ashen rapids
#

Là t'as print l'interaction d'une commande

peak cedar
#

? SelectMenuInteraction {type: 'MESSAGE_COMPONENT', id: '921431722502029362', applicationId: '835099212559024148', channelId: '911734194919587945', guildId: '911734194919587942', …}

ashen rapids
#

Tu as bien ton values

#

interaction.values

livid needle
peak cedar
#

ah oui c vrai 😂

ashen rapids
#

Il contient bien le choix de l'utilisateur

#

T'as juste à te baser sur ça pour récupérer le choix de l'user

peak cedar
ashen rapids
ashen rapids
#

values[0] => 'first_option'

peak cedar
peak cedar
#

parce que c la mm chose au second option

ashen rapids
#

values est un array contenant les options qui ont été selectionnées

#

A l'index 0, donc values[0], tu as le choix

livid needle
livid needle
peak cedar
#

est ducoup je fait comment pour verifier ?


        client.on('interactionCreate', async interaction => {
            if (!interaction.isSelectMenu()) return;

            if (interaction.values[0]) {
                await interaction.deferUpdate();
                await interaction.editReply({ content: 'Values 0 Test', components: [] });
                console.log(interaction.values)
            }
        });

ashen rapids
ashen rapids
peak cedar
#

Ok ça marche Merci bgggggggggg <33

#

Tout fonctionne c parfait Merci <33

ashen rapids
#

Nice !

livid needle
ashen rapids
#

Le mot clé var

#

const veut dire que la valeur change jamais

livid needle
#

ok merci

#
var prefix = `!`;

client.on('messageCreate', (message) =>{
    if(message.content === prefix + "prefixe"){
        message.reply('Entrez le nouveau préfixe:')
        client.on('messageCreate', (message) =>{
            prefix <= `${message.content}`;
           //message.reply(`Le nouveau préfix est : "${prefix}"`)
        })
    }
})

J'ai l'impression que me code ne prend pas en compte le deuxieme message pour modifier le préfixe

ashen rapids
#

Pourquoi <= ?

#

Pour changer la valeur d'une variable, faut juste utiliser =

livid needle
#

ah, car avant il n'aimait pas mon =

#

merci pour l'aide !

ashen rapids
#

Par contre je sais pas qu'elles sont tes ambitions mais je te conseille vivement d'utiliser les slash command de Discord

#

Via le /

#

Car à partir de mars 2022 me semble, il faudra être " vérifié " pour pouvoir lire les messages envoyés

#

A partir de 100 serveurs je crois

livid needle
#

je kiffe pas trop les commande slash

#

AH!

#

bah super...

ashen rapids
#

Et Discord va continué de forcer à ce que les gens utilisent ça

livid needle
#

go tout réapprendre

ashen rapids
#

Ce changement affecte uniquement les bots vérifiés, c’est-à-dire ceux qui sont présents sur 75 serveurs ou plus. Les bots non vérifiés présents dans moins de 75 serveurs ne se verront pas affectés.

livid needle
#

aaah je croyais l'inverse

#

non je pense pas en faire un gros bot

#

apres s'il prend de l'empleur, ce sera vraiment exeptionnel

#

je vais pas forcement le mettre a jour régulièrement ni rien

ashen rapids
#

A toi de voir !

peak cedar
#

de retour

       client.on('interactionCreate', async interaction => {
            if (!interaction.isSelectMenu()) return;

            if (interaction.values[0]) {
                await interaction.deferUpdate();
                await interaction.editReply({ content: 'Values 0 Test', components: [] });

                let channelName = 'test'; //Arguments to set the channel name
                interaction.guild.channels.create(channelName, {
                    type: "text", //This create a text channel, you can make a voice one too, by changing "text" to "voice"

                }).then(c => {
                    var server = message.guild

                    let category = server.channels.cache.find(c => c.name == "Help" && c.type == "category")
                    c.setParent(category.id)

                })


            }
        });

#

message is not defined

#

Jpeux remplacer par quoi c a cause de la maj

slim anvil
#

message est déclaré nul part

livid needle
#

Il faut une condition particuliere en JS pour utilisé un break?

slim anvil
#

dans une boucle, un switch etc.

livid needle
#

ah c'est pour ça que dans le if il ne fonctionne pas

slim anvil
#

tu dois return dans ton if si tu veux terminer l'instruction

livid needle
#

même le return n'as pas régler mon probleme, yes!

#
var prefix = `!`;

client.on('messageCreate', (message) =>{
    if(message.content === prefix + "prefixe"){
        message.reply('Entrez le nouveau préfixe:')
        client.on('messageCreate', (message) =>{
            prefix = `${message.content}`;
            if(message.author.bot) return;
            message.reply(`Le nouveau préfix est : "${prefix}"`)
            console.log(`Le nouveau préfix est : "${prefix}"`);
            return 1;
        })
    }
})

Une fois dans la comande prefixe, imposible d'en ressortir

peak cedar
#

@slim anvil j'ai def message par interaction

#

ça passe

slim anvil
#

pourquoi tu fais pas juste interaction.guild du coup ?

slim anvil
#

tu fais un msgCreate dans ton msgCreate

peak cedar
#

Mais dcp la nouvelle erreur

livid needle
slim anvil
#

log category et regarde si il le trouve bien déjà

slim anvil
#

la seule chose que tu fais c'est que dans ton event messageCreate tu viens recréer un listener de l'event messageCreate

#

rien d'autre

livid needle
#

Ce que j'essaie de faire c'est une double lecture, en gros, il y a la commande pour lancer la définition du préfixe puis un message avec le préfixe

slim anvil
#

Non mais ça ne fonctionnera pas

livid needle
#

(car j'arrive pas a visualiser comment faire pour récupérer le préfixe sur une meme commande)

slim anvil
#

Tu split ton message.content

#

pour récupérer la valeur qui t'interesse

peak cedar
slim anvil
#

donc il trouve pas ta category via ton find

peak cedar
#

jfait comment dcp y trouver avant

livid needle
slim anvil
livid needle
#

go chercher alors

peak cedar
#

la jvois pas comment jpeux faire dcp

ancient sonnetBOT
#
Résultats de la recherche: split

split
str:split() divise une chaîne en utilisation un motif pour déterminer où doivent être fait les séparations, en retournant un ensemble de nœuds contenant les chaînes résultantes.

Example:

str:split(chaîne,motif)

String.prototype.split()
La méthode split() divise une chaîne de caractères en une liste ordonnée de sous-chaînes, place ces sous-chaînes dans un tableau et retourne le tableau. La division est effectuée en recherchant un motif ; où le motif est fourni comme premier paramètre dans l'appel de la méthode.

Example:

str.split([separator[, limit]])

Text.splitText()
La méthode Text.splitText() sépare le nœud Text en deux nœuds au niveau de l’indice spécifié, et conserve les deux nœuds dans l’arbre en tant que voisins.

Example:

noeudRemplacant = noeudTexte.splitText(indice)
slim anvil
#

@livid needle

#

tu regardes la doc de temps en temps @peak cedar ? la réponse est littéralement dessus si tu veux chercher un channel qui sera pas dans ton cache par exemple

peak cedar
#

ok jvais look

slim anvil
livid needle
livid needle
#

@slim anvil Ce serait laquelle des 3 qui serait la plus simple à utilisé ? (de commande split?)

#

car j'avouerai que je les comprend pas vraiment

slim anvil
#

les 2 premières

#

tu as essayé de split sur ton message.content ?

livid needle
#

oui mais je comprend pas comment on récupère ce qui a été split

#

comme on ne doit pas donné de variable pour y entré ce qui est spllit je ne vois pas comment récupere ma valeur

slim anvil
#

le split te return un tableau de string

#

dans ton cas

livid needle
#

accecble comme C?

slim anvil
#

?

livid needle
#

je vais aller voir sur Open classroom

lone bane
#

Bonjour les gens,

Je suis encore débutant et je code un bot Discord en Javascript, je suis bloqué sur une commande que je n'arrive pas à faire fonctionner et j'aurais besoin de votre aide :

Je voudrais faire en sorte qu'après une commande, le bot pose une question puis une fois que l'utilisateur répondu, la réponse se fait supprimée puis le bot modifie son propre message pour poser une deuxième question, pour refaire le même procédé une deuxième fois.

Voici un exemple de ma situation actuelle :

var prefix = "*"

client.on('message', message => {
  if (message.content.startsWith(prefix + "commande")) {
    message.channel.send("Une question")

    const collector = new Discord.MessageCollector(message.channel, m => m.author.id === message.author.id, { time: 20000 });
    
    collector.on('collect', message => {
          
      const valleur1 = message.content

      collector.stop()
      message.delete()
      message.edit("Deuxième question")       
      collector.on('collect', message => {
              
        const valleur2 = message.content
    
        collector.stop
        message.delete()
        message.edit(`la bla bla ${valleur1} bla bla ${valleur2}`);
      })
    })
  }
});
glass cargo
#

Un fois dans ton client.on() et une autre fois dans ton collector.on()

celest copper
#

Bonjour, j'ai créé un salon vocal et je voudrais bloquer tout le monde pour que personne ne puisse y accéder (ce n'est que pour du texte), j'ai essayé avec ce code, mais ça ne fonctionne pas :

guild.channels.create("𝐌𝐞𝐦𝐛𝐫𝐞𝐬 𝐬𝐮𝐫 𝐓𝐒 : 0", 
        {
            type: 'GUILD_VOICE',
            permissionOverwrites:
            [
                {
                    id: guild.roles.everyone,
                    deny: ['ALL']
                }
            ]
        });

J'ai le message suivant :
[BITFIELD_INVALID]: Invalid bitfield flag or number: ALL.

Autre question :
Je souhaiterai mettre une pastille soit verte soit grise en fonction du nombres de personnes, savez-vous comment faire ?

Merci d'avance 🙂

coarse trench
#
id: message.guild.roles.cache.find(r => r.name === '@everyone').id,
neat lintel
#

C'est pas ca le problème

#

Le flag ALL existe pas

coarse trench
#

Ah yes excuse

neat lintel
#

A la limite ca peut etre Permissions.ALL

#

en important Permissions de discord.js

coarse trench
#
guild.channels.create(guild.members.filter(member => !member.user.bot).size > 100 ? ":green_circle:" : ":red_circle:" + "𝐌𝐞𝐦𝐛𝐫𝐞𝐬 𝐬𝐮𝐫 𝐓𝐒 : 0")
#

Tu voulais un truc comme ça pour les pastille ?

celest copper
#

Merci pour le permission !

celest copper
coarse trench
#

Windows + ;

celest copper
#

Merci, mais il n'y en a pas d'autre ? Comment les pastille de TeamSpeak par exemple ?

coarse trench
#

non impossible de mettre des emojis custom sur le nom d'un channel sur discord

celest copper
#

Okay, merci

celest copper
lone bane
coarse trench
celest copper
#

Non aucune, j'ai fait autrement, j'ai pris le code unicode ça passe

glass cargo
#

tu peux pas définir 2 fois la même chose ^^

slim anvil
#

Mais par contre c’est vraiment infâme à la lecture

glass cargo
#

mais avec le message.delete(), comment le bot sait si c'est le message de la commande ou la réponse à la question qu'il doit supprimer ?

slim anvil
#

D’où la notion de scope du coup il va delete le message du collector.on

#

si imaginons que le collector ne renverrait pas un Message mais un User le .delete ne fonctionnerait pas

#

Je suppose que le collector renvoie un message du coup

celest copper
#

Rebonjour,
Je faisait l'essai de mon bot avec les droits admin
maintenant je veux seulement utiliser les droits qu'il a besoin, et j'ai toujours l'erreur "missing permission"
Y a t'il un moyen de voir quelle permissions sont manquantes ?

coarse trench
#

Qu'es ce que tu essaies de faire ?

#

Quelqu'un sait comment faire un uptime d'un user présent dans un voice channel ?

oak turret
#

bah, si le nouveau channel est de type voice tu lances un compteur, et si encore une fois il change tu le stoppes et tu l’enregistres quelque part

#

dans l’event voiceStateUpdate si je me trompe pas

coarse trench
#

oep ok

keen narwhal
#

Salut tous le monde !

Aujourd'hui pour le bot protect de mon serveur discord j'ai voulu faire une commande stats

Or , je ne sais pas du tout comment on fait

je precise que je suis en discord.js@12

voilà merci d'avance

#

je voudrais

membres total
membres en voc
membres en lignes

oak turret
#

t’as déjà regarder sur google?

sick iris
#

@cyan iron

cyan iron
#

Go #discussion-dev plutôt je me suis trompé

#

Désolé

sick iris
#

tkt

keen narwhal
oak turret
#

tu cherches très mal alors

keen narwhal
#

Je pense mdr

keen narwhal
#

j'ai un prblm, je fais un embed builder avec buttons et mon filtre for mon message collcteur ne marche pas car quand le button quel est votre titre est cliqué le bot envoie quel est votre titre et ça collcte le quel est votre titre et le met en titre code :

      const collector = msgEmbedForEditing.createMessageComponentCollector({filter})
      const filterMessage = m => m.author.id === message.author.id && !m.author.bot
      collector.on("collect", async button => {
          if(button.customId === "titre") {
             button.reply({ content: "Quel est votre titre ?", ephemeral: true });
             const title = (await message.channel.awaitMessages({ filterMessage, max: 1, time: 60000})).first().content;
             embedBeforeEdit.setTitle(title);
             msgEmbedForEditing.edit({ embeds: [embedBeforeEdit] });
        }  }```
peak cedar
#

on fait comment deja ? DiscordAPIError: Missing Access

keen narwhal
#

ton bot a pas les perms

peak cedar
#

Oui mais comment on fait pour regler

#

m'en rappel plus

#

c dev portal mais apres jsais plus

keen narwhal
#

bah mets lui les perms

peak cedar
#

Ou ça ?

keen narwhal
#

-_-

#

avec discord

peak cedar
#

Mais Je demande comment on fait pour lui remettre les perm sur dev portal

keen narwhal
#

ah

peak cedar
#

oui 😂

peak cedar
keen narwhal
#

bot

peak cedar
#

oui

keen narwhal
#

administrator

#

vila

peak cedar
#

Et la ?

keen narwhal
#

?

#

oauth2

peak cedar
#

Oui

keen narwhal
#

oauth2 url generator

peak cedar
#

tout est mit ici

peak cedar
keen narwhal
#

enleve applications .commans

keen narwhal
peak cedar
keen narwhal
#

bot

peak cedar
#

bien vue

#

bg

#

Cimer

keen narwhal
#

dr

keen narwhal
peak cedar
keen narwhal
#

ah

#

kick le bot

#

et invite le avec le lien

peak cedar
#

okey jtest cimer

#

y'a pas les slash commands ?

keen narwhal
#

bah il a perm admn

peak cedar
#

ça fait tjr genre

keen narwhal
#

?

peak cedar
#

bah jsais pas

#

comment regler 😭

#

dcp

keen narwhal
#

crée un role perm admin ou .

#

mets perm admin

#

et attribue lui

peak cedar
keen narwhal
#

bah ça devrait marcher

peak cedar
#

mais ça marche po

#

😭

keen narwhal
#

il est que sur un serv ?

peak cedar
#

bah jvai carrement en recreer un

keen narwhal
#

non le prblm peut venir de là

#

sur un autre serv il a pas les perms

#

prsq le prblm vient clairement que le bot doit avor acces a un salon pour envoyer un message (genre je suis co) mais il a pas acces

peak cedar
#

j'en ai recreer un Beug tjr

keen narwhal
#

Si

peak cedar
#

bah jsais bien que non il la jamais fait 😭

peak cedar
keen narwhal
#

Jsp

peak cedar
#

j'ai recreer un bot

#

jlui ai mit all perm

#

jlai inv

#

jlui ai mit all perm

#

ça marche tjr pas

#

Casse couille un peux la discord 😂

peak cedar
#

Qqun a une idée ?

lone bane
peak cedar
#

Hello

#

j'ai un prob genre ça marche po

#

est si jmet interaction a la place de message

#

jpeux mettre quoi dcp ?

fading glacier
#

La méthode find c’est dans le cache

#

Donc server.channels.cache.find(…)

coarse trench
#

yes

fading glacier
#

Btw, mettre un client.on dans un fichier commande c’est pas la meilleur idée, fais un event handler si c’est pas déjà fait ^^

peak cedar
#

ça marche jfait ça ^^

peak cedar
#

Juste apres car la

peak cedar
fading glacier
#

Le type category n’existe plus en v13

coarse trench
#

ah bon ?

#

Bahah

#

Les vrais reste en v12

peak cedar
#

Jretire && c.type == "category"?

fading glacier
#

Non c’est GUILD_CATEGORY

fading glacier
coarse trench
peak cedar
#

yesssss

fading glacier
#

Entre guillemets

peak cedar
#

Donc comme ça ?
Ou autre chose ?
let category = server.channels.cache.find(c => c.name == "HELP" && "GUILD_CATEGORY");

fading glacier
#

Bah

coarse trench
#

bah logique 👀 c'est pas une variable ?

fading glacier
#

Faut quand même la condition

coarse trench
#

là ça marchera pas

#

c.type == "GUILD_CATEGORY"

fading glacier
#

Yes

peak cedar
#

Jvai test

#

❤️

coarse trench
peak cedar
#

Plus d'erreur

#

Mais sa change pas de caterogy

fading glacier
coarse trench
fading glacier
#

Bah non

#

ContextMenus

coarse trench
fading glacier
#

Boutons

#

SelectMenus

#

Toutes les interactions quoi

coarse trench
#

C'est plus simple

#

Et ça marche pareil

fading glacier
coarse trench
#

Avec des FLAGS clc à rajouter à chaque fois que tu fais un truc

fading glacier
#

Ça prend 2 secondes mais ok

coarse trench
#

2 secondes de trop

peak cedar
coarse trench
#

oe

empty field
#

bonjour vous savez comment faire un bot musique car quand j'essaie de en faire un le bot crash et ne se rallume plus

hardy bear
#

Bonjour, avez vous un endroit où je pourrait savoir comment crée des messages avec intéraction avec la nouvelle fonctionnalité de buttons discord

ashen rapids
#

DiscordJS Guide

#

Très bon site

fading glacier
keen narwhal
#

j'ai un prblm, je fais un embed builder avec buttons et mon filtre for mon message collcteur ne marche pas car quand  le button quel est votre titre est cliqué le bot envoie quel est votre titre et ça collcte le quel est votre titre et le met en titre code :
  const filter = async() => true;         const collector = msgEmbedForEditing.createMessageComponentCollector({filter})         const filterMessage = m => m.author.id === message.author.id && !m.author.bot         collector.on("collect", async button => {             if(button.customId === "titre") {                button.reply({ content: "Quel est votre titre ?", ephemeral: true });                const title = (await message.channel.awaitMessages({ filterMessage, max: 1, time: 60000})).first().content;                embedBeforeEdit.setTitle(title);                msgEmbedForEditing.edit({ embeds: [embedBeforeEdit] });           }  }

fading glacier
#

Sinon mets juste un await quand tu réponds à l'interaction comme ça le awaitMessages ne sera pas lancé en même temps que le message est envoyé

cursive ember
#

Bonjour j'essaye de faire un bot mais je n'y arrive pas sa m'affiche sa quand j'essaye de le lancer avec node.

TypeError [CLIENT_MISSING_INTENTS]: Valid intents must be provided for the Client.
    at Client._validateOptions (C:\Users\matheo\Documents\states_rp_bot\node_modules\discord.js\src\client\Client.js:544:13)
    at new Client (C:\Users\matheo\Documents\states_rp_bot\node_modules\discord.js\src\client\Client.js:73:10)
    at Object.<anonymous> (C:\Users\matheo\Documents\states_rp_bot\index.js:4:16)
    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)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
    at node:internal/main/run_main_module:17:47 {
  [Symbol(code)]: 'CLIENT_MISSING_INTENTS'
neat lintel
#

Tu as pas du mettre les gateway intents ou tu en a mis une invalide

cursive ember
#

je sais pas trop ce que sais j'ai suivie un tuto de quelquin sur le site de GCA

neat lintel
#

le quel stp ? si tu as le lien sous la main

#

meme si je suis pas sur que il existe des tutos a jour avec la V13

slim anvil
#

Le tuto est pas à jour c’est sur la version 12

#

Je vais update le tutoriel pour l’indiquer

cursive ember
#

Mais ducoup je dois faire quoi pour que sa marche

slim anvil
#

Ok c’est indiqué déjà suffit juste de lire 😉

neat lintel
cursive ember
neat lintel
#

Tu devrais quand meme le faire en V13 car si tu fais un bot en V12 et que dans 1 mois ca marche plus tu devras en plus le mettre a jour

cursive ember
#

Ouais mais je comprend rien et maintenant il me dit que mon token est invalide

neat lintel
cursive ember
#

ah non c'est bon je m'etait juste trompé

ancient sonnetBOT
#
Résultats de la recherche: split

split
str:split() divise une chaîne en utilisation un motif pour déterminer où doivent être fait les séparations, en retournant un ensemble de nœuds contenant les chaînes résultantes.

Example:

str:split(chaîne,motif)

String.prototype.split()
La méthode split() divise une chaîne de caractères en une liste ordonnée de sous-chaînes, place ces sous-chaînes dans un tableau et retourne le tableau. La division est effectuée en recherchant un motif ; où le motif est fourni comme premier paramètre dans l'appel de la méthode.

Example:

str.split([separator[, limit]])

Text.splitText()
La méthode Text.splitText() sépare le nœud Text en deux nœuds au niveau de l’indice spécifié, et conserve les deux nœuds dans l’arbre en tant que voisins.

Example:

noeudRemplacant = noeudTexte.splitText(indice)
fading glacier
keen narwhal
#

J essaye demain

keen narwhal
#

merci @fading glacier ça marche

keen narwhal
#

enfin à moitié car un coup ça donne ça

#

et apres

peak cedar
#

Yop les guys ptite question

#

Mon select menu

#

marche mes channel se set bien de catego

#

tout marche

#

Ptite question jvoudrais faire les permission

#

Comment je fait pour trouver

#

qui a react a mon select menu

#

pour lui add la perm de voir le chann ?.

#
            const user = interaction.options.getUser('target');


``` marche po
fading glacier
#

Tu veux trouver la personne qui utilise le select menu ?

peak cedar
#

oui

fading glacier
#

Okay, donc c'est interaction.user

peak cedar
#

Merci jvai teste bg

peak cedar
#

mais dcp y se set plus de parent

#

de cate

fading glacier
#

pour le parent tu peux le mettre directement dans les options de <Guild>.channels.create()

#

Comme type, tu ajoutes ta catégorie comme ça

peak cedar
#

oula jsais pas comment m'y prendre grandhackeurdelinternet

fading glacier
#

Quand tu crées un salon, tu mets des options (type, permissionOverwrites, etc...)

#

Tu peux en rajouter une nommée parent où tu met la catégorie dans laquelle tu veux que le salon soit

peak cedar
#

Oh ok jvais le faire merci bg

#

GOOD ?

#

C good MerCIIII <333

neat lintel
#

juste le type text c'est pas correct. C'est GUILD_TEXT mais vu que c'est la valeur par défaut tu as pas forcément d'erreur.

fading glacier
#

yes

peak cedar
keen narwhal
fading glacier
#

C'est quoi le problème qu'il y a maintenant ?

keen narwhal
#

bah un coup ça met dans l'embed quel est votre titre (ou autre choses) et un coup ça le fait

#

regarde les screens

fading glacier
#

Montre le code que tu as mtn

keen narwhal
#

(oui ya plussieurs fois le meme filter mais je pensais que ça veait de là)

#

donc j'en ai fait plusieurs

#

@fading glacier

fading glacier
#

T'as pas besoin de ping tout le temps, si je réponds pas c'est que je suis occupé ou que j'ai pas la réponse 🙂

coarse trench
#

Hello comment avoir la data de discord avec l'event ready (temps similaire à message.createdTimestamp) ?

neat lintel
#

tu veux récupérer quel donnée ?

coarse trench
#

date*

#

pas data excuse

fading glacier
#

tu cherches la durée depuis laquelle le bot est en ligne ?

fading glacier
#

Explique mieux ce que tu cherches pls Sueur

coarse trench
#

Avoir le temps actuel

#

Mais pas sous forme de date

neat lintel
#

Date.now() alors

fading glacier
#

Date.now()

#

rip trop rapide 😢

neat lintel
#

Avec un objet date tu fais ce que tu veux après. Par exemple new Date() et ensuite si tu veux les heures tu as getHours(), pour les minutes getMinutes() etc

coarse trench
#

oeoe tkt

#

je voulais juste Date.now()

#

thx

dire latch
#

@keen narwhal ta trouver ton soucis ?

keen narwhal
#

Nn

dire latch
#

Ta commande et ton filter/collector est dans le même fichier ?

keen narwhal
#

oui

wheat birch
#

Hello, est ce que quelqu'un aurait une idée de comment faire pour que je puisse utiliser en dehors de la fonction des variables qui utilise la latitude et la longitude ?

lone flax
#

Bon les amis j'ai un réel problème

#

Pour un système de suggestions j'essaye de récupérer le nombre de réactions positives et négatives d'un message en partant de son ID

#

Et, pour une raison qui m'est inconnue, cela ne fonctionne QUE sur les messages qui ne sont pas en cache.

#

C'est-à-dire que si j'envoie une suggestion, elle est save en DB avec le msg_id, le système ne détecte que les réactions de base du message (celles du bot) et pas celles des utilisateurs. Mais si je redémarre le bot, celui-ci va update les réactions et le système va fonctionner.

#

Je me doute que c'est un souci de cache, mais j'ai tout essayé depuis 3 jours et rien ne fonctionne.

neat lintel
#

tu as mis des partials ?

lone flax
#

J'utilise ReactionMessage.resolve() pour récupérer les réactions

#

Il y en a liés aux réactions ?

#

Décidemment moi et la v13...

neat lintel
#

oui il y en a une qui s'appel REACTION, essaye la avec "MESSAGE"

lone flax
#

C'est horrible parce que niveau doc il y a rien quoi, j'ai fais des 10aines de recherche et personne ne parle de ça

neat lintel
#

Ca c'est si tu passe pas l'évent messageReactionAdd principalement, sinon faudra essayer la méthode fetch

lone flax
#

Non justement

#

Je le récupère toutes les X minutes

#

Et ReactionMessage.fetch n'existe pas

#

Il y a que resolve

neat lintel
#

Ah d'ac, alors vérifie les intents, les partials et ensuite si nécéssaire faut fetch si il manque des données

lone flax
#

Il y a un INTENT pour les réactions tu penses ?

neat lintel
neat lintel
#

GUILD_MESSAGE_REACTIONS

lone flax
#

Oui mais Reaction.fetch ne me permet pas de compter le nombre de réactions sur un message si ?

#

Ok je vais test thx

#

Surement ca

neat lintel
lone flax
#

Ouais c'était donc mon probleme

neat lintel
#

Oui du coup djs pouvait pas mettre a jour le cache

lone flax
#

Yes c'était donc ça, ça marche, merci

fluid vortex
#

Qui peut m’aider pour le code ipinfo

fading glacier
fluid vortex
fading glacier
#

Une fois que t’as mit le code vas ici: https://ipinfo.io/signup, créer toi un compte, un projet et récupère le token api que tu mets dans ton code (c’est écrit)

fluid vortex
fading glacier
#

Bah après faut adapter ton code

#

Fais un screen de ton code

fluid vortex
fading glacier
#

Et le message que tu as en console c’est quoi ?

#

@fluid vortex

fluid vortex
#

Oui j’ai pus le screen car j’ai éteint le pc

fading glacier
#

Ok bah ping moi quand tu pourras montrer le message je te répondrais demain si qqn ne l’a pas fait avant

fluid vortex
#

Ok merci

keen narwhal
#

qui pourrais m'aider svp ?

queen ocean
#

Ton bot semble ne pas avoir accès a un channel

keen narwhal
#

bah justement

#

je ne sais pas le quel ahah

#

c'est bon j'ai trouvé

ashen rapids
runic quartz
#

Hello, je cherche ce que je pourrais utiliser pour convertir des secondes d'une bdd en "play time"
Du genre 108000 affichera "1d 6h 0m"

kind agate
#

unix timestamp

ancient sonnetBOT
#
Résultats de la recherche: split

split
str:split() divise une chaîne en utilisation un motif pour déterminer où doivent être fait les séparations, en retournant un ensemble de nœuds contenant les chaînes résultantes.

Example:

str:split(chaîne,motif)

Text.splitText()
La méthode Text.splitText() sépare le nœud Text en deux nœuds au niveau de l’indice spécifié, et conserve les deux nœuds dans l’arbre en tant que voisins.

Example:

noeudRemplacant = noeudTexte.splitText(indice)

String.prototype.split()
La méthode split() divise une chaîne de caractères en une liste ordonnée de sous-chaînes, place ces sous-chaînes dans un tableau et retourne le tableau. La division est effectuée en recherchant un motif ; où le motif est fourni comme premier paramètre dans l'appel de la méthode.

Example:

str.split([separator[, limit]])
livid needle
#

Salut tout le monde je galere pas mal a l'utilisation de la fonction splitet pour creer une commande slash, du monde pourrait m'expliquer svp?

neat lintel
#

Tu galère sur quelle partie ?

livid needle
#

alors, ma commande slash ne fonctionne pas alors qu'il me semble l'avoir créer correctement.

Et je ne comprend pas comment utiliser la fonction split, comment elle récupère et pose dans une variable

#
const { SlashCommandBuilder } = require('@discordjs/builders');
const prefixe = new SlashCommandBuilder()
    .setName('prefixe')
    .setDescription('Permet de modifier le préfixe');


client.on("interactionCreate", interaction => {
    if(interaction.isCommand()) {
        if(interaction.commandName === "prefix"){
            interaction.reply("pong")
        }
    }
})
neat lintel
#

mais c'est quoi le problème concrètement ? la commande apparait sur discord ? tu as un echec de l'intéraction ?

livid needle
#

elle n'apparait pas sur discord

#

j'ai aucun crash mais impossible de la retrouver sur discord

neat lintel
#

si c'est une commande globale ca peut prendre jusqu'a 1h avant que elle apparaisse

#

du a une mise en cache du coté de discord

livid needle
#

donc la faudrait que je lance le bot et que j'attende 1H00 avant de réessayer ?

neat lintel
#

oui, ou tu enregistres ta commande sur une seul guild le temps de dev, c'est instantané comme ca

livid needle
#

Comme je m'y connait pas encore des masse, j'ai pas compris, je prefere attendre

timid loom
#

@livid needle il faut que tu inscrive ton interaction pour pouvoir l'utiliser
En reprenant l'exemple du guide (https://discordjs.guide/creating-your-bot/creating-commands.html#command-deployment-script), tu peux par exemple faire :

const { SlashCommandBuilder } = require('@discordjs/builders');
const { REST } = require('@discordjs/rest');
const { Routes } = require('discord-api-types/v9');

const TEST_SERVER_ID = 'id de ton serveur de test';
const commands = [
    new SlashCommandBuilder()
        .setName('ping')
        .setDescription('Répond pong'),
    new SlashCommandBuilder()
        .setName('prefixe')
        .setDescription('Permet de modifier le préfixe'),
]
    .map(c => c.toJSON());


client.on('ready', () => {
    // on inscrit toutes les commandes sur discord
    const rest = new REST({ version: '9' }).setToken(client.token);

    rest.put(Routes.applicationGuildCommands(client.id, TEST_SERVER_ID), { body: commands })
    .then(() => console.log('Successfully registered application commands.'))
    .catch(console.error);

    // ...
});

client.on("interactionCreate", interaction => {
    if(!interaction.isCommand());

    switch(interaction.commandName) {
        case 'ping': return interaction.reply('pong');
        case 'prefixe': return interaction.reply('commande de changement de prefix');
    }
})

// ...
#

ça te présentera les concepts de base

livid needle
#

j'y suis aller mais je comprend rien dessus ^^"

#

Mais merci pour l'aide je vais l'annalyser

subtle jackal
#

Bonsoir j'avais une question voila

#

j'ai un serveur Gmod donc un discord et plusieurs discord anexe

#

je voudrais faire un bot ou il syncronise tout les idsocrd example :

#

je Ban un jouer via cette commande !ball SONID Raison et sa le ban de partout

#

je voudrais savoir comment faire

subtle jackal
#

?

hazy mirage
#

Salut 👋
Actuellement le bot est déjà en place sur les serveurs ?

La logique serait de faire quelque chose de similaire dans le code de ta commande:

for (const guild of client.guilds.cache) {
  const member = await guild.members.fetch(id)
  if (!member) continue;
  member.ban({ reason: 'Bannissement global ...' }}
}
subtle jackal
#

mais du coup il faut une base de données ?

hazy mirage
#

ça dépend, si ton bot est voué a être publique alors oui il faut venir stocker le ban et au join d'un nouveau serveur venir bannir tous les membres bannis dans ta db

#

sinon si c'est un bot plutot privé ou il sera sur un nombre de guildes fix tu peux bannir d'un coup comme le code sans stocker

subtle jackal
#

mais pour faire comprendre au bot en lui disans si je ban tel personne du discord principal et bas sa le ban des discord de la commu

#

tu sais pas si une vidéo explique cela ou autre un article ?

#

@hazy mirage

oak turret
#

bah c'est pas compliqué en soi, tu viens ban le mec sur ton serveur, et ensuite tu get l'user de ton autre guild et tu le ban

keen narwhal
#

Salut j'aurais besoin de quelqu'un qui puisse m'expliquer rapidement quelque chose en discord js en mp merci de votre précieux temps !

slim anvil
#

Hello @keen narwhal si tu as un soucis c'est directement ici

keen narwhal
#

D'accord

#

Salam quelqu'un aurait un tuto ou pourrais m'expliquer comment faire des embes avec des réponses à choix en discord JS
Merci d'avance

neat lintel
#

tu entends quoi par des réponses au choix ? un select-menu ?

keen narwhal
#

Oui

neat lintel
keen narwhal
#

Merci

clear crater
#

Bonjour petite question je suis actuellement la doc de discord pour les select menus mais la commande n'exécute rien

Merci de votre aide et voici mon code de test dans mon index

neat lintel
#

tu lui dit

  • Si le paramètre est une commande alors ne fait rien
  • Si le nom de la commande n'est pas "ping" ne fait rien
#

Tes 2 conditions se contredisent

clear crater
#

Je vois bien l'erreur merci beaucoup mais je début et donc comment y remédier

neat lintel
#

Tu enleves la première condition

clear crater
#

Toujours un petit problème rien ne se passe

neat lintel
#

Mets un console.log de interaction.commandName pour voir

fading glacier
#

Est-ce que tu as bien enregistré ta commande ?

#

(Pour qu’elle s’affiche sur Discord)

clear crater
neat lintel
#

faut faire un handler