#javascript-typescript

1 messages · Page 99 of 1

fresh wolf
#

mdrr

misty parcel
#

tu as quoi à la ligne 4 ?

fresh wolf
#

c'est a dire? Debugger attached

misty parcel
#

Non à la ligne 4 de ton code

fresh wolf
#

sa?

misty parcel
#

a la ligne 4 du fichier index.js

keen narwhal
#

L'erreur est afficher

#

Le client manque les intents

fresh wolf
keen narwhal
#
const {Client, Intents} = require("discord.js")

const client = new Client({ intents: Intents.FLAGS.GUILDS})
#

Comme ça

misty parcel
#

c'est pas config

#

c'est client

keen narwhal
#

C'est au choix en passant

misty parcel
#

Oui mais il l'a déjà set sa const config

keen narwhal
#

client*

misty parcel
#

Mais la ligne 2 alors 🤔

keen narwhal
#

Il appelle juste un fichier .json qui contien son token

misty parcel
#

il peut déclarer plusieurs fois une const ?

keen narwhal
#

Genre

#
const a
const b
const c
#

?

misty parcel
#

non mais la c'est des const différentes

keen narwhal
#

Oui bah explique

misty parcel
#

si je fais

const test = ...
const test = ,,,
#

ça va pas marcher nan ?

#

vu que c'est une const

keen narwhal
#

Je comprend pas

fresh wolf
keen narwhal
#

,

#

virgule après GUILD

fresh wolf
#

puis après?

misty parcel
#

quand tu crée une const elle est inchangeable

keen narwhal
#

Le deuxième intents c'est un I majuscule

keen narwhal
fresh wolf
#

ok

keen narwhal
#

T'utilise un let si tu veux modifier

misty parcel
#

Oui

#

Enfin bref x)

fresh wolf
#

un let? c quoi?

misty parcel
#

Une variable que tu peux modifier

#

on est la hein

kind agate
#

Faudrait vraiment que tu apprennes le JS avant de te mettre au dév de bot, au moins un peu plus ^^

keen narwhal
#

J'aurais dis ça mais je pensé que c'était impoli de ma par

#

Ducoup j'ai rien dis

kind agate
#

Nah, faut le dire, ça s'appliques pour tout les secteurs du dév

fresh wolf
#

ok, mais après je crois que c'est payant les cours, non?

kind agate
#

Du tout

keen narwhal
#

Non

#

Au contraire

kind agate
#

Demande aux dévs JS ici pour des ressources ^^

fresh wolf
#

ok, bah je vais voir

keen narwhal
#

MDN qui aide bien

fresh wolf
#

bon je vous laisse a+

keen narwhal
#

👍

misty parcel
#

Re, lorsque mon bot crée un salon (système de ticket) j'aimerais bien qu'il mentionne le salon dans un message de réponse, du genre : J'appuie sur un bouton pour crée un ticket et le bot me renvoie `Le salon <#${idDuSalon}> a bien été crée`

#

Alors j'ai fais ça

#

Mais ça me renvoie ça

#

Si quelqu'un saurait m'aider

keen narwhal
#

J'ai pas trop travailler avec les interaction pour le moment

sharp grail
#

Ce n'est pas le problème

#

créer un channel renvoie une promesse, tu dois donc attendre qu'elle soit résolu, avec await ou then

keen narwhal
#

Hello, étant hors de la limite de 25 des options d'un MessageSelectMenu j'aimerais savoir si il est possible d'outre-passer cette limite en faisant par exemple une boucle for ? (ayant essayé, je pense que c'est la solution mais je n'arrive pas à bien formuler mes lignes de code)

sharp grail
#

La limite de 25 options dans un select menu est une limite de discord, tu ne peux pas l'outre-passer

slim anvil
#

Yes faut éviter de s’en servir pour lister des membres car tu vas vite te faire brider

#

Ou alors tu fais plusieurs sélect mais bon

sharp grail
#

Sauf que t'es limité à 5 row par message bongoTap

oak turret
#

vraiment pas la bonne soluce d'utiliser ça pour lister des membres

misty parcel
#

Salut est ce que c'est possible pour un bot de modifier un bouton ? Cet a dire de faire un bouton disabled: false pour ensuite le rendre disabled: true

misty parcel
#

J'ai bidouiller plusieurs trucs mais je n'arrive pas à le faire

sharp grail
#

Il te suffit d'editer le message en modifiant uniquement les components par exemple

oak turret
#

.edit({components: [tonrow]})

misty parcel
#

euf comment on edit un message ? x)

#

ah d'accord

sharp grail
#

<Message>.edit généralement sinon pour les interaction tu as d'autres méthodes associées

oak turret
#

.update() pour les interaction

keen narwhal
oak turret
#

ça reste le même procédé

oak turret
sharp grail
keen narwhal
#

C'est amplement suffisant je pense

oak turret
#

125 membres répartis sur 5 selectMenu*

sharp grail
#

En plus x)

oak turret
#

qu'on se le dise

keen narwhal
#

Yep

oak turret
#

c'est pas la bonne soluce

#

autant trouver une soluce alternative pour pointer un user en particulier

keen narwhal
#

surement mais je vais pas te le cacher que niveau efficacité sur le résultat que je veux, c'est le meilleur rendu

oak turret
#

malheureusement le rendu avec ça c'est bien mais tu seras emmerdé niveau efficacité

keen narwhal
#

je vais voir déjà ce que ça rend

#

mais sinon, une boucle for est bien le moyen d'attacher les rows au message ?

slim anvil
#

oui tu boucles sur ta liste

#

et tu crées un select tous les 25 membres

#

et tu bloques a 5 max

misty parcel
#

Ah bah non attends

keen narwhal
slim anvil
#

Donc car c'est 25 max

keen narwhal
#

ah oui

#

dcp ça ferait un truc du style:

                        for(let i = 0; i < members; i += 5) {
                            const menu = new MessageActionRow()
                            .addComponents(options)
                            message.reply({ content: '`Affichage du menu de sélection !`', components: [menu], ephemeral: false})

                        }```
sharp grail
#

euh ?

#

tu reply combien de fois à ton message mdr

#

et tes options elles viennent d'où ? x)

keen narwhal
#

oublie :d

#

je suis paumé :/

sharp grail
#

t'as pleins possibilités

#

si tes membres c'est un array par exemple, tu peux le diviser en 5, et ensuite tu peux faire simplement un .map ou tu boucles dessus

#

et à la fin tu return ta list d'actionrow

mystic bison
#

Je n’arrive toujours pas avec mon histoire de cors

#

voila mon sever.js soit l'équivalent du index.js```js
const express = require('express');
const bodyParser = require('body-parser');
const cookieParser = require('cookie-parser');
const userRoutes = require('./routes/user.routes');
const postRoutes = require('./routes/post.routes');
require('dotenv').config({path: './config/.env'});
require('./config/db');
const {checkUser, requireAuth} = require('./middleware/auth.middleware');
const cors = require('cors');

const app = express();

const corsOptions = {
origin: process.env.CLIENT_URL,
credentials: true,
'allowedHeaders': ['sessionId', 'Content-Type'],
'exposedHeaders': ['sessionId'],
'methods': 'GET,HEAD,PUT,PATCH,POST,DELETE',
'preflightContinue': false
}
app.use(cors(corsOptions));

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));
app.use(cookieParser());

// jwt
app.get('*', checkUser);
app.get('/jwtid', requireAuth, (req, res) => {
res.status(200).send(res.locals.user._id)
});

// routes
app.use('/api/user', userRoutes);
app.use('/api/post', postRoutes);

// server
app.listen(process.env.PORT, () => {
console.log(Listening on port ${process.env.PORT});
})

#

et mon .env

#
PORT=5000
CLIENT_URL=http://localhost:3000/
DB_USER_PASS=*********************************************************************
TOKEN_SECRET=******************************************************************************************************************************************```
#

voila mon projet github

#

voila une nouvelle page erreur sur mon ordi principal

slim anvil
#

Enfaite pour régler ton probleme tu dois sois etre sur la meme baseUrl pour ton front et ton API et donc tu auras pas de soucis de CORS, sois tu dois configurer ce truc avec les origin, etc pour que ça fonctionne

mystic bison
#

je dois remplacer localhost par le nom de domaine de mon site ?

cyan iron
#

Une galère

mystic bison
#

🥲

#

je pête un cable

cyan iron
#

J'ai pas encore tenté de fix mais hier j'ai pas mal bataillé pour comprendre comment ça marchait un peu

mystic bison
#

fais voir ton erreur on sait jamais

slim anvil
#

Je viens d'expliquer

#

Sois tu as la meme origin pour ton front et ton back, donc ton front sera par exemple toto.fr et ton api api.toto.fr et donc tu auras pas de soucis là dessus

mystic bison
#

ok

slim anvil
#

Sois tu dois configurer sur ton back-end les CORS pour sois faire un origin: "*" ou préciser et toutes les autres options

mystic bison
#

merci beaucoup te ton aide je te souhaite une bonne soirée

dire latch
#

Hey petite question, les bots qui n'utiliseront pas les / commands n'auront plus le badge vérifier bot ?

#

Et on pourras pas les vérifié non plus ?

fresh wolf
#

bonjour, vous saviez pk sa ne fonctionne pas?

dire latch
#

message.member existe pas 🤔 Il me semble

#

Et sa te donne rien si tu ne rejoins pas

fresh wolf
#

a

dire latch
#

Et faut activé les intents @fresh wolf

#

Si tu es en V13

keen narwhal
dire latch
#

Sur le panel

#

C'est ce que j'ai dis @keen narwhal

keen narwhal
#

T'as dit "il me semble" pour ça

dire latch
#

Gnegne

keen narwhal
#

Heu ok

fresh wolf
#

ah, vous saviez ou je pourrait trouver des code qui fonctionne(je suis nul, faut que j'apprenne javascript😅 )

dire latch
#

Ba faut activé les intents déjà sur le panel @fresh wolf

fresh wolf
#

le panel du bot ou du serv?

dire latch
#

Du bot

#

Tu dois activé les intents

fresh wolf
#

sont deja activé

dire latch
#

Ok et tu as essayés de rejoindre le discord avec un DC ?

fresh wolf
#

c'est a dire?

dire latch
#

Tu fais un guildMemberAdd, faut le testé après

#

Normal que sa fonctionne pas si tu le test pas 😅

fresh wolf
#

j'ecrit sa dans le terminal?

dire latch
#

Ba nan 🤔

#

guildMemberAdd, s'exécute quand une personne rejoint le discord

fresh wolf
#

je l'ai dit je suis nul, c'est mon tout premier bot

dire latch
#

Regarde des tutos sur YouTube ou autres dans ce cas

fresh wolf
#

ok

dire latch
cyan iron
queen ocean
cyan iron
#

Pour le coup si tu parle du badge développeur certifié on ne peut pas le perdre

#

Même si ton bot est down tu le perds pas

queen ocean
#

Je crois sue

cyan iron
#

Je pense aussi mais au cas où je préfère le dire

slim anvil
cyan iron
#

Euh

#

Je passe sous un pont

fading glacier
dire latch
#

Ok merci @queen ocean @cyan iron

sharp grail
fleet scaffold
#

welcome to the mention prefix

#

mdr

sharp grail
#

Oui x)

fleet scaffold
#

faut privilégier les slash

#

genre, adieu la vérification avec ça

cyan iron
#

Les slashs c'est super pratique en plus

fleet scaffold
#

plus besoin de vérifier si l'argument est bien un channel, un membre ect...

fleet scaffold
#

plus besoin de vérifier si il donne un nombre ou un string

sharp grail
#

Oui de ce côté c'est bien pratique

fleet scaffold
#

plus besoin de vérifier si l'utilisateur ce trouve vraiment sur le serveur

#

c'est ÉNORMÉMENT de requête API en moins

cyan iron
#

et ÉNORMÉMENT de lignes de codes en moins aussi

fleet scaffold
#

Yes

#

Mais, ça sera parfait seulement quand y en aura le text Input

#

sah, je l'attend ce composant

#

La ça sera parfait 👌🏻

#

(Y aura aussi la modale apparemment)

sharp grail
fleet scaffold
sharp grail
#

Je suis pas sur

fleet scaffold
#

le user ce comporte comme si tu voulais @ un membre sur le serveur

sharp grail
#

Bah en mp tu peux pourtant mettre une id de user

fleet scaffold
#

un id ?

sharp grail
#

Yep

fleet scaffold
#

en mp je capte pas trop le fonctionnement encore

sharp grail
#

Du coup je te confirme

#

User c'est bien pour n'importe quel user

fleet scaffold
#

mhh

#

Bon bah t'as pas à vérifier de ton côté si il a bien mis l'user xd

#

disons

sharp grail
bitter mango
#

Salut, j'ai un problème, j'aimerai récupérer le code unix de la journée actuelle mais d'une heure spécial en js genre je veux le code unix d'aujourd'hui mais à 8h am

hybrid elk
#

Hello j'ai un soucis

#

Je log ça, ça me return ça

#

Mais quand je fais testElements[0] ça return undefined

slim anvil
#

passe par un .querySelectorAll

#

sinon tu dois faire un Array.from(testElements)

#

ou sinon tu peux juste faire

[...document.getElementsByClassName("s")]
#

je crois que ça passera

hybrid elk
#

J'en ai un au dessus mais c'est une div que je cherche

#

J'ai essayé plein de trucs comme ça

slim anvil
#

oui ça change rien

#

pour chercher les class tu peux faire querySelectorAll('.studentName')

#

avec le . devant, sinon tu gardes ton code actuel et tu fais juste ce que je t'ai envoyé, ca devrait etre oki

hybrid elk
#

Okok je check ça merci

slim anvil
#

le array.from est pas compatible non plus avec tous les navigateurs

hybrid elk
slim anvil
#

mais tu peux pas faire ce que tu veux car byClassName renvoie une HTMLCollection alors que querySelector une nodeList

#

🤔

#

ton élément existe bien dans le DOM?

hybrid elk
#

HTMLCollection il mettais lenght 1 mais y avait rien

slim anvil
#

au moment ou il recherche, donc au chargement

#

ton script est appelé a quel moment en gros

#

dans le <head> ou a la fin du <body>

hybrid elk
#

C'est une ext chrome donc je sais pas trop j'en ai jamais fait

slim anvil
#

Ah t'es dans une extension

hybrid elk
slim anvil
#

ouais document_end
bizarre !
après il te suffit juste de faire le Array.from

hybrid elk
#

En fait je comprend pas trop parce que

#

Ca remplace bien le bleu mais pas le rouge

#

Parce que ça, ça marche

#

Mais l'autre ça print rien

slim anvil
#

il y a bien class="studentName" au moment du chargement de la page ?

#

il faut pas cliquer sur X ou Y action pour afficher la div avec studentName ?

hybrid elk
slim anvil
#

donc il est dans le DOM de base ?

hybrid elk
#

J'ai entendu parlé de ça mais je sais pas ce que c'est

#

Mais j'imagine que non

slim anvil
#

le DOM c'est ton document, donc ta page HTML

#

donc est-ce que tu as tout tes éléments de présent avant que ton script se lance ? 🤔

#

Mais logiquement oui car tu le fais avec ton className et ca fonctionne

hybrid elk
#

Non justement className ça marche pas

slim anvil
#

si faut juste que tu changes ta façon de boucler dessus

hybrid elk
#

Attend, donc la j'ai remis avec getElementsByClassName

#

Et ça log ça

#

🤔

slim anvil
#

yes

#

bah c'est good boucle dessus

hybrid elk
slim anvil
#

Regarde plus haut ce que je t'ai mis

hybrid elk
#

Array.from?

slim anvil
#

Yes par ex

hybrid elk
slim anvil
#

le array.from te return un tableau vide ? 🤔

#

tu fais quoi montre ton code

hybrid elk
#

(J'étais sous ma douche sorry)

mystic bison
mystic bison
#

J’ai réussi à déployer le front end, mai je sais pas comment déployer le backend

#

Quelqu’un sait comment faire ?

ashen rapids
#

Tu essaies d'y accéder depuis ton navigateur

#

Sur une route

mystic bison
#

Oui

mystic bison
flat sandal
#

Tu lances ton application sur ton domaine et voilà

hybrid elk
slim anvil
#

Du coup ca peut etre ça le problème

hybrid elk
#

Je pense mais y a pas moyen de le remettre dedans?

slim anvil
#

envoie moi ton truc a la limite que je test

#

car la je fais qu'énumérer des possibilités mais sans exemple compliqué

fresh wolf
#

quelqu'un sait quelle est le probleme?

oak turret
#

c’est écrit

#

remonte dans ton code stp

#

qu’on voit le début

fresh wolf
oak turret
#

pas bon

#

tes commandes doivent être dans l’event messageCreate

#

message n’existe pas là et c’est bien normal

hybrid berry
#

Bonsoir les meks est-ce que quelqu'un est bon ici en bidouillage

#

je vous explique

#

ici j'ai un url que mon navigateur recois

#

enfin normalement

#

sauf que je souhaite le récupérer avant qu'il passe par la méthode encodeURI() vous savez comment je peux faire ?

fresh wolf
#

ducoup je dois mettre quel commande? @oak turret

oak turret
#

regarde le lien

#

et essaye de comprendre

fresh wolf
#

ok

#

A c'est parce que j'ai oublié client.on?

oak turret
#

t’as clairement pas mis l’event

fresh wolf
#

OK je vais corriger mon erreur

sharp grail
#

Juste comme ça, avant de se lancer direct dans un bot discord, ça serait mieux d'apprendre les bases du js

cyan iron
#

Après, c'est en forgeant qu'on devient forgeron

fresh wolf
#

Oui, je sais chui dsl, mais faut que je fasse un bot à un pote car il me fait que de me le demander, mais j'apprends de mes erreurs

sharp grail
fresh wolf
#

Et faut que je cherche des cours sur internet

cyan iron
#

Mais vraiment les bases des bases, déclarer une variable exécuter une fonction etc

#

Après c'est comme ça que j'ai appris personnellement

cyan iron
sharp grail
#

Jdis pas de connaitre les classes etc. mais au moins boucles variables functions conditions opérateurs + éventuellement mais pas obligatoire array et object

cyan iron
#

ouais voilà, les bases

oak turret
fresh wolf
#

Discord

cyan iron
#

Merci mec

fresh wolf
#

?

cyan iron
#

Ce qu'il veut savoir c'est quel type de bot c'est ? Modération, levels, rpg, etc... ?

oak turret
#

les fonctionnalités

fresh wolf
#

A peu près tout lol, modération, level, music, etc... (ben v'est ce que veut mon pote)

cyan iron
#

oof

oak turret
#

t’as aucune bases en js ?

cyan iron
#

Tu vas vraiment suer

#

Je te le dis

oak turret
#

commence par de petites fonctionnalités simple

cyan iron
#

J'espère que t'as du temps devant toi aussi harold

fresh wolf
#

Nan faut que j'apprenne (je vais lui dire que je vais arrêter avec les bots, pour apprendre)

oak turret
#

tu t’y retrouveras pas sinon

oak turret
#

c’est pas une bonne idée de se lancer dedans

#

bonne idée

#

apprend le js, familiarise toi bien avec

fresh wolf
#

Lol

oak turret
#

apprendre la logique de ce langage, comment il marche etc

fresh wolf
#

Oui

oak turret
#

le développement ça s’apprend pas en 2 semaines c’est un apprentissage de tous les jours

oak turret
#

en attendant il a qu’à faire une demande sur le site pour ton bot

cyan iron
#

T'en apprend tous les jours, même les meilleurs

oak turret
#

exactement

#

on apprend tous tous les jours

cyan iron
#

D'ailleurs, tu connaissais les ... en js ?

oak turret
#

qu’importe notre level

#

qui ?

cyan iron
#

toi

oak turret
#

yes je connaissais

#

je les ai déjà utilisé

fading glacier
cyan iron
#

J'ai vu ça tout à l'heure j'ai fait wtf choc
Et bah c'est pratique bordel

fresh wolf
#

Sert à quoi ?

cyan iron
#

Je connaissais pas leur existence

#

C'est un peu compliqué

fresh wolf
#

Au moins j'apprends un peu😅

cyan iron
#

Commence par les bases plutôt ! Là c'est vraiment des détails

fresh wolf
#

OK

oak turret
#

tu vas l’embrouiller direct, quel sadique Wailrone sue

#

m’enfin je confirme très utile les three dots

fresh wolf
#

ducoup j'ai trouver des cours en ligne, je vais attendre que mon pere me repare mon pc portable et je les ferait

oak turret
#

good luck

fresh wolf
#

20h de cours

#

Mais bon si c'est pour apprendre faut le faire lol

oak turret
#

les cours c’est une chose

#

la pratique c’en est une autre

wild bramble
#

Salut j'ai un problème avec mon bot discord. En effet, j'essaye de faire des slash commands mais quand je lance mon bot voici l'erreur que sa m'affiche : Uncaught DiscordAPIError: Missing Access mon bot a toute les perms

oak turret
#

c’est pas ça

#

quand t’invites il faut un scope précis

#

bot,application.commands

#

pour plus de précisions

wild bramble
#

Merci c'est bon ça marche !

oak turret
#

avec plaisir 👌

white sedge
#

qlqun sait comment creer des commandes qui marchent avec discord.js V13
Meme en suivant des tuto et le guide rien ne marche (le bot se lance quand meme) quand je tape une commande bah c le néant rien meme en dans la console de VSC. pouvez vous m'aidez ?
voici mon index.js

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

// Create a new client instance
const client = new Client({ intents: [
    Intents.FLAGS.GUILDS, 
    Intents.FLAGS.GUILD_MESSAGES
] });

const eventFiles = fs.readdirSync('./events').filter(file => file.endsWith('.js'));
for (const file of eventFiles) {
    const event = require(`./events/${file}`);
    if (event.once) {
        client.once(event.name, (...args) => event.execute(...args));
    } else {
        client.on(event.name, (...args) => event.execute(...args));
    }
}

client.commands = new Collection();
const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));
for (const file of commandFiles) {
    const command = require(`./commands/${file}`);
    client.commands.set(command.data.name, command);
}

client.login(token);```
#

voici un fichier des commande du guide

const { SlashCommandBuilder } = require('@discordjs/builders');

module.exports = {
    data: new SlashCommandBuilder()
        .setName('ping')
        .setDescription('Renvoie le nombre de ping'),

    async execute(interaction) {
        await interaction.reply(`Ton ping est de ${interaction.client.ws.ping} ms.`);
    }
}```
#

et le deploy-commands.js

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

const commands = [];
const commandFiles = fs.readdirSync('./commands').filter(file => file.endsWith('.js'));

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

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

(async () => {
    try {
        await rest.put(Routes.applicationCommands(clientId), { body: commands });
        console.log('Les commandes ont étés enregistrées !')
    } catch (error) {
        console.error(error);
    }
})();
#

Merci de votre future aide

ashen rapids
#

Pour les commandes globales, ça peut prendre jusqu'à une heure pour apparaître

delicate yew
#

Saluut

#
const Discord = require("discord.js");
const { SlashCommandBuilder } = require("@discordjs/builders");
const Client = new Discord.Client({
    intents: [
        Discord.Intents.FLAGS.GUILDS,
        Discord.Intents.FLAGS.GUILDS_MESSAGE,
    ]
});

const data = new SlashCommandBuilder()
.setName("ping")
.setDescription("renvoie pong");

Client.on("ready", () => {

    Client.guilds.cache.get("937822328065245224").commands.create(data);

    console.log("Le bot est prêt")
});








Client.login("");``` je regarde une ptite vidéo pour apprendre la v13
#

mais ça ne fonctionne pas

#

Uncaught RangeError [BITFIELD_INVALID]: Invalid bitfield flag or number: undefined.
No debugger available, can not send 'variables'

#

j'ai cette erreur..

lone flax
#

Hello, ça vient de tes "intents"

delicate yew
#

ils sont pas bon

#

j'ai tout mis comme la vidéo

lone flax
#

Comme tu vois dans l'erreur il est marqué "undefined", soit qu'ils sont indéfinis (ou qu'ils n'existent pas dans ton cas)

#

Tu ne dois pas mettre Discord. devant et retirer le point après le FLAG

#

Mets juste Intents.FLAG_GUILDS

delicate yew
#

mais j'ai juste regardé une vidéo pour apprendre

#

et ça marché au début

#

et plus après

lone flax
#

La vidéo que tu as regardé est peut-être trop ancienne

delicate yew
lone flax
#

La v13 officielle de Discord est sortie récemment

dire latch
#

Le Intents.FLAGS.GUILDS fonctionne si jamais

#

Jsp pk tu dis qu'on dois le retiré 🤔

delicate yew
#

j'suis perdu mtn 😭

#

@dire latch j'dois faire quoi du coup

coarse hinge
delicate yew
#

j'ai lu

#

ça marche pas non plus

#

j'ai fais pareil

lone flax
#

Est-ce que tu es bien en v13 ? mmLul

dire latch
#

Juste mettre:

const { Client, Intents } = require("discord.js");
const { SlashCommandBuilder } = require("@discordjs/builders");
const client = new Client({
    intents: [
        Intents.FLAGS.GUILDS,
        Intents.FLAGS_GUILD_MESSAGES,
    ]
});

const data = new SlashCommandBuilder()
.setName("ping")
.setDescription("renvoie pong");

client.on("ready", () => {
  client.guilds.cache.get("937822328065245224").commands.create(data);
  console.log("Le bot est prêt")
});

client.login("TOKEN BOT");
#

Et normalement, c'est good

dire latch
#

Et faut que tu as discord.jsv13

delicate yew
#

ça y est

#

j'suis en 13.6

coarse hinge
#

check version npm list discord.js # uninstall and re-install npm uninstall discord.js npm install discord.js

delicate yew
#

j'ai la même erreur @dire latch

coarse hinge
#

Sur tel pas facile à maître en forme 😅

delicate yew
#

mais je suis en v13

dire latch
#

Tu as mis les intents sur la page du bot ? Tu as invités ton bot avec cet fonctionnalité ?

delicate yew
dire latch
#

Faut être sûr pour le coups 😂

delicate yew
#

j'essaye

dire latch
#

Va ici sur le page du bot

#

Et tu coches ceci

delicate yew
#

ahhh

#

j'ai déà fais ça

dire latch
#

Et tu descents pour avoir l'URL

delicate yew
#

déjà*

dire latch
#

Refais au cas ou

delicate yew
#

Ok ok

dire latch
#

Et tu réinvites ton bot

#

Et regarde si tu as les intents aussi

#

Dans Bot

delicate yew
#

tous ?

#

je coche tout ?

dire latch
#

Ba que les intents oui

coarse hinge
#

Ce que ta besoin pepe_chock

dire latch
#

Il y en as 3

delicate yew
#

ça amrche tjrs pas

#

j'ai tout fais comme vous m'avez dis

coarse hinge
#

Fait un node -v

delicate yew
#

j'avais juste mal écris message aussi

#

sauf que quand j'essaye la commande

#

il me met

#

L’application ne répond plus

#

sur le discord

coarse hinge
#

Normal ta commande et pas complet

delicate yew
#

Ah oui mdrr

#

je viens de voir

#

ptn j'suis con

#

merci les gars

coarse hinge
#

Ta juste créé une commande vide

delicate yew
#

c'est dur la v13 😭

coarse hinge
#

Non pas plus que les autres kappo

dire latch
#

En fait, ton Intents.FLAGS.GUILDS_MESSAGE existe pas en fait

coarse hinge
#

L'astuce c'est que il faut juste pas copier coller il faut comprendre ça fait quoi si non tes vite perdu stonks

delicate yew
#

mais j'ai pas vu le truc

delicate yew
dire latch
#

Yes

delicate yew
#

@dire latch

#

est-ce que c'est dur de migrer de v12 à v13 ?

#

ou y'a besoin de recommencer un bot entier ?

dire latch
#

Tu refais tout

#

Comme ça, tes tranquille

delicate yew
#

ouais mais j'ai déjà tout sur mon autre bot

#

ça veut dire il va plus me servir

dire latch
#

Ba vaut mieux tout refaire

#

Au moins, tu oublie rien etc

delicate yew
#

ouais pas faux

#

et la v13 passe obligatoire quand ?

dire latch
#

Jsp

oak turret
#

après tu peux passer sur une lib du genre Sheweny qui est très cool et intuitive, c'est mon avis après !

delicate yew
#

ouais mais bon

#

je préfère rester sur celle ci

#

j'ai l'habitude

bitter mango
#

C'est possible de changer la taille de la police automatiquement si ça rentre pas dans le div ?

oak turret
mystic bison
#

je ne comprends pas mon erreur, enfin d'ou elle vient

bitter mango
#

Ton code ?

delicate yew
#

les gars

#

j'aimerai que après qu'il m'ait demandé le pseudo que je veuxet que j'ai répondu, il me demande

#

le mots de passe que je veux mettre

white sedge
#

je viens de creer mon index.js pour mon bot en suivant une vidéo
et quand je le lance il me met

#

alors qu'il y a deux heures tout marchait tres bien. voici mon code:

#
require('dotenv').config();
//-------------------------------------
const fs = require('fs');
const { REST } = require('@discordjs/rest');
const { Routes } = require('discord-api-types/v9');                  //importaion des diff modules utilisés
const { Client, Collection, Intents } = require('discord.js');

//-------------------------------------

const client = new Client({ intents: [
    Intents.FLAGS.GUILDS,                   //création du client
    Intents.FLAGS.GUILD_MESSAGES
] });

//-------------------------------------//

const commandFiles =  fs.readFileSync("./commands").filter(file => file.endsWith(".js"));
const commands = [];
client.commands = new Collection();                        //sys de commandes
for (const file of commandFiles) {
    const command =  require(`./commands/${file}`);
    command.push(command.data.toJSON());
    client.commands.set(command.data.name, command);
}

//-------------------------------------//

client.once("ready", () => {
    console.log("Le bot est connecté");
    const CLIENT_ID = client.user.id;
    const rest = new REST({
        version:"9"
    }).setTokent(token);
    (async () => {
        try {
            if (process.env.ENV === "production") {
                await rest.put(Routes.applicationCommand(CLIENT_ID), {
                    body: commands
                });
                console.log("Les commandes sont enregistrées globalement");
            } else {
                await rest.put(Routes.applicationCommand(CLIENT_ID, process.env.GUILD_ID), {
                    body: commands
                });
                console.log("commandes sont enregistrées localement ");
            }
        } catch (err) {
            if (err) console.log(err);
        }
    })
});

//-------------------------------------

client.login(process.env.TOKEN);

uncut eagle
#

Bonsoir, quelqu'un peut m'aider ?

bot.user.setPresence({ activity: { name: `${bot.users.cache.size} members` , type: 'WATCHING'}, status: 'online' })

J'ai ça de base, et après une minute je veux que le status change pour, exemple : "Bonsoir". L'autre minute d'après je veux que le nombre de membres soit à nouveau affiché sur le status, comment je peux faire ?

lethal wave
#

Y'a des dev qu'ont déjà utilisé socket.io ici ? Je pette mon crâne sur un rien c'est chaud.

#

J'ai une entière classe qui créer un serveur WebSocket avec socket.io, elle y attends un message envoyé depuis mon front (client) : client ---> serveur

#

dès qu'elle le reçois elle re emmet un message à l'utilisateur et à un autre utilisateur spécifié : serveur ---> client

#

Sauf que ce connard de receiverSocket il veux pas recevoir, en revanche socket (l'utilisateur ayant emit "message") lui reçoit..

#

Le fucking to() est broken

cyan iron
peak cedar
#

est ça m'avais aider

#

si

#

sa ne regle pas

#

Ping moi ^^

white sedge
#

Okay

#

Je vois ça ce soir

peak cedar
#

ça marche 🙂

dire latch
#

Hey, il y a une différence d'utilisé bot.on et bot.once ? 🤔

past nimbus
#

On -> trigger à chaque fois
Once -> une seule fois

dire latch
#

Ok

coarse trench
#

Quelqu'un sait pourquoi ?

#

Voilà l'erreur

#

Voilà le code

coarse hinge
coarse trench
coarse hinge
#

Ok, je voulais check si tu avais pas fait ton module en once qui fait le même Bug bon a savoir le délais

bold sparrow
#

Yop, j'ai un petit soucis en react, j'ai un élément qui doit être chargé une fois que la page a chargé, car cet élément a besoin de récupérer des informations autrement il affiche la mauvaise chose.

J'ai mes classes pour vérifier quand le composant est généré, et quand il est détruit, ils ont tout deux un listener pour écouter quand la page est chargée et l'autre pour détruire l'event.

Ces events font qu'une fonction sera appelée, je l'appelle et pourtant j'ai plus rien

past nimbus
#

Montre ton code

misty parcel
#

Bonjour est ce que quelqu'un sait comment faire en sorte que son bot puisse changer les permissions d'un salon s'il vous plaut

ancient sonnetBOT
lone flax
#

Let’s go

#

C’est pas du tout ça mdrrr

#

Cherche permissionOverwrites sur la doc de nodejs

misty parcel
#

ok

sharp grail
lone flax
#

DiscordJs sorry mdr

#

La fatigue je viens de me lever

desert riverBOT
white sedge
peak cedar
normal lichen
#

Bonsoir, je me remet doucement au bot discord et j'aimerais savoir si c'est possible d'empecher les joueurs d'inviter mon bot sur leur serveur ?

lone flax
#

Sur l’API de discord

#

Tu peux choisir si ton bot est public ou private

normal lichen
#

je peut pas desactiver sa me dit qu'il ne peut pas y'avoir de champ d'installation ^^

dire latch
#

🤔

normal lichen
#

je suis desoler, je decouvre ^^

dire latch
#

Tu décoches ceci

normal lichen
#

oui oui ^^

dire latch
#

Ba c'est good alors

normal lichen
#

non justement c la que sa m'ecrit qu'il ne peut pas y'avoir de champ d'installation ^^

dire latch
#

C'est rien ça

#

C'est un message préventif

normal lichen
#

oui mais sa recoche le public bot tout seul xd

dire latch
#

Faut sauvegarder aussi mdr

#

En bas, tu as quelque chose qui s'affiche

normal lichen
#

en bas de ma page ?

dire latch
#

Oui

normal lichen
#

juste ca

dire latch
#

Quand tu décoches

#

Ta ceci

normal lichen
#

oui et quand je clique sur save change j'ai le msg rouge qui apparait

fading glacier
#

sinon ça ne marchera pas

normal lichen
#

il est où ce bouton ? ^^

fading glacier
#

Ou sinon ici

normal lichen
#

merci je vais y regarder,

#

nickel merci j'ai mit en none ^^

white sedge
#

je viens de reinstaller node.js pour le mettre a jour mais vsc ne detecte plus node.js "aucun debogueur dispo"

dire latch
#

Essaye de redémarrer ton pc @white sedge

white sedge
#

eeet

#

ca ne marche pas

dire latch
#

Ah

white sedge
#

bon bah go la manière forte

#

reinstaller vsc

dire latch
#

Et sans le debug, sa fonctionne ?

white sedge
#

nan

dire latch
#

node -v ?

white sedge
#

derniere version

dire latch
#

Mais sa fonctionne quand tu le fais ?

glass cargo
misty parcel
#

Bonjour est ce que quelqu'un sait si la propriété startsWith marche toujours ?

misty parcel
#

Ah bon ? J'ai essayer ça

const pseudo = "test"
        client.on('messageCreate', (message) => {
            if(message.author.bot) return;
            if(message.conent.startsWith(pseudo)){
                message.channel.send("ok")
            }
        })
slim anvil
#

conTent

misty parcel
#

oh

#

ça marche houra

#

Pour une lettre

#

Alors juste le bot me renvoie 3 fois "ok"

#

Alors que j'ai mis if(message.author.bot) return;

misty parcel
#

Oui oui je sais maintenant

glass cargo
misty parcel
#

non non

glass cargo
#

Comme ça, on va pouvoir voir si c’est lui qui déclenche l’évènement ou si c’est toi qui le déclenche 3 fois

misty parcel
#

ça répond 3 fois UwU

glass cargo
misty parcel
#

oui

glass cargo
misty parcel
glass cargo
#

Ok

misty parcel
#

C'est le cas de le dire

glass cargo
#

Je peux avoir l’entièreté du fichier ?

misty parcel
#

Il est gros

#

Je vais voir si je peux

glass cargo
misty parcel
glass cargo
#

Je trouve pas

#

Tu t’es pas planté de fichier ?

misty parcel
#

non

#

Enfin je crois pas

glass cargo
#

x)

misty parcel
#

Je vais t'envoyer le dossier au pire

glass cargo
#

Fin donnes-moi sans les modules

slim anvil
#

Ça sent juste le triple process

misty parcel
#

Ah merde

glass cargo
misty parcel
#

euh attends cliques pas

white sedge
misty parcel
white sedge
#

Oui

white sedge
# glass cargo Bizarre

Encore plus bizarre quand je lançais le prog et qu’il marchait il y avait une autre err « discord /rest n’est pas installé » alors que je l’avais installé et quand je regarde dans les modules de node bah discord/rest a été supprimé

misty parcel
#

Voila hein

white sedge
#

Je pense que je vais revenir à discordjs v12

glass cargo
#

Parce que bientôt, elle risque de ne plus pouvoir être utilisée :/

mystic bison
#

j'ai des gros gros gros problème avec mon code, pour save une image d'un post.
Contexte :
je code en javascript, dans le but de faire un réseau social.
j'utilise mongo db, mais pas en local, je me connecte directement au serveur de mongodb
j'utilise aussi express, axios, multer.

J'ai démarrer le projet il y a 4 mois et je n'arrive pas à régler ce problème, le problème a l'aire d'être simple c'est une histoire d'enregistrement du nom du fichier. je pense que les fichiers ou je me suis trompé son les routes ou post.controller.js
Tout mon code est disponible sur mon github, et mon réseau social est actuellement déployé https://f1network.social

mystic bison
#

SVP c'est vraiment urgent

flat sandal
#

Faut expliquer ton problème

mystic bison
#

et voila dans mongo db

flat sandal
#

Dans ta base de données, tu rajoutes Date.now()

mystic bison
#

oui

#

c'est déjà le cas

flat sandal
#

Mais du coup, c'est quoi qui n'est pas bon ?

#

Parce que le code fait exactement ce que tu veux x)

mystic bison
#

le nom de l'image qui est enregistrer ne correspond pas au nom dans la base de données du post

past nimbus
#

Modifie le ?

mystic bison
#

je sais plus comment faire, je me suis perdu avec tout les tests que j'ai fais 😭

past nimbus
#

Hum..

#

Le fichier hard ?

mystic bison
#

voila mon post.routes.js

#
const router = require("express").Router();
const {
  readPost,
  createPost,
  updatePost,
  deletePost,
  likePost,
  unlikePost,
  commentPost,
  editCommentPost,
  deleteCommentPost,
} = require("../controllers/post.controller");
const multer = require("multer");
const path = require("path");

//upload
const storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, `${__dirname}/../client/public/uploads/posts/`);
  },
  filename: function (req, file, cb) {
    cb(null, Date.now() + path.extname(file.originalname));
  },
});

var upload = multer({ storage: storage });

router.get("/", readPost);
router.post("/", upload.single("file"), createPost);
router.put("/:id", updatePost);
router.delete("/:id", deletePost);
router.patch("/like-post/:id", likePost);
router.patch("/unlike-post/:id", unlikePost);

router.patch("/comment-post/:id", commentPost);
router.patch("/edit-comment-post/:id", editCommentPost);
router.patch("/delete-comment-post/:id", deleteCommentPost);

module.exports = router;
past nimbus
#

Non mais explique ton problème, j'ai ton code sous les yeux

#

C'est le fichier hard le soucis ?

mystic bison
#

hard ?

#

j'ai pas de fichier hard

past nimbus
#

Fichier "hard" = le fichier sur ton disque
Le fichier "soft" = ton objet équivalent en db (ta table user_files par exemple ou bien un objet js)

#

C'est pour différencier sinon on se comprend jamais quand on dev un cloud etc

mystic bison
#

d'accord est bah écoute je ne sais pas

mystic bison
past nimbus
#

Bah si tu me dis que le nom est pas bon, c'est le fichier hard ou bien l'entré en db ?

#

C'est ton code quand même...

#

?

mystic bison
#

c'est le fichier soft

past nimbus
#

Donc ta base de données

#

Quelle est le champ qui est pas bon ? Quelle est sa valeur et quelle devrait être sa valeur ?

mystic bison
#

la valeurs n'est pas bonne

past nimbus
#

Quelle devrait être la valeur ?

mystic bison
#

ca

#

attend j'ai modifier la base de donné

#

sans faire exprès tout à l'heure

past nimbus
#

Regarde ton code, tu fais n'importe quoi dans ton post

mystic bison
#

la valeur qui est pas bonne

past nimbus
#

Tu saves ton fichier directement dans ton rep de stockage, du coup multer lui génère un UID
Ensuite toi tu vas faire

"./uploads/posts/" + Date.now() + req.body.posterId + ".jpg"

Donc tu vas faire un autre ID
Déjà pour commencer tu n'utilises jamais les data envoyer par le client pour stocker un fichier
Tu prend le fichier tu le stockes sous un UID sans extension dans un rep temporaire, tu fais une entrée dans ta db avec le nom et l'extension
Ensuite tu le move/rename là où tu veux

mystic bison
#

ok mais ça je sais pas comment faire

past nimbus
#

Commence par comprendre le processus, ensuite tu décomposes et tu peux pas te rater c'est que des actions basiques

#

Le plus "dur" c'est le multer et il est déjà fait

mystic bison
#

tu aurais un site/vidéo ?

past nimbus
#

Pour quelle partie

past nimbus
#

...

#

Print ton req.file

#

Tu vas voir

#

Ah mais tu 'las déjà fais

past nimbus
#

Maintenant suffit d'une demi reflexion

#

Et honnêtement je te conseille de restructurer ton code

mystic bison
past nimbus
#

Tu as compris ce qui allait pas ?
Me dit pas oui juste pour me faire plaisir

mystic bison
#

En gros de ce que j’ai compris, il faut que je fasse un dossier « temporaire » pour que je Check les infos du fichier et puis là je le renomme est le mets dans le bon dossier

past nimbus
#

Dans le processus optimal oui
Mais dans ton code actuel

mystic bison
#

Là je sais pas

past nimbus
#

Ligne 39

mystic bison
#

Je réfléchis

past nimbus
#

Essaie de comprendre ce que ton code fait, plus précisément Multer

mystic bison
past nimbus
#

Non la ligne 39 tu formates juste une chaine de caractères

mystic bison
#

ah

past nimbus
#
`./uploads/posts/${req.file.filename}.jpg`
#

Quelque chose dans le genre plutôt non ?

#

Bon on devrait pas stocker un path mais bon vu que tu le fais comme ça, why not

mystic bison
#

Ok

past nimbus
#

Avec cette ligne tu aura la bonne valeur en db, tu comprends pourquoi ?
Si oui, je te laisse faire le reste

mystic bison
#

je comprends un peut mieux, mais j'ai plus la date maintenant

past nimbus
#

Pourquoi tu as besoin de la date ?

mystic bison
#

si c'est bon

#

c'est pour le post

#

mais c'est bon

past nimbus
#

Bah tu l'as dans la raw de la db

#

Et puis faire du mongodb c'est de la merde ici btw

#

Mais bon

mystic bison
# past nimbus Mais bon

tu serais pas intéressé pour recodé de façon plus sécurisée cette partie là en échange d'une rémunération ?

past nimbus
#

Honnêtement il y a 3 lignes à écrire, c'est un peu du vol de faire payer pour ça
Je préfère te guider, sa sert à rien que je te fasse toute une infra que tu ne pourras pas manage

Si tu as du temps (et l'envie de faire bien les choses) on peut le faire mais je te guidera uniquement (quelques lignes pour dépanner de temps en temps)
Mais il y a beaucoup à faire donc c'est ton choix

mystic bison
#

je pense qu'il faudrait recode les controller post et user, les routes aussi

past nimbus
#

A refaire, il faudra restructurer le code
Séparer les utils
Séparer la logique métier
Gérer tes erreurs proprement
Typer avec typescript se serait ++
Formater et forcer ton code à être plus linéaire (respecter toujours les mêmes règles) avec eslint et prettier pour la forme
Utilise une db adaptée à ton besoin
Tirer l'avantage d'un fichier de config (et setup un env de dev ça peut être cool)
mise en place d'un core

Perso je préfère séparer mon front et mon back dans deux répo et les mettre dans un git group, je trouve plus propre mais c'est pas non plus la mort

#

(j'ai pas regarder le code de ton front)

mystic bison
#

ok

#

et sa irait chiffrer dans les combiens ?

past nimbus
#

Non moi je t'aide gratuitement
Honnêtement je viens pas chercher du boulot, et même si c'était le cas, je te rassure je gagne très bien ma vie, je le ferais bénévolement ou à l'euro symbolique

mystic bison
#

bon bah à 5€ symbolique

#

je peux pas à moins de 5 €

past nimbus
#

Non mais comme dit, je cherche pas de boulot, j'ai déjà bien à faire, je profite juste de mes pauses pour aider

mystic bison
past nimbus
#

Bah après on est sur GCA, tu postes une offre t'aura bien un dev pour te le faire, mais c'est dommage je trouve

#

Rien te garantis que le dev va pas faire de la merde d'ailleurs ^^

mystic bison
#

je sais mais j'en peux plus de se projet je pete un calbe

past nimbus
#

Pourquoi ? Trop long ?

mystic bison
#

oui

#

je passe de discord.js à ça

past nimbus
#

Il est a destination de quoi ? Ton CV ou c'est pour lancer un projet "réel" ?

mystic bison
#

réel

#

je souhaite le déployé et qu'il soit utilisé

past nimbus
#

Tu es dessus depuis cb de temps ?

mystic bison
#

4 mois

past nimbus
#

mmh

#

Bah écoute à toi de voir, mais faut pas perdre espoir ^^

mystic bison
#

depuis debut novembre

past nimbus
#

Bon si tu as besoin d'aide tu me dis

mystic bison
#

ok

#

je vais essayé de faire une pose peut

#

être

mystic bison
past nimbus
mystic bison
#

non

past nimbus
#

La logique métier c'est ce qui est lier à ton app, toi tu fais un réseau social avec des postes, des images des commentaires
La technique c'est comment tu vas l'atteindre en gros

mystic bison
#

ah ok

mystic bison
#

qu'est ce que je dois faire pour que les images fonctionnes

past nimbus
#

La ligne que je t'ai donné plus haut

#

Tu l'utilises à la place de la tiennes

mystic bison
#

like this ?

past nimbus
#

C'est une des solutions parmi d'autres

#

Oui
Je te conseille d'utiliser un IDE plus adapté d'ailleurs (VSC est gratuit par exemple)

mystic bison
#

je sais

#

mais c'est l'ide de mon raspberry pi

past nimbus
#

Tu dev sur un rPi ?

mystic bison
#

non sur mon pc principale avec Vscode

#

mais la je fais le changement directement sur le raspberry

past nimbus
#

okok

mystic bison
#

j'ai 2 fois jpg

past nimbus
#

Ah oui retire juste le .jpg dans la concatenation

mystic bison
#

ok

#

ca fonctionne

#

mercu beaucou^p

normal lichen
#

bonjour excuser moi de déranger un dimanche, j'ai quelque question au sujet des bots discord, quelqu'un pourrait-il y répondre ? ^^

slim anvil
normal lichen
#

j'en ait plusieur en réalité^^

#

je voudrait savoir:
-comment faire pour que le message sois envoyé dans un certaint channel

  • qu'elle est l'intent pour la creation de channel ainsi que la ligne pour la creation de channel
coarse hinge
#

avec ca tu devrais comprendre comment ca marche

normal lichen
#

il ne nécessite pas un intent supplémentaire pour la creation de channel ?

coarse hinge
#

me semble pas

normal lichen
#

d'accord merci beaucoup !^^

coarse hinge
#

tu le verra vite si ca marche pas

wild bramble
#

Salut j'ai besoin d'aide : voici mon erreur : Uncaught TypeError: Cannot read properties of undefined (reading 'content') et voici mon code : client.on("message", (member, message) => { if (message.content.startsWith("setprefix")) { if (message.member.hasPermission("ADMINISTRATOR")) { if (message.content.length > 11) { configprefix = message.content.slice(9); console.log(configprefix) } } } })

slim anvil
#

l'event message ne prend qu'un paramètre il me semble

#

du coup message que tu déclares en 2ème est undefined

#

donc tu peux juste virer le member et laisse uniquement message ce sera bon @wild bramble

wild bramble
wild bramble
#

J'aurais une autre question comment je fais pour récupérer l'id d'un serveur dans un guildCreate ?

white sedge
#

maintenant que mon bot marche mes slash commandes n'apparaissent pas

#

je n'ai plus d'idee

#

voici mon code

desert riverBOT
#

Documentation suggestion for @wild bramble:
:_: GuildMember#permissions
The overall set of permissions for this member, taking only roles and owner status into account

white sedge
#

a

#

pk mon code ne s'envoi pas

sharp grail
white sedge
#

ca fais 3 h

sharp grail
#

Montre ton clde

white sedge
desert riverBOT
#

Documentation suggestion for @wild bramble:
:_: (event) Client#guildCreate
Emitted whenever the client joins a guild.

sharp grail
white sedge
#

//-------------------------------------
const fs = require('fs');
require('dotenv').config();
//const dotenv = require('dotenv');
const { REST } = require('@discordjs/rest');
const { Routes } = require('discord-api-types/v9'); //importaion des diff modules utilisés
const { Client, Collection, Intents } = require('discord.js');

//-------------------------------------

const client = new Client({ intents: [
Intents.FLAGS.GUILDS, //création du client
Intents.FLAGS.GUILD_MESSAGES
] });

//-------------------------------------//
const commandFiles = fs.readdirSync("./commands").filter(file => file.endsWith('.js'));
const commands = [];
client.commands = new Collection();
for (const file of commands) {
const command = require(./commands/${file});
commands.push(command.data.toJSON());
client.commands.set(command.data.name, command);
}
//const envConfig = dotenv.parse(fs.readFileSync('.env'))
//for (const k in envConfig) {
// process.env[k] = envConfig[k]
//}

//-------------------------------------//

client.once("ready", () => {
console.log("Le bot est connecté");

const CLIENT_ID = client.user.id;

const rest = new REST({
    version:"9"
}).setToken(process.env.TOKEN);

(async () => {
    try {
        if (process.env.ENV === "production") {
            await rest.put(Routes.applicationCommands(CLIENT_ID), {
                body: commands
            });
            console.log("Les commandes sont enregistrées globalement");
        } else {
            await rest.put(Routes.applicationGuildCommands(CLIENT_ID, process.env.GUILD_ID), {
                body: commands
            });
            console.log("les commandes sont enregistrées localement ");
        }
    } catch (err) {
        if (err) console.log(err);
    }
})();

});

//-------------------------------------

client.login(process.env.TOKEN)

dire latch
#

Envoi le fichier directement

white sedge
dire latch
#
client.once("ready", async(bot) => {
  try {
    await rest.put(Routes.applicationGuildCommands(IDBOT, IDDISCORD), {body: Array.from(bot.interactions.values())});
  } catch (err) {
    console.error(err);
  }
});
#

Ceci je pense

white sedge
#

merci je vais tester

white sedge
dire latch
#

Ah 🤔

white sedge
#

je devais bien le mettre comme ca ?

    console.log("Le bot est connecté");
    
    const CLIENT_ID = client.user.id;
    
    const rest = new REST({
        version:"9"
    }).setToken(process.env.TOKEN);
    
    (async(bot) => {
        try {
          await rest.put(Routes.applicationGuildCommands(IDBOT, IDDISCORD), {body: Array.from(bot.interactions.values())});
        } catch (err) {
          console.error(err);
        }
      })();
});```
dire latch
#

Pk tu met async bot ?

#

Tu met le bot dans ton client.once

#

Même pas besoin même

#
client.once("ready", () => {
    console.log("Le bot est connecté");
    
    const CLIENT_ID = client.user.id;
    
    const rest = new REST({
        version:"9"
    }).setToken(process.env.TOKEN);
    
  try {
    await rest.put(Routes.applicationGuildCommands(IDBOT, IDDISCORD), {body: Array.from(client.interactions.values())});
  } catch (err) {
    console.error(err);
  }
});```
nova current
#

quelqu'un peu m'aider avec mon code s'il vous plait ..

dire latch
nova current
#

comme ci dessus

dire latch
nova current
#

merci

#
Error: Cannot find module 'C:\Users\alexb\Desktop\v2 cookie bot\Events\bot\index.js'
    at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
    at Function.Module._load (node:internal/modules/cjs/loader:778:27)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
    at node:internal/main/run_main_module:17:47 {
  code: 'MODULE_NOT_FOUND',
  requireStack: []
}
#

erreur

#

et

#
/**@format */

const Discord = require("discord.js")
const Client = require("./Client")

/**
 * @template {keyof Discord.ClientEvents} K
 * @param {Client} client 
 * @param {Discord.ClientEvents[K]} eventsArgs 
*/

function RunFuction(client, ...eventsArgs)

/**
 * @template {keyof Discord.ClientEvents} K
*/

class Event {

    /**
     * @param {K} event 
     * @param {RunFuction<K>} runFunction 
    */

    constructor(event, runFunction) {

        this.event = event;
        this.run = runFunction
    }
}

module.exports = Event;
white sedge
#

@dire latch j'ai trouve mon err

#
for (const file of commandFiles)

au lieu de commandFiles j'avais mis commands

#

maintenant j'ai les slash commands

dire latch
#

Ah oui 🙂

#

J'avais pas look là mdr

quasi mauve
#

Salut, j'ai un petit problème j'ai rajouter une commande et maintenant sa m'affiche sa dans le terminal quand je veux lancer le bot C:\Users\gabri\Documents\BambouBot\index.js:16 bot.commands.set(props.config.name, props)

keen narwhal
#

C’est mieux avec le code pour que quelqu’un puisse t’aider

wild bramble
#

Salut, j'ai un problème : Uncaught TypeError: Cannot read properties of undefined (reading 'send') et voici mon code : client.on("guildMemberAdd", message => { let welcomechannel = client.channels.cache.get(config?.welcomechannel); welcomechannel.send(config?.welcomessage) })

misty parcel
#

Pourquoi config? @wild bramble

wild bramble
misty parcel
#

🤔

wild bramble
#

Mais même si au lieu de mettre ça je met par exemple : bonjourj'ai toujours l'erreur

misty parcel
#

C'est pas mieux defaire client.channels.cache.get("id de ton salon").send("Message de bienvenue") ?

wild bramble
#

et c'est la même

misty parcel
#

ah

#

attends

sharp grail
wild bramble
sharp grail
#

Le channel n'est pas présent dans le cache, tu dois donc le fetch 🤔

misty parcel
#

T'es sure ?

sharp grail
#

Si le channel existe, oui

#

néanmoins

#

le problème peut aussi venir de config?.welcomechannel

wild bramble
#

Car dans le fichier json j'ai bien mon welcome channel qui apparaît

misty parcel
#

c'est ce a quoi j'ai penser aussi

sharp grail
#

bon bah tu dois le fetch du coup

#

tente

#

un truc du style

wild bramble
#

Ok

sharp grail
#

d'ailleurs euh sinon

#

pour message ?

#

et pas member ?

dire latch
#

message n'existe pas dans le guildMemberAdd@wild bramble

#

Il me semble

red torrent
#

channels n'existe pas dans client surtout

#

Avant de récupérer un channel tu dois récupérer une guild

hybrid elk
#

Hello, j'ai un soucis avec mon bot, j'ai voulu faire un role dont la couleur change toutes les 2 secondes, ça à marché hier puis plus d'un coup

#

Et pourtant j'ai pas été rate limit, je sais pas ou est le problème

#

(J'ai mis find et pas get parce que de base je cherchais le role par nom)

hybrid elk
desert riverBOT
#

Documentation suggestion for @red torrent:
:_: Client#channels
All of the [Channel](<https://discord.js.org/#/docs/discord.js/stable/class/Channel>)s that the client is currently handling, mapped by their ids - as long as sharding isn't being used, this will be every channel in every guild the bot is a member of. Note that DM channels will not be initially cached, and thus not be present in the Manager without their explicit fetching or use.

sharp grail
#

Si bongoTap

naive wharf
#

color : colors[Math.floor(Math.random() * colors.length)]

hybrid elk
#

Mais du coup le problème viens pas du code, on dirait que mon bot est genre soft ban de cette fonctionnalité

#

Un genre de rate limit

naive wharf
#

C’est entre 0 et 9

#

Quand tu mets + 1 il cherche une valeur qui n’existe pas dans ton array

#

Et essaye de mettre une couleur undefined et fait crash ton bot

hybrid elk
#

??

sharp grail
#

Ensuite

#

Le .length renvoie déjà + 1 par rapport à l'index maximum, donc tu as une chance d'avoir une valeur qui est index out of range

#

Ah et sinon

#

Ton code n'est pas bon x)

#

C'est pas ce qu'a fait Sam

naive wharf
naive wharf
#

mais voila tu tombes quand même sur un undefined

sharp grail
#

Mais l'erreur persiste oui, du au fonctionnement de la property .length d'un array

broken python
#

Slt les gens je fais un programme pr verifier si un triangle est rectangle sur ses trois cotés mais du coup j'ai un doute jsp si ca fonctionne ```js

var a, b,c, somme;
a = prompt("Donnez la valeur d'un des cotes");
b= prompt("Donnez la valeur d'un autre cote:");
c= prompt("Donnez la valeur de l'hypoténuse :");

a = parseFloat(a);
b = parseFloat(b);
c = parseFloat(c);

valeur1 = aa;
valeur2 = b
b;
valeur3 = c*c;

somme = valeur1 + valeur2;
cote_rectangle_a = valeur3

if (Math.sqrt(somme)==Math.sqrt(cote_rectangle_a))
{ alert("Triangle est rectangle");

} else {
alert("Triangle non rectangle");
}

somme1 = valeur2 + valeur3;

cote_rectangle_b = valeur1

if (Math.sqrt(somme1)==Math.sqrt(cote_rectangle_b))
{ alert("Triangle est rectangle");

} else {
alert("Triangle non rectangle");
}

somme2 = valeur3 + valeur1;
cote_rectangle_c = valeur2

if (Math.sqrt(somme2)==Math.sqrt(cote_rectangle_c))
{ alert("Triangle est rectangle");

} else {
alert("Triangle non rectangle");
}

sharp grail
#

euh

#

déjà y a des variables que t'as pas définis

#

ensuite

#

ça n'a aucun sens

naive wharf
#

voila l'ami comme ton but est de seulement voir si c'est un triangle rectangle pas besoin de refaire des racine carré après

sharp grail
#

bah par contre

#

si tu demandes déjà les côtés précis

#

pas d'intérêt de faire plusieurs conditions

broken python
broken python
sharp grail
#

ça a pas trop de sens

#

mais sinon oui x)

broken python
broken python
naive wharf
#

pas de quoi

mystic bison
#

Bonsoir, je voulais savoir comment on fait comme avoir un site web connecté à son bot discord comme avec le bot discord de GCA

past nimbus
#

Oauth pour l'authentification discord

mystic bison
#

ok

hidden cypress
#

Quelqu'un pourrais m'aider sur sa ?

hazy mirage
hybrid elk
#

@hidden cypress

fierce plank
#

Hello

#

est ce que vous saurez me dire pk j ai cette erreur ?

keen narwhal
oak turret
#

je me mets sur mon pc et je check ça

lone flax
#

.owner te retourne déjà l'user

keen narwhal
#

J'ai du mal lire la doc

lone flax
#

Yep, ça ne retourne pas un member

keen narwhal
#

Donc j'enleve les .user

lone flax
#

Oui

keen narwhal
#

Username aussi c'est pas bon ?

lone flax
#

guild.owner ça n'existe pas

#

fin je crois

#

owner c'est juste pour un message

keen narwhal
#

Sa exitser en v12

#

X)

ancient sonnetBOT
#
Résultats de la recherche: guildowner
lone flax
#

Nope

#

Ca n'existe pas

ancient sonnetBOT
#
Résultats de la recherche: username
keen narwhal
#

Ha !

lone flax
#

Faut utiliser /docs

keen narwhal
#

L'erreur et que username n'est pas défini*

lone flax
#

Il n'est pas défini parce que owner n'existe pas

#

Donc tu ne peux pas récupérer l'username de quelque chose qui n'existe pas

desert riverBOT
keen narwhal
#

C'est pas sa je crois x)

lone flax
neat lintel
#

Tu as aussi une méthode guild.fetchOwner() si tu veux aller plus vite

keen narwhal
#

Tu a la doc en question please ?

#

Pour que je copie pas bêtement

keen narwhal
#

Merci

oak turret
#
const guildOwner = await message.guild.fetchOwner();
console.log(guildOwner.user.tag);
// output : Lartaxx#8301
neat lintel
#

guildOwner est un GuildMember donc la ici il manquerait la propriété user avant tag

oak turret
#

c'était pour voir si tu suivais 👀

dire latch
#

Mensonge, jreconnais

oak turret
#

return;

coarse hinge
#

return console.log('Error 404 not found');

desert riverBOT
fierce plank
#

Hello

#

Je suis entrain de faire un systeme de register avec sequelize et je voudrais savoir comment je peux faire pour executer la creation de l'utilisateur

#
router.post("/api/users/create", (req, res) => {
    console.log(req.body)
    User.findOne({ where: {
        name: req.body.name,
        password: req.body.password
    }}, async (err, doc) => {
        console.log(doc)

        if (doc) res.send("User Already Exists");
        if (err) throw err;
        if (!doc) {
            const hashedPassword = await bcrypt.hash(req.body.password, 10);

            const newUser = await User.create({
                name: req.body.name,
                password: hashedPassword,
            });
            await newUser.save();
            res.send("User Created");
        }
    });
});
coarse hinge
#

après d'après ton code ca devrais marcher

fierce plank
keen narwhal
#

Possibilité de m'aider ?

keen narwhal
# fierce plank tu remplace ca

Je débute, et je te promet que je comprend pas x)
on peut pas mettre un consol log dans un embed, enfin je crois pas..

sharp grail
#

Tu connais les bases du js ?

keen narwhal
#

Oui

cyan iron
#

Vu la question que tu viens de poser je ne pense pas, je te conseille d'apprendre avant 😉

fierce plank
past nimbus
#

+1

copper pagoda
past nimbus
#

Tu peux utiliser un ORM pour garder cette logique d'objet (sequelize par exemple)

sharp grail
#

Euh

sharp grail
past nimbus
#

Bien vu j'avais pas lu :p

past nimbus
mental terrace
#

Wesh il y a des gens qui font du extends script, c'est un langage type javascript qui permet d'automatiser les logiciel adobe
alors voila la j'essaye d'ajouter un effet a un clip mais ca ne marche pas mais pour autant je n'ai pas d'erreur voila mon code, merci de votre aide

app.enableQE();

var qeTrack = qe.project.getActiveSequence().getVideoTrackAt(0);
if (qeTrack){
    var qeClip = qeTrack.getItemAt(0);
    if (qeClip){
        var effectToAdd = qe.project.getVideoEffectByName("Crop");
        if (effectToAdd){
            qeClip.addVideoEffect(effectToAdd);
        }
    }
}

mentionnez moi svp

fading glacier
#

Une de tes trois conditions n’est pas remplie, essaye de debug ton code tu trouveras sûrement l’erreur

fierce plank
#

Re