#javascript-typescript

1 messages · Page 94 of 1

slim anvil
#

500mo avant de les remplir t’as le temps

#

crois moi mdr

neat lintel
#

l'interet du local ca va surtout etre les performances

slim anvil
#

L’avantage du cloud c’est que tu as rien a mettre en place au niveau backup etc mais après si tu t’en fous de tout ça oui autant partir sur du local

#

tu peux toujours le faire aussi mais c’est plus relou car là c’est juste un bouton

neat lintel
#

oui c'est sur, ca dépendra vraiment des projets

opal mantle
#
C:\Users\louis\Desktop\Discord\Développement>node index.js
C:\Users\louis\Desktop\Discord\Développement\index.js:7   
const client = new Client({
      ^

SyntaxError: Identifier 'client' has already been declared
    at Object.compileFunction (node:vm:352:18)
    at wrapSafe (node:internal/modules/cjs/loader:1031:15)
    at Module._compile (node:internal/modules/cjs/loader:1065:27)
    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

#

je comprend pas :/

#

désormais j'ai cette erreur

neat lintel
#

tu as déclaré 2 clients

opal mantle
#

comment je règle ça ?

neat lintel
#

en en déclarant que un

opal mantle
#

yes

#

c'est la dedans ?

neat lintel
#

oui regardes tu as 2 clients

opal mantle
#

c'est quel ligne que je dois retirer ?

neat lintel
#

a toi de voir

#

et ensuite tu as pas importé Intents

opal mantle
#

c'est compliqué

burnt perch
#

moins que tu le pense mais ne te jette pas comme ça dans le truc sans trop comprendre pense à faire un tour par la doc pour comprendre celle de djs et hyper cool je trouver

twin bane
#

Bonsoir, j'ai quelque problème avec les slash command, j'ai tout le temps la même erreur Commande d'interaction d'application invalide , je ne comprend pas, voila mon code, merci d'avance pour l'aide ^^

const SlashCommand = require('../Structures/SlashCommand');
const { MessageEmbed } = require('discord.js');
const {SlashCommandBuilder} = require("@discordjs/builders");

module.exports = class extends SlashCommand {
   constructor(...args) {
       super(...args, {
           aliases: [],
           description: 'Ping le bot',
           category: 'Utilities',
           usage: '[command]',
           slashcommand_builder: (new SlashCommandBuilder()
               .setName(`pinggg`)
               .setDescription(`Ping le bot`)
               ).toJSON()
       });
   }

   async run(interaction) {
       const embed = new MessageEmbed()
       .setColor('2F3136')
       .setDescription(`API: ${Math.round(interaction.client.ws.ping)}ms\nUptime: ${ms(interaction.client.uptime)}`)
       return interaction.reply({
           embeds: [embed],
           ephemeral: true
       });
   }
};
neat lintel
#

ta slash-commande existe plus, elle reste juste dans le cache sur le client discord

#

pour régler ca faut le temps de dev utiliser les commandes sur une seul guild

twin bane
#

c'est se que je fais, j'ai mon bot que sur un serveur

neat lintel
#

non mais avec un paramètre guildId dans le set

keen narwhal
#

Re j'ai encore un pb

twin bane
neat lintel
#

quand tu enregistres tes slash-commands

twin bane
#

oui est bah justement, j'ai 0 paramètre GuildID ?

keen narwhal
neat lintel
sinful forge
#

Hey, je recherche un moyen pour interagir avec les pages d'internet avec un programme, genre le prog clic sur le bouton que je lui dit auparavant.
seriez vous comment faire, avec ou sans dependances

keen narwhal
#

Salut j'ai un problème j'ai encore fais un bot discord mais cette fois çi rien ne se passe quand je fais la commande

const { Client, Intents } = require('discord.js');
const client = new Client({ intents: [Intents.FLAGS.GUILDS] });
require('dotenv').config();

client.on('ready', () =>{
    console.log('Le bot est connecté')
})

client.on('message', (message) =>{
    if(message.content === '/command1'){
        message.channel.send('reponse 1')
    }
})

client.login(process.env.token);
#

Y'as pas de message d'erreur ni rien

neat lintel
#

Tu as pas mis l'intent GUILD_MESSAGES

#

donc tu peux pas recevoir de messages

keen narwhal
#

ah mais oui

#

merci

neat lintel
#

de rien

keen narwhal
#

Re bon j'ai essayé comme j'ai pu de faire une sorte de log assez poussé et donc j'ai fais en sorte qu'a chaque fois que qqn envoie un message, le bot le renvoie dans un salon spécifique, alors ça marche mais à chaque fois que j'envoie un message je reçois ça dans le terminal

neat lintel
#

remplaces message par messageCreate

keen narwhal
#

J'ai deja mis

neat lintel
#

Tu dois avoir un autre listener message alors

keen narwhal
#

ah oui

neat lintel
#

voila

keen narwhal
#

ah niquel merci

keen narwhal
#

Re j'arrive pas à faire en sorte que si qqn envoie le mot insulte il soit supprimé :/

#

ah bah non c'est bon je viens de résoudre le pb

#

avec la documentation sous les yeux en meme temps

sharp grail
keen narwhal
#

euh

#

je sais pas

#

Ce que j'ai fais c ça

slim anvil
#

ta condition n’a pas de sens

#

le === ok mais ensuite t’as voulu dire quoi ?

keen narwhal
#

ah

slim anvil
#

après le ||

keen narwhal
#

Sans ce qu'il y à apres le || si j'envoyais un message et que ensuite j'envoyais insulte le message ne se supprimais pas

#

du genre "ceci est une insulte"

slim anvil
#

ok mais là ta condition c’est :

#

si mon message est égale à insulte
Ou si
message insulte message

keen narwhal
#

oui

#

et donc 🤔

slim anvil
#

Bah ça ne veut rien dire la deuxième partie

keen narwhal
#

Faut que je mette if(message.content === 'insulte' || message content === message + 'insulte' + message) ?

slim anvil
#

/8’

#

oui

keen narwhal
#

ah ok

slim anvil
#

Enfin je comprend quand même pas le message + insulte + message

keen narwhal
#

c'est pour rendre le code plus compréhensible ?

slim anvil
#

ce sera toujours faux mdr

keen narwhal
#

ah

slim anvil
#

Imaginons tu reçois « toto »

keen narwhal
#

oui

slim anvil
#

Tu peux pas venir checker que ton message = toto insulte toto

#

Car tu reçois que toto

#

Donc ce sera forcément faux

keen narwhal
#

euh

slim anvil
#

je sais pas ce que tu cherches à faire

#

Mais la c’est faux

keen narwhal
#

Bah avant si j'envoyais un message et qu'ensuite j'envois 'insulte'

#

le message ne se supprimais pas

#

et avec le ben il se supprime 🤷

sharp grail
#

je comprends pas ce que tu veux dire

#

surtout que ta condition fonctionne toujours

#

car message + 'insulte' + message sera toujours converti en true

#

enfin associé à

keen narwhal
#

je comprends pas

keen narwhal
sharp grail
#

Bah en gros tu veux que si un message contienne insulte ça supprime le message ?

keen narwhal
#

oui

oak turret
#

message.content.includes("mot")

#

dans ton if et voilà

sharp grail
keen narwhal
#

ah mais oui

#

ah oui ok je vois

#

oh boy

oak turret
#

tout simplement

keen narwhal
#

merci

oak turret
#

de rien

keen narwhal
#

Je me complique la vie

oak turret
#

tqt on est là pour donner des tips 👌🏻

keen narwhal
#

et aussi j'avais une autre question

oak turret
#

yes

keen narwhal
#

est ce que c'est possible d'envoyer un message quand qqn rejoint un salon vocal ?

oak turret
#

oui

keen narwhal
#

pcq je trouve pas comment faire sur la documentation

#

si qqn a un lien ou une explication

oak turret
#

la même manière

keen narwhal
#

de quoi ?

oak turret
#

bah tu get un channel avec l’id et tu send

keen narwhal
#

ah non mais avec le if

sharp grail
keen narwhal
#

if machin rejoint le channel vocal

oak turret
#

ahhh

#

bah il a répondu

keen narwhal
#

ok ok merci

#

alors en vrai j'ai pas trop compris

oak turret
#

tu dois get le type de l’ancien channel de l’user et le nouveau

#

c’est un peu un bordel mais c’est assez simple finalement

keen narwhal
#

pourquoi l'ancien ?

oak turret
#

pour get si il vient de rejoindre ou non

keen narwhal
#

mais sa c a mettre apres le if nn ?

oak turret
#

non c’est un event à part

keen narwhal
#

client.channels.cache.get('id du channel')

#

comme ça ?

#

ah mais non c'est à part

#

oh misère

oak turret
#

c’est un event quoi

keen narwhal
#

l'event c'est ce qu'il y à entre parenthèses en première ligne ?

oak turret
#

??

#

comme message quoi

slim anvil
#

parce que bon mdr

keen narwhal
#

excusez moi x)

#

Bon j'ai fais ça

client.on('guildMemberUpdate', (ancien, nouveau)){
    if(client)
}
#

Mais bon apres ben voila quoi hein

cyan iron
#

C'est moche de mettre tes variables en français suefort

#

Je te conseille de garder les notations de base de la lib

#

Surtout si tu débutes

keen narwhal
#

okok

oak turret
#

on s’en contre fou du client sur ça

#

log old, et new

#

tu verras, et après tu devras check les types

keen narwhal
#

ok

dire latch
#

C'est pas dans un voiceStateUpdate plutôt ? @oak turret @sharp grail 🤔

sharp grail
#

my bad

#

tu as raison

dire latch
#

@keen narwhalchange ton guildMemberUpdate en voiceStateUpdate

oak turret
#

oui aussi

keen narwhal
#

ah ok

sharp grail
#

ouh

keen narwhal
#

je savais pas quoi mettre dans le if

#

et du coup j'ai paniqué

ashen rapids
#

Faut mettre des espaces dans ton code :(

cyan iron
#

Clic droit => Format Document

oak turret
#

nuw, ish

oak turret
keen narwhal
#

je pouvais pas mette new @oak turret

oak turret
#

pourquoi chirac

slim anvil
#

Car c’est un opérateur js donc inutilisable en clé

#

Comme function et d’autres

#

delete aussi

#

après de là à mettre Nuw kappo

keen narwhal
#

fallait bien mettre qqch hein x)

sharp grail
#

comparer deux objets c'est pas ouf ouf

keen narwhal
#

ah

oak turret
#

oldChannel, newChannel

#

log tes trucs comme je t’avais dis

#

et tu comprendras mieux

keen narwhal
#

ok

#
    const oldChannel = 
    const NewChannel = 
})```
#

C'est bien comme ça ?

#

c un bon début plutot

slim anvil
#

Tu cherches à faire quoi avec const oldChannel = ?

#

et@pareille pour la ligne du dessous

keen narwhal
#

On m'a dit de faire comme ça

#

enfin je crois

#

ou alors j'ai mal interpreté

ancient sonnetBOT
#
Citation du message de Hareng#2620 posté dans #javascript

QuoteS Grace à l'évènement guildMemberUpdate principalement, tu compares l'ancien membre au nouveau et si il s'est maintenant dans un salon vocal (ou dans un nouveau éventuellement) tu peux send ton msg QuoteE

➜ [Voir le message original](#javascript-typescript message)

slim anvil
#

Tu compares pas la

#

Ton if de tout à l’heure était bon

#

Enfin tu commençais bien

keen narwhal
#

oui mais faut bien les mettre les const ?

sharp grail
#

en fait

keen narwhal
#

oui

sharp grail
#

voicestateupdate a deux paramètres

#

l'ancien voice state du membre

#

et la nouvelle

keen narwhal
#

ok

sharp grail
#

donc

#

avec ça tu devrais pouvoir imaginer comment réaliser ce que tu voudrais faire

keen narwhal
#

ouais je vais voir

twin bane
#

hello ^^ personne aurait un command handler open source ( avec les slash command ^^ ) merci d'avance

slim anvil
#

le projet de @neat lintel va pouvoir t’aider

twin bane
#

bonsoir j'aimerai savoir comment vider le cache des slash command de mon bot car quand je fais / des commands qui n'existe plus s'affiche

neat lintel
#

Pour les commandes globales faut attendre jusqu'à 1h après leur suppression.

#

Il y a pas de moyen de les enlever instantanément

sharp grail
#

globalement ça s'enlève quand même plutot rapidement

#

enfin ça s'edit / ajoute

oak turret
#

pas de ouf non

#

pour ça que j’en fais pas d’ailleurs plus chiant qu’autre chose ces trucs

ashen rapids
#

Vous avez des nouvelles pour la gestion des events sur DiscordJS ?

#

On s'y retrouve plus sur leur site

oak turret
#

comment ça

ashen rapids
#

Les events Discord (ce que t'as en haut de chaque serveur)

neat lintel
peak cedar
#

@neat lintel enfin good la maj xddd

neat lintel
#

Super 👌

pallid plume
#

Salut salut question bête je pense mais je comprend pas trop pourquoi alors une explication serait la bienvenue. J'utilise VueJS est dans le style du fichier App.vue il ne trouve pas ma div portant l'id container mais j'arrive pas à comprendre pq ? ( si je le passe sur la div ça me tue tout l'affichage du component Card ( j'ai testé pour voir ) )

slim anvil
#

ton id dans ta div

#

T’as mis le #

pallid plume
#

Merci

slim anvil
pallid plume
#

D'un coup ça marche bcp mieux

slim anvil
#

D’ailleurs tu pourrais lancer ta requête on beforeMount

pallid plume
#

ça ferais que la page s'affiche pas tant que le fetch est pas complet ?

slim anvil
#

non juste ça lancera la requête avant que ton composant soit complètement monté

#

Donc tu gagnes un peu de temps

pallid plume
#

Ah ok je vois

#

En gros pendant la construction de la page la requete se lance en parallèle

#

Je peux pas même le faire encore avant en vrai

slim anvil
#

Oui au created aussi par exemple

pallid plume
#

Ok c'est bien ce que je me disais

slim anvil
#

Ce sera toujours ça de gagner

fair surge
#

salut

#

j'ai un soucis pour ajouter une image sur un embed

#
const file = new MessageAttachment(`rewards/${reward.file}`, `${reward.file}`);
log.setImage(file);```
#

embeds[0].image.url: Could not interpret "{'attachment': 'rewards/image 23.jpg', 'name': 'image 23.jpg'}" as string.

hazy mirage
#

oui je pense que l'espace vient poser probleme dans l'url essaye d'avoir un fichier qui ne contient pas d'espace peut etre

fair surge
hazy mirage
#

ah ok shrug tu as essayer de regarder sur google ?

fair surge
#

mais ça envoie l'image en dehors de l'embed

hazy mirage
#

je vais tester un truc

keen narwhal
#

Salut j'arrive pas a faire un menu avec discord js, je vous partage mon code (j'ai suivi un tuto)

#

c'es t lors de l'execution de la commande que rien ne se passe

hazy mirage
# fair surge oui, on m'a dit de faire ça : ```js if (reward.file) { attachment = new Messa...

⤴️ Du coup, j'ai testé ça en v13 et cela fonctionne:

  const attachment = new Discord.MessageAttachment(`${le path de ton image}`, 'image.jpg');
  const embed = new Discord.MessageEmbed()
    .setTitle('Welcome to the server!')
    .setDescription('This is a test server. Please read the rules and have fun!')
    .setColor('#0099ff')
    .setImage('attachment://image.jpg')

  const channel = ...// ton channel
  await channel.send({ embeds: [embed], files: [attachment] }).catch(console.log)
keen narwhal
# pallid plume

Désoler du ping, tu as un site a conseillé pour faire ça rapido? 😩

pallid plume
keen narwhal
#

Je note ça dans un coin de ma tête, merci bg

sharp grail
#

sinon t'as bien ton handler de command et d'events de setup ?

keen narwhal
#

neanmoins ça marche toujours pas :/

sharp grail
keen narwhal
#

umh

#

j'ai fais que ça

sharp grail
#

tente un console log pour voir si le code s'exe

#

mais je pense pas

keen narwhal
#

nan en effet ça marche pas

#

J'ai une question peut etre bete

#

comment le menu peut se mettre si on a pas mit de client.on ?

sharp grail
#

Je comprends pas ta question

keen narwhal
#

ben moi j'ai appris à faire client.on pour faire une commande

#

client.on('messageCreate')

#

et la j'ai pas mis

sharp grail
#

Il faut que tu comprennes que client.on c'est pour les events

keen narwhal
#

ah

keen narwhal
keen narwhal
pulsar fiber
#

hey hey jai besoin d'un conseil . je cherche a faire un bot qui envoie des embed personalisée avec les / commande

#

tout marche nickel sauf

#

la couleur personalisé

#

le bot me renvoie TypeError [COLOR_CONVERT]: Unable to convert color to a number.

#

quand je mest par exemple RED

#

si quelqun a une idée

worldly plank
#

C'est de l'hexa

#

qu'il faut mettre

#

#ff00

#

essaie ca

#

c'est du rouge (de tête)

#

@pulsar fiber

#

évidemment tu le met sous forme de string

#

'#ff00'

pulsar fiber
#

okay merci et tu sais pas si il ya moyen de rester sur lecriture des commande ?

worldly plank
#

Comment ca ?

pulsar fiber
#

genre de base quand tu fais un embed dans le code tu peut ecrire red

#

et il est rouge

#

et jaimerais garder ce systeme car c'est simple et le bot est juste pour un serveur entre pote

pulsar fiber
#

?

upper owl
# pulsar fiber et il est rouge

Je pense que tu peux faire un dictionnaire avec un nom de couleur associée à une valeur hexa, après tu peux juste convertir avec ce dict.

pulsar fiber
#

oula alors oui mais comment ?

slim anvil
#

Tu peux faire un objet tout simplement avec clé et valeur

#

Donc Colors = { red: "#ffffff" }

#

et faire un colors[arg]

pulsar fiber
#

ah , oui daccord moi je voulais juste utilisez ca mdr

slim anvil
#

et Colors[arg] va te return la value

#

Ah les couleurs de base

pulsar fiber
#

mais votre truc a l'air vachement plus complet

slim anvil
#

bah tu vas pouvoir agrandir le nombre de couleur à la limite

pulsar fiber
#

effectivement merci beaucoup

#

et derniere petite question pour les commandes /

#

comment je les restreint mdr

slim anvil
#

T’as un truc sur les permissions

oak turret
#

1 réponse = 1€..

pulsar fiber
#

oula bas je vais devenir pauvre mdr jetais deja pas bien riche merci ovh

slim anvil
#

je l’ai plus en tête mais tu peux limiter au.x permission.s

oak turret
#

t'utilises djs ou sheweny ?

slim anvil
#

Mais pas rôle je crois

pulsar fiber
#

jai regarder la doc mais c'est incomprehensible pour moi

slim anvil
#

après sheweny utilise djs donc bon kappo

oak turret
oak turret
pulsar fiber
#

je peut pas cibler tout les utilisateur ?

#

genre desactiver une commande pour tout le monde sauf pour 2 ou 3 personne?

oak turret
#

bah tu fais une perm everyone, et les celles que tu veux ensuite

#

par exemple look

pulsar fiber
#

javais pas vue dacc merci beaucoup

#

et donc les permision c'est par commande j'imagine

oak turret
#

yes

#

après je sais que tu peux restreindre l'utilisation des slash commands dans les channels et/ou rôles

pulsar fiber
#

c'est cool ca aussi mdr

#

je definis les permision avant mon data : ?

oak turret
#

tu m'en diras tant

#

je fais pas de / commandes donc là je pourrais pas + te renseigner

pulsar fiber
#

Je test et te redis alors merci beaucoup

oak turret
#

tqt ^^

pulsar fiber
#

@oak turret jaurais besoin d'un eclairaige stp mdr quesque que .fetch()

#
if (!client.application?.owner) await client.application?.fetch();

const command = await client.guilds.cache.get('123456789012345678')?.commands.fetch('876543210987654321');```
oak turret
#

lequel

pulsar fiber
#

bas je comprend pas c'est quoi le deuxieme id a la fin

#

le premier c'est la guild donc ca ok mais le deuxieme ?

#

je comprend plus rien mdr

oak turret
#

c'est l'id de la commande

#

je suppose

pulsar fiber
#

alors possible mais je definis pas d'id pour mes commande moi mdr

oak turret
#

c'un id généré par discord à mon abid

#

avis*

pulsar fiber
#

ah je vais regarder

#

je vais aller dormir et je ferais ca a tete reposer demain mdr merci du coup de main ^^

lime mason
oak turret
#

nice job!

flat sandal
#

Il a fait sa pub tranquille

lone flax
lime mason
#
{
    "window.menuBarVisibility": "toggle",
    "editor.fontFamily": "Fira Code",
    "editor.fontWeight": 600,
    "editor.fontLigatures": true,
    "terminal.integrated.gpuAcceleration": "on",
    "explorer.confirmDelete": false,
    "explorer.confirmDragAndDrop": false,
    "customizeUI.activityBar": "bottom",
    "customizeUI.activityBarHideSettings": true,
    "workbench.editorAssociations": {
        "*.ipynb": "jupyter-notebook"
    },
    "notebook.cellToolbarLocation": {
        "default": "right",
        "jupyter-notebook": "left"
    },
    "workbench.startupEditor": "none",
    "tabnine.experimentalAutoImports": true,
    "security.workspace.trust.untrustedFiles": "open",
    "terminal.integrated.automationShell.linux": "/usr/bin/zsh",
    "terminal.integrated.defaultProfile.linux": "zsh",
    // "terminal.integrated.cwd": "~/Development",
    "git.autofetch": true,
    "explorer.compactFolders": false,
    "editor.tabSize": 2,
    "workbench.iconTheme": "material-icon-theme",
    "remote.SSH.remotePlatform": {
        "45.231.133.72": "linux",
        "vdev.mjsv.us": "linux"
    },
    "editor.fontSize": 15,
    "typescript.updateImportsOnFileMove.enabled": "always",
    "workbench.colorTheme": "Framer Syntax",
    "window.zoomLevel": -2,
    "vscode_custom_css.imports": [
        "file:///C:/Users/nodge/Development/ember/vscode/autohide-tabs.css"
    ],
    "git.allowForcePush": true,
    "[javascript]": {
        "editor.defaultFormatter": "vscode.typescript-language-features"
    },
    "gitlens.gitCommands.skipConfirmations": [
        "fetch:command",
        "stash-push:command",
        "switch:command",
        "push:command"
    ]
}
lone flax
#

Waw tu as fais ton propre theme?

slim anvil
#

il est anglais max

lime mason
lone flax
#

Ah merde

lime mason
#
 "vscode_custom_css.imports": ["file:///C:/Users/nodge/Development/ember/vscode/autohide-tabs.css"],
```
lone flax
#

Thx

lime mason
lone flax
#

(Je rigole)

slim anvil
oak turret
#

deepL merci kappa

lone flax
#

Surtout j'ai parlé anglais

#

Mdr

lime mason
oak turret
#

how to install your hypebar ?

lime mason
# oak turret how to install your hypebar ?

i can compiled, but it would look empty since there's no widgets ready to be shipped.

if you can actually code in JS/TS i can give you the base widget and everything you need to make your own widgets

#

or wait a bit while i make the default ones.

oak turret
lime mason
oak turret
#

oh okay great, and I imagine that by stopping the process the bar returns to the default one?

lime mason
#

it doesn't remove

peak cedar
#

Slt slt ptit prob j'ai fait mon truc de warn tt marche mais j'ai fait une cmd ?uwarn pour check le nombre de warn du joueur

#

But si le joueur na pas de warn

#

donc comment je fait pour check si il a pas de warn pour

#

lui mettre un msg pas de warn ou quoi

#

?

fading glacier
#

Montre ton code

peak cedar
oak turret
#

enlève le .warns de ton log pour voir déjà

#

et stop les +...

cyan iron
#

++

oak turret
#

t'as ça qui te fera moins chier :

`${my_var} et mon texte`

Exemple :

console.log(`${true == false} ok ?`)
console.log(true == false + " ok  ?")
peak cedar
#

okok et dcp jfait comme pour check ?

oak turret
#

chaque chose en son temps

#

il te log quoi sans le .warns

peak cedar
oak turret
#

et remet le .warns ?

peak cedar
#

ça me met le nombre de warn de moi meme

#

du gars ping en gros

oak turret
#

bah c'est pas ce que tu veux ?

peak cedar
#

oe mais comment je return un msg

#

genre

#

if(warns[warnUser.id].warns){

squi ce passe si pas de warn ?

}
oak turret
#

bah

#
if ( warns[warnUser.id]?.warns ) {} // .warns existe
else {} // .warns existe pas

Dans le cas ou le .warns se créé seulement si il en a

Sinon

if ( warns[warnUser.id].warns >= 1 ) {} // il en a au moins un 
else {} // il en a pas 
#

pas besoin de mettre de else d'ailleurs tant que tu return quelque chose

#

tu me dis si tu comprends ou pas

peak cedar
#

J'ai compris Merci

#

moi j'avais tenter un truc du genre

oak turret
#

non

#

"=" set la valeur de x à la valeur que tu lui mets

#

pour check une valeur c'est ===

#

un type c'est ==

#

donc toi c'est ===

peak cedar
#

y'a pas un tableau pour ça ?

oak turret
#

un tableau ?

peak cedar
#

y'avais pas un tableau genre les symbole , a quoi y serve

#

pour pas oublier

oak turret
peak cedar
#

j'avais sans en fond decran avant sur mon ancien ordi

oak turret
#

ça s'appelle des opérateurs logiques

peak cedar
#

bien vue bg

oak turret
#

donc reprends mon code, et ça marchera mieux

#

j'ai fais deux exemples car je sais pas comment fonctionne ton système

fading glacier
#

Essayes aussi d'apprendre bien le JS avant de t'attaquer à la création de bots

oak turret
#

je sais pas si ton user à de base un .warns avec 0 par défaut ou si il en a pas avant d'avoir un warn, voilà le raisonnement de mes exemples

oak turret
peak cedar
#

mm si je devrais pas oublier ça

oak turret
#

bref, c'est tout bon maintenant ton système ?

keen narwhal
#

hey les gars

#

j'aimerais savoir ou se trouve l'imperfection

slim anvil
#

@hazy mirage

#

Me remercie pas kapp

hazy mirage
#

ptdrrrrrr 😭

queen ocean
#

HAHAHAHAH

keen narwhal
#
const data = new SlashCommandBuilder()
.setName("ban")
.setDescription("ban members")

Client.on("interactionCreate", interaction => {
    if(interaction.isCommand()){
        if(interaction.commandName === "ban")
         {
        let member = message.mentions.members.first()
        if(!member) return message.channel.send("You must mention a user")
        member.ban()
        .then(()=> message.channel.send(`${member} has been ban`))
        .catch((error)=>{
            message.channel.send("There was an error banning the member")
            console.log(error)```
#

@oak turret

#

@queen ocean

#

@hazy mirage

oak turret
#

stop

keen narwhal
#

excuse

oak turret
#

et quand on copie colle, et en ne comprenant pas 10% du code on va pas aller loin

keen narwhal
#

c moi qui a fait ce code

#

seb m'a appris

#

a lire la doc

queen ocean
#

Tu nous le montre pour faire jolie ? 👀
Il y a une erreur ? 👀
Faut donner des détails si tu veux qu'on t'aide xD

keen narwhal
#

ok

oak turret
#

apprendre à lire une doc mmLul, t'entends ça Zaros prends en de la graine

keen narwhal
#

Salut, comment ça s'appelle ça ?

#

Histoire d'aller me documenter dessus

slim anvil
#

SLASH_COMMAND

keen narwhal
#

quoi

#

mais les parametres

queen ocean
keen narwhal
#

ah d'accord j'avais mal compris

#

ok merci

#

du coup j'aimerais faire une interaction /command ban afin de bannir un membre

#

les zamies aidez moi svp

cyan iron
desert riverBOT
keen narwhal
#

nn mais je veut juste savoir comment ban l'ami

sharp grail
#

la doc ptet

#

sinon le guide

#

car là c'est basique

cyan iron
#

Sinon la doc

keen narwhal
cyan iron
#

Avec plaisir

sharp grail
sharp grail
desert riverBOT
sharp grail
cyan iron
#

Et je ne vois pas le problème dans ton code

keen narwhal
cyan iron
#

Tu as bien créé la commande ?

cyan iron
#

Premier lettre majuscule c'est pour les classes

sharp grail
#

bah le problème déjà c'est que ton msg sort de nulle part

keen narwhal
#

les gars handler une commande c'est créer un file pr chaque commande ??

cyan iron
cyan iron
#

Mais un handler c'est ça oui

keen narwhal
#

ok

#

moi je vais handler au lieu de créer a la chaine c'est mieux

oak turret
#

10 minutes plus tard

"Comment on fait un handler svp ??"

p_oof

(joke)

keen narwhal
#

@oak turret

#

Comment fait on pour garder l'icone de l'explorateur tjrs la

#

des que je vais sur un autre truc sa disparait

oak turret
#

y a écrit devin sur ma tête ?

#

de quoi tu me parles

#

avant de demander ici demande sur internet par pitié

#

google est ton ami + que nous

keen narwhal
#

nooooon ne me laisse pas !!!!!

#

est ce que qqn sait si discord js à changé entre le 1er septembre et aujourd'hui ?

oak turret
#

t'as qu'à aller voir les commits

keen narwhal
#

ca code la est toujours bon ?

#

ah non j'avais juste oublie d'ajouter une ligne de code

keen narwhal
keen narwhal
#

re cette fois çi j'ai voulu ajouter des options à ma commande slash et j'ai fais ça

#

et donc je reçois ce message d'erreur

#

Que je ne comprend pas

neat lintel
#

addChoices est une fonction

#

Il manque une parenthèse

#

La parenthèse ouvrante

keen narwhal
#

ah d'accord

#

maintenant j'ai ces deux erreures

#

Ce que je comprend pas c'est que l'erreur me dit que la value doit etre de type array 🤔

digital mirage
#

qui sait comment je pourrais ajouter une physics a un objet 3

#

D

keen narwhal
#

et tu as encore un pb de parenthésage

keen narwhal
digital mirage
digital mirage
#

ca marcherais meme avec un model

#

3

#

3D que jaurais fais sur blender

keen narwhal
keen narwhal
slim anvil
slim anvil
keen narwhal
thorn briar
# keen narwhal

De souvenir c'est un "array d'array"

ça doit rendre comme ci-dessous

.addChoices([
  ["Choix1", "test"],
  ["name", "value"]
])

ou alors

.addChoice("Choix1", "test")
.addChoice("Choix2", "test2")

Regarde avec ça et dis nous

cyan iron
#

Salut ! J'utilise la méthode resolve de path
En fait j'aimerais faire en sorte que ça fasse un délire comme ça :

resolve(__dirname, "..", "routes", "QUELQUECHOSE", folder)

En gros le QUELQUECHOSE, ça voudrait dire que ça peut être n'importe quoi !
Je vous explique : par exemple j'ai ../routes/folder ça marche
j'ai ../routes/docs/autres/aaa/folder ça marche également et ça trouve mon folder

#

Si ça n'existe pas alors tan pis

#

j'ai essayé avec ** mais rien

#

ça marche pas comme ça Dym_Cry

worldly plank
#

Alors ca peut être fait avec un REGEX ou une alternative JS de la fonction explode en php

cyan iron
#

explode ?

#

Ok je vais regarder, mais comment tu comptes faire ça avec une regex ? Thonk

#

Je t'avoue que je connais pas trop path donc je sais pas si on peut utiliser des regex

worldly plank
#

Mais en gros tu cherche à isoler le dernier Folder ?

cyan iron
#

En gros je veux juste faire en sorte d'avoir tous les fichiers .js de mon folder
Mais dans ce folder y'a des folders qui sont dans des folders, tu vois ce que je veux dire ?

#

Mais j'ai aussi besoin d'avoir le path de ces folders

#

Je crois avoir trouvé quelque chose

#

Wow c'est trop bien

#

Je vais essayer avec ça mais ça m'a l'air d'être good 🙂

#

C'est bon, merci quand même myman

worldly plank
#

Ouaip

#

On était 2 sur le coup mais aucun n'a été assez fort pour comprendre ta question mdr

cyan iron
#

Ah mdr

worldly plank
#

Et on a commencé par la question dans le salon PHP mdr

#

#brainfuk

#

On a même pas répondu car on avais pas du tout compris 😂

fading glacier
patent storm
#

Bonjour,

J'ai une requête assez particulière, j'ai un projet à rendre pour l'école où je dois compléter du code JavaScript fourni par le prof, cependant, j'y comprends rien et j'ai pas le temps d'y passer 1 mois à essayer de comprendre car c'est à rendre pour le 17/12. Y'aurai t-il une personne prête à m'aider contre un petit billet ?

Le projet traite sur la manipulation d'objet...

fading glacier
#

Montre ce que tu dois faire ça sera plus simple pour t’aider

slim anvil
#

Avant de payer met deja ton probleme ici, des gens pourront surement t'aider, t'aguiller

cyan iron
patent storm
#

En gros, dans le code il lache des // TODO en disant, ici y'avait du code à moi, a vous d'essayer de le retrouver ou de trouver comment faire pour arriver à la solution même si c'est d'une autre manière

fading glacier
fading glacier
patent storm
fading glacier
#

J’aurais sûrement pas le temps sorry

patent storm
#

okay pg merci quand même, @slim anvil j'ai pu voir t'a description, tu serais pas chaud toi 😋 ?

slim anvil
#

non sorry je vais pas faire ton devoir, hésite pas à commencer et quand tu bloques on te file un coup de main, mais pas le faire non
Si tu veux vraiment pas du tout y mettre la main à la pâte, oui là à ce moment fais une offre sur le site https://g-ca.fr/offres pour trouver quelqu'un

patent storm
#

Ah je connaissais pas ce site merci, et si si, la main à la pâte je l'ai déjà mise, juste que je commence à bloquer assez rapidement

keen narwhal
#

Salut ! J'ai un petit problème. A chaque fois que je npm install discord.js, les nodes_modules etc n'appraissent pas

slim anvil
#

évite le ghostping @keen narwhal

keen narwhal
slim anvil
#

tu es sur ?

worldly plank
keen narwhal
slim anvil
#

Je fais quoi du coup je te warn pour ghost ping ?

keen narwhal
#

sa fonctionne pas

keen narwhal
ancient sonnetBOT
#
Seklenland vient de prendre un warn
Raison

Hors-sujet/Troll ⛔

Modérateur

@slim anvil

keen narwhal
#

@keen narwhal @keen narwhal @keen narwhal @keen narwhal @hard pilot

slim anvil
#

Tiens vu que tu prend les gens pour des cons

keen narwhal
#

nan pk

pulsar fiber
#

Ptdr tout les free ping 🤣

keen narwhal
#

😫

slim anvil
#

Stop maintenant sinon ca part en Hors sujet, et stop le free-ping/ghost ping
merci

keen narwhal
#

c'est Tryste, c'est Trystan

slim anvil
#

Le prochain qui HS il prend le ban par contre

#

que ce soit clair

keen narwhal
slim anvil
#

Hors sujet

keen narwhal
#

ok

keen narwhal
#

Je savais pas comment formuler mon code

#

Alors j'ai en choix Choix1 et name et du coup j'aimerais savoir a quoi servent test et value 🤔

#

ah bah c'est le value je suis bete

keen narwhal
#

re, comment on fait pour mentionner la personne qui à effectuer un slash command quand on a mit interaction au lieu de message comme paramètre ?

#

J'ai essayer avec des client.author mais bon

fading glacier
#

interaction.user

keen narwhal
#

ah merci

sharp grail
keen narwhal
#

Oui c'est vrai

lone flax
# slim anvil Hors sujet

Cherche pas ce mec il est venu sur mon discord il a spam tout le monde pour qu'on lui fasse un bot discord, il parle super mal, et quand je lui ai dit 30€ pour son bot il a quitté le discord sans rien dire. Il est complétement malade

keen narwhal
#

salut j'ai cette erreur est ce que quelqu'un peut m'aider ?

dire latch
lone flax
#

Il est grave genant bordel

dire latch
#

Mdr

keen narwhal
#

@slim anvil tu as une idée ?

cyan iron
#

En gros tu essayes de répondre à une interaction qui visiblement n'existe pas @keen narwhal

#

ça arrive quand le bot est start en 2 fois

keen narwhal
cyan iron
#

Ton bot est démarré sur 2 instances

#

Sinon je ne sais pas désolé

iron elm
#

Salut à tous , je me permet de vous contactez au sujet des token je suis entrain de confectioner un réseau social , en suivant un tutoriel mais voila , tout aller bien jusqu'à maintenant mais quand je soumet mon formulaire de connexion . La console m'affiche 'No token' et avec Postman tout marche parfaitement .

#

Voici le controller de mon formulaire de connexion

#

et mon 'auth.middleware'

#

Pour le coter front-end j'ai utiliser react pour le backend Node JS

cursive eagle
#

Hey salut, je voulais savoir, il est possible de faire un roll aléatoire d'embed ? Si oui comment ?, merci^^

oak turret
#

exprime toi mieux

sharp grail
keen narwhal
peak cedar
cursive eagle
oak turret
#
const embedOne = ton embed
const embedTwo = ton embed
const embedThree = ton embed

let embeds = [embedOne, embedTwo, embedThree];
const roll = Math.floor(Math.random() * embeds.length);

const embedRoll = embeds[roll];

return <message>.channel.send({embeds: [embedRoll]});
#

pas plus compliqué que ça

quasi mauve
#

Bonjour j'aimerais ajouté un truc a mon code ( de la réponse automatique ) j'ai ce code pouvais m'aider

const config = require('./config.json')

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

client.on('ready', () => {
    console.log('Le bot est connecté !')

    client.user.setActivity('test bot', {
        type: 'STREAMING'
    })
})


client.login(config.token)```
fading glacier
keen narwhal
#

Qui c’est comment faire pour que les gens ne puissent pas accéder au profil du bot en cliquant sur sa photo de profil ?

sharp grail
#

Bah

#

Tu peux pas

#

C'est géré par discord

sudden cipher
#

Salut , j'aurais besoin d'un reaction roles en discord.js version 12.5.1

#

svp

#

j'en trouve aucun qui marche

neat lintel
#

Tu peux le faire toi meme, il y a rien de bien compliquer. Pour cela tu écoutes l'évent messageReactionAdd

#

Juste oublis pas de mettre la partial MESSAGE pour les messages déja envoyés

sudden cipher
#

ok donc client.on("messageReactionAdd", ??? => {
})

neat lintel
#

voila c'est un début

sudden cipher
#

après la virgule c'est ça

#

client.on("messageReactionAdd", message => {
})

neat lintel
#

il y a un 2eme paramètre

sudden cipher
#

j'ai jamais compris ce site

neat lintel
#

Ah bah c'est un problème vu que c'est la doc. Si tu comprends pas le site c'est impossible de faire un bot

sudden cipher
#

je cherche un reaction roles par emojis

neat lintel
#

oui j'ai compris et c'est avec l'évent messageReactionAdd

#

tu peux utiliser une base de donnée pour le rendre dynamique si besoins avec des commandes pour le config. Tu dois avoir, l'id du message, l'id du role, l'id du channel et l'emoji

sudden cipher
#

les 5 derniers paramètre ça aucun soucis XD

#

mais je suis extrèmement exploser en bdd

neat lintel
#

Tu en a pas forcément besoins. A toi de voir a quoi tu veux que ton système ressemble

sudden cipher
neat lintel
#

oui et bien ils écoutent l'évent messageReactionAdd et il y a des conditions pour savoir quel role ajouter

sudden cipher
#

tu aurait un code svp ?

neat lintel
#

C'est pas le but

#

Par contre si tu fais un code qui marche pas on pourra t'aider a le corriger et l'améliorer

sudden cipher
#

ok merci quand même

#

juste après ("messageReactionAdd", je met quoi ici svp )

neat lintel
#

les paramètres

copper pagoda
#

Et aussi il faut que tu enregistre le message si c'est pour un reaction role ou un truc dans le genre pour que la réaction marche après le relancement du bot.

neat lintel
#

A savoir messageReactionet User

sudden cipher
#

aync (reaction, user) => { ?

neat lintel
#

voila par exemple

sudden cipher
#

ok merci

neat lintel
copper pagoda
quasi mauve
fading glacier
#

Ok, donc tu dois écouter l’event messageCreate (ou message si tu es en v12), et après tu vérifies le contenu du message, si il contient le mot « Bonjour » tu réponds « Salut tu vas bien? »

oak turret
#
if ( message.content.includes("Bonjour") ) return message.reply({content: "Salut tu vas bien ?"});
keen narwhal
#

@slim anvil tu peux lui mettre un coup de pression pour qu'il arrête de mp les gens ?

keen narwhal
#

@hard pilot on évite de "harceler" les gens en mp ou sur le discord pour avoir un bot discord ou autre, tu peux passer commande sur le site => https://g-ca.fr/offres merci !

lone flax
#

C'est un autre Seklenland

#

Qui casse les couilles à tout le monde, j'ai eu pareil sur mon discord

#

Il est plus sur le didi

keen narwhal
#

Hello, pourriez-vous m'aider à comprendre l'erreur suivante: DiscordAPIError: Max number of daily application command creates has been reached (200). Je travaille en local pour l'instant mais je ne sais pas si c'est du aux nombreux restart / aux nombreuses commandes entrées pour faire des tests, etc..

neat lintel
#

oui ca doit etre les restarts le problème

#

Tu peux utiliser un autre bot en attendant que ca ce réinitialise

keen narwhal
#

Yep c'est ce que j'ai pu faire mais bon je vais pas faire ça indéfiniement x) J'ai la sale manie de beaucoup restart pour pas grand choses donc bon :d Merci @neat lintel !

neat lintel
#

pas de souci, après peut etre que quand les commandes sont enregistrées une fois tu peux ne plus le enregistrées jusqu'au prochain changement

#

Tu peux commenter le code pour cela ou changer des options si tu utilises un framework

idle ice
#

Hello, une idée du pourquoi quand je met des fields dans mon embed (sous Discord JS V13), si je console.log mon embed, ils y sont, mais quand je l'envoie, bah ils y sont pas ?

#
const embed = new MessageEmbed()
            .setTitle(DATA.data.title)
            .setURL("https://twitch.tv/")
            .setAuthor("---", bot.user.displayAvatarURL())
            .setColor("#8A2BE2")
            .addField("Jeu", DATA.data.game_name, true)
            .addField("Viewers", DATA.data.viewer_count.toString(), true)
            .setImage(DATA.data.thumbnail_url.replace("{width}", 1280).replace("{height}", 720))
            .setThumbnail(bot.user.displayAvatarURL())

CHANNEL.send({content: `Hey, ...`, embed: [embed]})
neat lintel
#

C'est embed__s__: [embed]

#

Dans la fonction send

fading glacier
#

Hey, je fais face à un petit problème dans le développement de mon bot. J'ai une fonction pour récupérer les gagnants d'un giveaway, avec comme arguments le giveaway en question et le message du giveaway. Je souhaite récupérer les réactions \🎉 de ce message, ce qui marche parfaitement lorsque j'appel la fonction depuis un fichier (le giveaway se termine bien).

Mon problème c'est quand je veux le reroll (avec un contextMenu que j'ai créé). Quand je passe le message (qui existe j'ai vérifier) dans la fonction pour avoir les gagnants, il me met l'erreur suivante (Screen 1).

L'endroit où il y a l'erreur: screen 2

Est-ce que quelqu'un peut m'aider ?

#

(me ping)

idle ice
keen narwhal
#

bonjour, j'ai c'est 2 erreurs comment les résoudre

#

la première c'est quand un membre fait la commande !say

#

la deuxième c'est quand un Staff fait !say

#

merci pour les aides à venir !

neat lintel
#

La première c'est que soit l'user à bloquer le bot, soit ils ont pas de serveur en commun ou des trucs comme ça

#

La 2eme c'est que tu as pas définis client.bot_emojis

thorn briar
# keen narwhal la première c'est quand un membre fait la commande !say

Hello, pour revenir sur la réponse de Smaug sur la première erreur, il n'y a que 2 possibilités:
• Soit l'utilisateur a bloqué le bot
• Soit l'utilisateur a désactivé les message privé venant de ton serveur discord (dans les paramètres de confidentialités)

Je te conseil de faire un catch sur ton sendMessage afin d'évité toutes erreur de ce type et si besoin loggé ça ^^

keen narwhal
#

Sa marche je vais essayer

keen narwhal
#

Salut salut !

J'essaye de m'initier à l'utilisation des .fetch, j'essaye de fetch tous les messages qui contiennent un mot par exemple (chose que je n'arrive pas par ailleurs mais je ne m'y suis pas trop attardé pour l'instant). Je voudrais savoir si discord impose une certaine récupération de messages maximum ?

neat lintel
#

Tu peux récupérer 100 messages à la fois

keen narwhal
#

Okey, ça devrait le faire 👍 Toute date confondue ?

neat lintel
#

Oui

#

Ce sera toujours 100 messages max

keen narwhal
#

D'acc, intéressant !

#

Merci @neat lintel ! Tu saurais m'aiguiller sur la verification du contenu d'un message ? Je fais actuellement ça:

let channel = bot.channels.cache.get(config.channelID)

if (channel.messages.fetch(m => m.content.includes(config.fetchedMessage) {

}``` (je n'arrive pas à log mes messages trouvés)
neat lintel
#

Alors fetch fonctionne pas comme ça. Si tu veux fetch les 100 derniers messages alors tu mets rien en paramètre et tu mets un await devant

#

Exemple

const msgs = await TextChannel.messages.fetch();

const msgsFilter = msgs.filter(etc)
keen narwhal
#

Hmm d'accord, je vais voir ce que je peux faire 👍 Merci !

sharp grail
#

Hey petite question par rapport aux messages au dessus, pour par exemple fetch tous les messages d'un salon comment peut-on faire ?
Je suppose que par exemple on peut fetch les 99 derniers messages, puis fetch 99 autres messages avant l'id du dernier message du premier fetch et ainsi de suite
mais y a-t-il une autre solution ?

neat lintel
#

Non il y a pas d'autre solution que de fetch en boucle

#

C'est d'ailleurs pas recommandé car ça spam l'api mais si c'est pour un usage limité ça devrait aller

marsh walrus
#

Coucou !! On peut m'aider s'il vous plaît ? Je ne trouve pas mes erreurs :c

marsh walrus
#

Je possède 5 erreurs :c

ashen rapids
#

Faudrait nous les donner pour qu'on puisse t'aider 😂

marsh walrus
#

Les erreurs souligné dans le screen

ashen rapids
#

Ton code est très mal indenté, la première chose à faire serait de mettre au propre tout ça

#

Ça te permettra déjà de mieux tu retrouver et identifier les potentiels problèmes

marsh walrus
worldly plank
keen narwhal
#

Surtout apprendre les bases du DJS

#

Mais sur VSCode tu peux auto indenter ton code normalement

bleak prism
oak turret
#

je vois « fonction() » etc..

#

arrêter de sauter les étapes les gars, apprenez petit à petit, c’est vital votre bot ou quoi ? sérieux quoi

burnt perch
slim anvil
#

oui mais connaissant @keen narwhal DJS voulait dire = Du JS

#

(me dit pas merci naltos tkt)

burnt perch
#

ui je me doute beacoup de gens commencent direct par la lib de discord tout en apprenant le js (ce qui fait pas bon mélange à mon humble avis)

oak turret
keen narwhal
sharp grail
sudden cipher
#

Salut , j'ai trouvé un code pour les message reaction sauf que je sais pas pourquoi elle ne marche pas

client.on('messageReactionAdd', (reaction, user) => {
    let message = reaction.message, emoji = reaction.emoji;

    if (emoji.name == '✅') {
            // We don't have the member, but only the user...
            // Thanks to the previous part, we know how to fetch it
            message.guild.fetchMember(user.id).then(member => {
                    member.addRole('916611814802980864');
            });
    }

    else if (emoji.name == '❌') {
            message.guild.fetchMember(user.id).then(member => {
                    member.removeRole('916611814802980864');
            });
    }

    // Remove the user's reaction
    reaction.remove(user);
});
neat lintel
#

fetchMember existe pas dans Guild

#

Pareil pour removeRole

#

On dirait un vieux code de V11 ce que tu as

keen narwhal
#
  • Code d'internet (évite un max stp la plupart sont pas à jour)
  • Code de la version v11 je pense (addRole étant une fonction de la v11, qui est passée à roles.add à partir de la v12)
  • Pour tout les events de réactions, il faut créer l'event raw qui permet d'obtenir toute les anciennes réactions de messages de tout les messages sur le serveur
#

@sudden cipher

neat lintel
#

L'évent raw n'est pas documenté et donc non officiel. Par conséquent il ne faut pas l'utiliser

#

Les partials sont faites pour résoudre le problème des trucs qui sont pas dans le cache.

#

Il est possible de les activer dans le code du client en mettant un array de string de PartialType

keen narwhal
#

Hello, toujours des petites questions par-ci par là mais sauriez-vous me dire comment je peux récupérer les dernières données d'un fichier .json ? (pour un système de warns par exemple qui permettrait de savoir les antécédents de la personne: en prenant que 2/3 données du fichier)

J'ai essayé avec .slice : warnlist[tagged.id].slice(0, 3).map(r => r.reason) mais ça m'indique que warnlist[tagged.id].slice n'est pas une fonction

lone flax
keen narwhal
#

J’ai plus mon pc à disposition mais ça ressemble à:

{
    "id d’un membre":
        raison: [
            "exemple de raison de warn"
}```

pour le tagged.id c’est juste l’id discord
lone flax
#

Il me faut les vraies valeurs du coup

#

Parce que le probleme vient de la justement

#

D'ailleurs ce que tu as envoyé ca n'existe ni en javascript ni en json

#

tu as oublié les "" et les {}

oak turret
#
{
  "id": {
     "raison": ["exemple"]
  }
}
#

faut que tu revoies la syntaxe du json

keen narwhal
keen narwhal
#

Je vous envoie ça dans la journée mais ça y ressemble

neat lintel
#

Du coup tu as oublié la key raison

#

Vu que slice est une méthode pour les arrays

neat walrus
#

Bonjour qui pourrais me dire comment faire une boucle infini pour faire ramer mon pc juste pour tester

prisma turtle
#

Alors

slim anvil
prisma turtle
#

Genre .bat?

sharp grail
#

Hello, petite question concernant les events messageUpdate & messageDelete, si les msg ne sont pas cached il manque des infos ;_; et comme en plus ils ont été déjà été modifiés/supprimés c'est impossible de les récupérer..
Une solution ?

ashen rapids
#

Tu peux les récupérer s'ils ont été modifiés avec l'ID
S'ils ont été delete oue tu peux rien faire

sharp grail
#

mais du coup ok, c'est triste x)

ashen rapids
#

Avec messageUpdate si normalement ?
(si le message a pas été delete, juste modifié)

sharp grail
#

tu as le nouveau

#

mais pas l'ancien x)

ashen rapids
#

T'es sûr ?
J'ai toujours eu le contenu de l'ancien message

sharp grail
desert riverBOT
#

:_: (event) Client#messageUpdate
Emitted whenever a message is updated - e.g. embed or content change.

glass cargo
#

@sharp grail si

#

T’as oldMessage et newMessage.

#

Par contre, faut que tu mette que ça

#

Si tu met client, oldMessage, newMessage, ça marchera pas.

sharp grail
#

;_;

#

si l'ancien n'est pas cached il sera trop tard pour récup son ancien contenu :

glass cargo
#

Nop

sharp grail
#

....

glass cargo
#

T’utilises oldMessage

sharp grail
#

Tu sais je suis pas un débutant

#

hein

#

je sais

#

mais il renvoie null car le message est pas cached

#

tu veux que je t'envoie des screens ? x))

sharp grail
glass cargo
#

Je veux bien

glass cargo
#

Si tu met les 3, client sera égal soit à oldMessage soit à newMessage. Donc le deuxième sera forcément undefined

sharp grail
sharp grail
#

car j'use un handler

glass cargo
#

Mais quel est le rapport mdrr

sharp grail
#

ça le rapport ;)

glass cargo
#

Ça change rien

sharp grail
#

j'exporte mon client en premier args

#

si totalement

#

tu veux je te screen la sorti du client aussi ?

glass cargo
#

Je fais la même chose et ça marche très bien. Mon handler est fait de la même manière

sharp grail
#

;_;

#

@glass cargo bref je comprends ce que tu veux dire mais t'inquiète ça a toujours bien marché pour moi x))
Sinon par rapport au old message c'est bien qu'il n'est pas cached 🤔

#

mais merci quand même 👀

lone flax
#

Ca existe un genre collection.last() (l'inverse de collection.first()) ?

neat lintel
#

oui

#

soit .last() pour la dernière valeur soit .lastKey() pour la dernière key

lone flax
#

Okey thanks, mon editeur l'affiche pas chelou

neat lintel
lone flax
#

merci

glass cargo
lone flax
#

je prefere faire avec mon editeur only

#

je le trouve vraiment pas pratique

neat lintel
#

Pourtant en général la doc de djs a la réputation d'etre très bien faite

lone flax
#

Ah mais elle est bien faite c'est pas le souci, c'est juste le site

#

Je sais pas, sur le GMod wiki par exemple, tu arrives, tu tappes ce que tu veux, et en 2 secondes tu le trouves.
Là, tu dois aller sur le site, puis dans l'onglet documentation, attendre quelques secondes que le site charge, tapper ton truc, voir que tu as 50 trucs differents pour ce que tu recherches mais que ça n'affiche pas celui que tu veux donc tu dois faire une recherche plus précise, ou alors tu trouves rien alors que ça existe.. Fin bref, à force de vouloir faire trop complet ils l'ont rendu trop complexe à utiliser je trouve

neat lintel
#

Possible oui, le nouveau design est moins pratique a utiliser ca c'est sur

lone flax
#

Moi Gmod wiki, je le trouve simple, efficace. C'est une liste, ça filtre en fonction de ce que tu veux. C'est peut-être pas du flat design, mais le but d'un wiki c'est d'être pratique pas d'être beau mmLul

#

fin bref

#

merci pour l'aide en tout cas

neat lintel
#

pas de souci

glass cargo
#

Perso, quand je commence à dev, j’ouvre vsc, Discord et la doc

#

Et ça met du temps à charger, car je crois que après, t’as plus besoin de co

#

Parce que t’as un truc qui se met en bas et qui dit "app ready to work offline"

lone flax
#

À quoi ça sert de dev un bot discord en offline mmLul

glass cargo
#

Je vois pas le rapport là

#

Tu peux très bien dev un bot discord offline sans que ca change rien

lone flax
#

Tu test ton bot comment mdr ?

#

Genre c'est un peu comme développer un programme en C mais pas avoir de compileur

glass cargo
#

T’es pas obligé de tester sur le moment mdrr

lone flax
#

Ouais je ne fais jamais ça perso mais pourquoi pas

#

Mais je trouve que ça devrait pas impacter 99.9% des gens qui l'utilisent en online

glass cargo
#

C’est sur x)

#

Faudrai genre mettre un bouton en bas "passer en mode hors ligne"

slim anvil
#

c'est quasi instantanée les recherches et chaque chargement de page 🤔

cyan iron
#

Tu met pas le client dans tous les messages

glass cargo
#

C'est à dire ?

cyan iron
#

En gros dans tous tes messages tu stockes ton client en cache ?

#

Si tu fais message.client

glass cargo
#

jsp x)

#

C'est le seul moyen que j'ai trouvé x)

cyan iron
#

Tu procède comment ?

glass cargo
cyan iron
#

Faire ça

#

Genre dans ton event message tu met un message.client = client ? 😂

glass cargo
#

dans mon message non

cyan iron
#

Dans ce cas comment tu accèdes au client ?

#

T'es censé l'exporter dans tes fichiers simplement

glass cargo
#

Dans la doc, sur la class Message

#

Et dans d'ailleurs toutes les class

cyan iron
#

Ah je savais pas

glass cargo
#

^^

cyan iron
#

Chelou

glass cargo
#

Yep

#

mais pratique du coup

cyan iron
#

Si c'est disponible c'est que ça doit être fait comme il faut GWcmeisterPeepoShrug

glass cargo
#

x)

patent wigeon
#

Bonchour, Il est possible d’exécuter plusieurs commandes dans un interactive shell grâce à NodeJS ?

patent storm
#

salut, j'ai un pb, en gros j'ai un tableau comme cela :

Array(7) [ "légumes", "légumes", "légumes", "fruits", "légumes", "fruits", "fruits" ]

#

Et mon objectif et de compter le nombre d'occurrence et de réduire le tableau en gros avoir en rendu :

Légumes à 4 occurrences
Fruits à 3 occurrences en gros

#

Je bug dessus, quelqu'un aurait un truc pour m'aiguiller, j'ai réussi à supprimer les occurrences mais j'arrive pas à faire un compteur

ashen rapids
oak turret
#

suffit de chercher un peu

keen narwhal
#

hey, je fais une cmd shop
quand je fais .shop avec l'article il y a une confirmation j'ai fait un colecteur et si oui est colecté l'object est acheté
mais le collecteur marche pas y a aucune erreur
voici le code :

   const shop = require('../../assets/shop/shop.json')
    const q = args.join(" ")
    const position = shop.map(e => e.name.toLowerCase()).indexOf(q.toLowerCase());
    if (q && position == -1) message.channel.send(`Cet objet n'existe pas. Pour afficher la liste des objets disponibles tapez \`${settings.prefix}shop\``)
 if (q && position) {
        if (position !== -1) {
            try {
                const item = shop[position];
                message.channel.send(`Voulez vous acheter ${item.name.toLowerCase()} pour ${item.prix}€ ?`)
                const filter = m => (message.author.id === m.author.id)
                const userEntry = await message.channel.awaitMessages(filter, {
                    max: 1, time: 10000, errors: ['time']
                });

                if (userEntry.first().content.toLowerCase() === "oui") {
                    if (dbUser.balance <= item.prix) return message.channel.send(`Vous n'avez pas assez d'argent pour acheter cet objet.\nPour gagner de l'argent faites \`${settings.prefix}work\` ou \`${settings.prefix}crime\``)
                    client.removeBalance(client, message.member, item.prix);
                    message.channel.send(`${message.author} vous venez d'acheter ${item.name} pour ${item.prix}\nIl vous reste désormais ${dbUser.balance - item.prix}€`)
                }
            } catch (e) {
                message.channel.send('Achat annulé. Veuillez confirmer votre achat plus rapidement.')
            }
        }
    } else {
        message.channel.send({ embeds: [embed] })
    }


}```
patent storm
# oak turret suffit de chercher un peu

Justement, j'y arrive pas en gros j'ai sa :

Array(7) [ {…}, {…}, {…}, {…}, {…}, {…}, {…} ]

0: Object { nom: "légumes", cpt: 0 }

1: Object { nom: "légumes", cpt: 0 }

2: Object { nom: "légumes", cpt: 0 }

3: Object { nom: "fruits", cpt: 0 }

4: Object { nom: "légumes", cpt: 0 }

5: Object { nom: "fruits", cpt: 0 }

6: Object { nom: "fruits", cpt: 0 }

length: 7

<prototype>: Array []
commande.js:337:13

Et maintenant je cherche à crée un tableau contenant le nombre de fruits et de légumes

keen narwhal
#

v13

#

mmmh

#

ptetre mon collector est pas v13

#

vais voir la doc 2 sec

fading glacier
#
const userEntry = await message.channel.awaitMessages({
  filter, max: 1, time: 10000, errors: ['time']
});```
#

en v13 le filtre est passé dans les options

keen narwhal
#

ok

#

par contre @fading glacier j'ai un autre probleme avec mon shop enft quand je veux acheter le role vip je fais .shop role vip et ça me renvoie le shop

#

j'ai verifie c bien le meme nom dans le json

fading glacier
#

Fais voir ton fichier json

opal harness
#

Salut les gars, je voudrais savoir comment je peux faire un message de bienvenue avec un emoji perso du serveur
Ex du code :

bot.channels.cache.get(bdd["bienvenue"]).send(`:ToDevArriv: ${message.author} !`);

Et le message de réponse est le suivant :

:ToDevArriv: @Thé Pa Bo !

Alors que je voudrais ça :

#

Merci d'avance
Cordialement
GPOIRE

neat lintel
#

Si c'est un emoji du serveur tu as besoins de le mettre au format discord.

#

Pour avoir le format discord tu envois le message avec un \ devant

neat lintel
#

non tu mets le truc entier dans le code

opal harness
neat lintel
#

Par exemple :

send('![javascript](https://cdn.discordapp.com/emojis/801759685467963432.webp?size=128 "javascript") Bienvenue')
neat lintel
#

généré par discord sous forme de Twitter Snowflake

opal harness
neat lintel
#

En envoyant un l'emoji précédé d'un \ dans discord

#

\ <ton emoji sans l'espace>

#

Exemple l'emoji djs (discordjs ) Tu mets un \ puis tu le colle et ca donne !discordjs

#

(c'est pas dans le code que ca ce passe, c'est sur l'app discord)

opal harness
neat lintel
#

Pas de souci. L'emoji fonctionnera sur tous les serveurs tant que le bot est présent sur le serveur qui possède l'émoji

opal harness
#

Rebonsoir,
Quel est le bot.on s'exécutant quand un membre leave
Comme par exemple, quand un mec rejoind la guild :
bot.on("guildMemberAdd", member => {

neat lintel
#

guildMemberRemove

keen narwhal
#

Bonsoir bonsoir, je travaille depuis un petit temps sur l'adaptation en slash command de mon bot, cependant je relève un problème, lors de certains restarts, certaines commandes ne se chargent pas au lancement du bot, le code de la commande est fonctionnel pour autant lorsque celle-ci apparaît dans la liste des commandes utilisables. Auriez-vous une idée de la source de ce problème ?

ashen rapids
#

C'est-à-dire ça se charge pas ?

#

Tu vois pas la commande dans la liste ?

keen narwhal
#

Yep c’est ça

ashen rapids
#

Fais voir ton code ?

keen narwhal
#

Je te montre ça dans 2 minutes, je finis un petit truc

ashen rapids
#

Si tu enregistres tes commandes et que tu touches plus après, c'est censé s'afficher tout le temps

#

Peut-être vérifier que tu enregistres pas " rien " parfois

keen narwhal
#
    commands?.create({
        name: 'effectif',
        description: '»    Liste de tout l\'effectif de la faction.'
    })

(dans le ready)

    if (message.commandName == "effectif") {
        function effectif(gerantID,roleID) {
            if (message.member.roles.cache.has(gerantID)) {
                let memberRole = message.guild.roles.cache.get(roleID).members.map(m => m.user)
                let geranceRole = message.guild.roles.cache.get(gerantID).members.map(m => m.user)
                const embedEffectif = new MessageEmbed()
                .setDescription(`• **Gérance:**
                ${geranceRole.join('\n')}
    
                • **Effectif:**
                ${memberRole.join('\n')}`)
                .setColor("#34495e")
                message.reply({embeds: [embedEffectif]})
            }
        }

(dans l'interactionCreate)

ashen rapids
#

Il faudrait en voir + pour ce que tu as dans ton ready

keen narwhal
#

J’ai pas grand chose de plus, j’ai mon slashcommandbuilder et sinon pas grand chose en lien avec tout ça. Je me demande si je devrais pas ajouter toutes les commandes via le slashcommandbuilder et pas un mix du commande.create et slashcommandbuilder

ashen rapids
#

Perso j'utilise directement l'API pour enregistrer toutes mes commandes crées avec le builder

keen narwhal
#

Hmm

ashen rapids
#

Il y a un exemple sur le guide je crois

keen narwhal
#

Je vais regarder ça merci

keen narwhal
# fading glacier Fais voir ton fichier json

[
{
"name": "role vip",
"description": "Permet d'acheter le role Vip qui vous donne des avantages sur le serveur, comme la permission de changer de pseudo",
"prix": 2000
},
{
"name": "role personnalisé 1 mois",
"description": "Permet d'acheter un role personnalisé dont vous choisissez le nom, la couleur et qui vous place au dessus des membres et qui vous donne les avantages du role Vip ",
"prix": 5000
},
{
"name": "salon personnalisé 1 mois",
"description": "Permet d'acheter un salon privatisé dont vous choisissez le nom et les personnes ayant accès (Maximum 10 personnes) vous pourrez y poster tout ce que vous voulez dans la limite du règlement. ",
"prix": 5000
},
{
"name": "role personnalisé à vie",
"description": "Permet d'acheter un role personnalisé dont vous choisissez le nom, la couleur et qui vous place au dessus des membres et qui vous donne les avantages du role Vip ",
"prix": 10000
}

]

cyan iron
#

@keen narwhal C'est simplement que tu ne set pas tes commandes je pense

slim anvil
#

si tu veux récupérer uniquement l'objet pour le VIP par exemple, tu peux chercher dans ton tableau via la method find

#

à ta place j'aurai un autre champ dans chaque objet, en guise de clé, qui ne changerait pas

#

car tu peux faire

const item = shop.find(e => e.name === 'role vip')

sauf que si tu changes un jour le nom, ce code ne sera plus bon, donc peut etre rajouté une key

slug: "vip"

et tu find sur le slug car lui ne changera pas normalement

keen narwhal
#

ok

#

mais dcp ça resolu pas mon probleme

slim anvil
#

quel est ton problème

keen narwhal
#

en gros

#

quand je fais .shop role vip

#

au lieu de me proposer d'acheter le vip il m'envoie le shop

#

et ça fait ça que sur le vip pas sur les autres.

#

normalement quand l'item est pas bon genre .shop dfheid il envoie un message "cet item n'existe pas"

#

@slim anvil

oak turret
#

pas besoin de le mentionner

keen narwhal
#

oké deso

oak turret
#

il te renvoie le shop cad le json entier?

keen narwhal
#

oui

slim anvil
#

montre cette partie de code stp

oak turret
#

bah un .find() devrait fonctionner what

#

tu dois mal l’utiliser c’est tout

keen narwhal
#
    const q = args.join(" ")
    const position = shop.map(e => e.name === q)
    if (q && position == -1) message.channel.send(`Cet objet n'existe pas. Pour afficher la liste des objets disponibles tapez \`${settings.prefix}shop\``)
 if (q && position) {
        if (position !== -1) {
            try {
                const item = shop[position];
                message.channel.send(`Voulez vous acheter ${item.name.toLowerCase()} pour ${item.prix}€ ?`)
                const filter = m => (message.author.id === m.author.id)
                const userEntry = await message.channel.awaitMessages({
                    filter, max: 1, time: 10000, errors: ['time']
                });

                if (userEntry.first().content.toLowerCase() === "oui") {
                    if (dbUser.balance <= item.prix) return message.channel.send(`Vous n'avez pas assez d'argent pour acheter cet objet.\nPour gagner de l'argent faites \`${settings.prefix}work\` ou \`${settings.prefix}crime\``)
                    client.removeBalance(client, message.member, item.prix);
                    message.channel.send(`${message.author} vous venez d'acheter ${item.name} pour ${item.prix}\nIl vous reste désormais ${dbUser.balance - item.prix}€`)
                }
            } catch (e) {
                message.channel.send('Achat annulé. Veuillez confirmer votre achat plus rapidement.')
            }
        }
    } else {
        message.channel.send({ embeds: [embed] })
    }


}```
oak turret
#

et donc toi tu veux faire quoi?

keen narwhal
#

que quand je fais .shop vip il me propose d'acheter le role vip

#

au lieu d'envoyer le shop

slim anvil
#

a quoi sert ton .map

oak turret
#

bah shop.find(e => e.name === q)

#

ton truc de positif est useless

slim anvil
#

oui tout simplement

#

tu t'en branles de l'index toi tu veux récupérer l'élément

keen narwhal
#

att quel ligne

oak turret
#

si dans ton .find() c’est que ça n’existe pas

#

ton position là

#

c’est useless

keen narwhal
#

ah ok

#

const position = shop.map(e => e.name === q) donc

oak turret
#

autant faire une recherche, si il trouve ok tu fais ce que tu veux, à l’inverse il trouve rien et hop erreur et basta

#

mais stop ton .map()

#

.find()

keen narwhal
#

ok

#

@oak turret c bon ça envoie plus le shop mais à la place ça envoie le message d'erreur

#

du catch

oak turret
#

Bah ton .catch() c’est si il répond pas

keen narwhal
#

TypeError: Cannot read properties of undefined (reading 'name')
at Object.module.exports.run (E:\Dafaba\CODAGE\hpbot\commands\💵・Economie\shop.js:24:66)
at module.exports (E:\Dafaba\CODAGE\hpbot\events\message\messageCreate.js:130:17)
at processTicksAndRejections (node:internal/process/task_queues:96:5)

#

c le name

#

et ça fait ça sur tous les objets pas que le role vip

#

@oak turret

oak turret
#

log ton position

keen narwhal
#

{
name: 'role vip',
description: "Permet d'acheter le role Vip qui vous donne des avantages sur le serveur, comme la permission de changer de pseudo",
prix: 2000
}

oak turret
#

log position?.name

keen narwhal
#

ça log bien le bom

#

nom*

oak turret
#

bah voilà

keen narwhal
#

quoi ?

oak turret
#

bah après faut revoir ton code

#

const item = shop[position] tu peux gerter useless

keen narwhal
#

ok

oak turret
#

t’auras qu’à mettre position?.name etc

#

et ton if(position !== -1) aussi

keen narwhal
#

@oak turret ça ? if (q && position == -1) message.channel.send(Cet objet n'existe pas. Pour afficher la liste des objets disponibles tapez \${settings.prefix}shop``)

oak turret
#

enlève le !== -1

#

c’est ton code hein

keen narwhal
#

ok

#

@oak turret tout marche sauf un truc : le systeme de si l'objet est pas dans le json au lieu de mettre le petit message d'erreur il renvoie direct le shop

oak turret
#

juste le else du if ( q && position )

keen narwhal
#

oui

#

ah ouais j'ai vu

#

bah non tjrs pas

#

dans le if (q && position == -1) return message.channel.send(`Cet objet n'existe pas. Pour afficher la liste des objets disponibles tapez \`${settings.prefix}shop\``) j'avais pas mis de return je l'ai mis mais ça change pas

oak turret
#

le -1 je t’ai dis de l’enlever

keen narwhal
#

ah

#

même en l'enlevant tjrs pas

oak turret
#

j’suis sur téléphone

keen narwhal
#

ah rip

slim anvil
#

renvoie ton code actuel

patent storm
#

Salut, est-ce que des personnes s'y connaissant sur l'architecture SAM ici ?

patent storm
# ashen rapids Explique toujours

En gros le prof à donner une portion de code pour faire un filtre et le but est de le compléter, mais bon galère galère car je comprends pas tout de cette architecture quoi