#javascript-typescript

1 messages · Page 32 of 1

noble mountain
#

Tu parles de ça ?

sinful flicker
#

yes ,

#

ca te log ton 'Handling DM...'

#

quand tu reponds ?

noble mountain
#

Je test ça je me souviens plus

noble mountain
#

Trying to save application: userId=302140208239869965, category=developer, responses=[], step=0
saveApplication: Saved application for user_id=302140208239869965, step=0, responses=[]
Message received from vriziixx in 1: test

sinful flicker
#

Donc ton probleme commence ici 😉

noble mountain
#

C'est ça que j'arrive pas à répondre

sinful flicker
#

Okay, déja il faut que tu ai les bon intents

#

GatewayIntentBits.MessageContent, GatewayIntentBits.DirectMessages

#

Ensuite si tu compte redemarer ton bot pendant que des gens sont entrain de repondre ou quoi, il vas falloir que tu re cache tes channels privées

#

donc tu peux rajouter dans la création de ton client partials: [Partials.Channel]

noble mountain
#

Yep mes intents c'est bon


const client = new Client({
    intents: [
        GatewayIntentBits.Guilds,
        GatewayIntentBits.GuildMessages,
        GatewayIntentBits.GuildMembers,
        GatewayIntentBits.GuildVoiceStates,
        GatewayIntentBits.DirectMessages,
        GatewayIntentBits.MessageContent
    ],
    partials: ['CHANNEL', 'MESSAGE']
});

sinful flicker
#

et ensuite tout simplement

#

if (message.channel.type === 'DM') {

#

ne peux pas etre correcte

#

car channel type est un nombre

noble mountain
sinful flicker
#

et donc le channel.type d'un message privé === 1

#

si ton ChannelType est définis oui !

noble mountain
#

T'es un boss !

#

ça marche

#

😄

#

J'ai pas fais attention pour ce détail

sinful flicker
#

😉

noble mountain
#

@sinful flicker, pour ma candidature tout fonctionne ça enregistre bien la réponse et tout dans ma bdd mais je veux que quand l'utilisateur envoie sa réponse à la question, ça mette à jour l'embed que le bot m'a initialement envoyé avec le résumé des questions avec la réponse de l'utilisateur :


async function updateQuestionEmbed(client, messageId, channelId, category, step, responses) {
    try {
        if (!messageId || !channelId) {
            console.error('messageId ou channelId est indéfini:', { messageId, channelId });
            return;
        }

        console.log(`Tentative de récupération du canal avec ID: ${channelId}`);
        const channel = await client.channels.fetch(channelId);

        if (!channel) {
            console.error('Canal non trouvé ou inaccessible:', channelId);
            return;
        }

        console.log(`Canal trouvé: ${channel.id}. Tentative de récupération du message avec ID: ${messageId}`);
        const message = await channel.messages.fetch(messageId);

        if (!message) {
            console.error('Message non trouvé ou inaccessible:', messageId);
            return;
        }

        const filledResponses = responses.map((response, index) => response || "Pas de réponse");

        const description = questions[category].map((question, index) => {
            return `${question}\n${filledResponses[index] || "Pas de réponse"}`;
        }).join('\n\n');

        const embed = new EmbedBuilder()
            .setTitle(`Candidature ${category}`)
            .setDescription(description)
            .setColor('#00AAFF');

        const row = new ActionRowBuilder()
            .addComponents(
                new ButtonBuilder()
                    .setCustomId(`previous_${messageId}`)
                    .setLabel('Précédent')
                    .setStyle(ButtonStyle.Secondary)
                    .setDisabled(step === 0),
                new ButtonBuilder()
                    .setCustomId(`next_${messageId}`)
                    .setLabel('Suivant')
                    .setStyle(ButtonStyle.Primary)
                    .setDisabled(step >= questions[category].length),
                new ButtonBuilder()
                    .setCustomId(`cancel_${messageId}`)
                    .setLabel('Annuler')
                    .setStyle(ButtonStyle.Danger),
                new ButtonBuilder()
                    .setCustomId(`submit_${messageId}`)
                    .setLabel('Valider l\'envoi')
                    .setStyle(ButtonStyle.Success)
                    .setDisabled(step < questions[category].length)
            );

        console.log(`Mise à jour du message avec ID: ${messageId}`);
        await message.edit({ embeds: [embed], components: [row] });
    } catch (error) {
        console.error('Erreur lors de la mise à jour du MP:', error);
        if (error.code === 10008) {
            console.error('Le message ou le canal est peut-être invalide ou supprimé.');
        }
    }
}
#

j'ai cette erreur là

#

C'est quand il essaye de mettre à jour l'embed quand j'ai envoyé ma réponse à la première question

sly shale
#

Il arrive pas a catch le message

#

«  unknow message «

noble mountain
ember phoenix
#

t'arrive bien à trouver toi un salon avec comme id 12.... et un message dessus avec l'id 126...

#

? juste pr savoir si le truc existe vraiment

#

car sois il existe pas, et tu t trompé de message/salon dans ton code

#

sois il existe et la c une autre istoire

noble mountain
#

En gros, il envoie un embed en PM

#

Avec les différentes questions de la candidature

#

Et dès que l'utilisateur répond à la première question, l'embed doit se mettre à jour avec sa réponse

ember phoenix
#

hmmmm, t'a l'intent des messages privés?

noble mountain
#

Yep

ember phoenix
#

mais ta pas repondu à la question 😭 est-ce que le message de l'erreur existe ou pas vu que tu peux check les id des messages en tant que toi utilisateur

noble mountain
#

Le dernier message id que j'ai reçu

#

C'est le bon

ember phoenix
#

hmmm

#

et le message est pas supprimé

noble mountain
#

Donc ça viendrait du channel_id ?

#

Nop

ember phoenix
#

hmmm jpense pas sinon taura l'erreur Unknown Channel

#

jpeux voir ton code

noble mountain
#

J'le met comme ça car 300 lignes

ember phoenix
#

aaaaaaah mais wsh du sql et tout

#

console log le resultat du sql? ¯_(ツ)_/¯

#

voi si ça renvoie bien cque tu veux$

#

quand je bloque moi je console.log tout le temps ou jutilise les console log temporaire (breakpoints) de vscode

#

ou jutilise typescript pour eviter les erreurs de type de variable

noble mountain
#

Il est bon

ember phoenix
#

c'est bien l'id du message et pas l'id du salon ou un truc comme ça ?

noble mountain
#

Tentative de récupération du canal avec ID: 1204095159848017933
Canal trouvé: 1204095159848017933. Tentative de récupération du message avec ID: 1267272092852686849

#

Bah ce qui est bizarre c'est l'id du message qu'il trouve pas

#

Alors que c'est bien le bon qu'il met ici

ember phoenix
#

par contre cette partie

#

si le message est trouvé .fetch va renvoyé ducoup l'object Message dans message et les 4 lignes en bas ne sexecuteront jamais

#

si le message est pas trouvé, await .fetch va renvoyer une erreure et donc tout le reste du bloc sera skip

#

donc bah le if(!message) sera jamais executé qu'importe

noble mountain
#

J'ai trouvé le soucis faut que je le règle, il récupère l'id du salon ou y'a l'embed pour candidater

ember phoenix
#

ooo

noble mountain
#

Donc c'est bien le channel_id qui était mauvais

ember phoenix
sinful flicker
noble mountain
#

C'est bon problème réglé

ember phoenix
#

yayyyy

#

jmerite un nitro pr le soutient moral tu trouve pas

noble mountain
#

Fin j'ai 40 balles mais ricrac pour la fin du mois xd

ember phoenix
sly shale
noble mountain
ember phoenix
sly shale
#

oui XD

empty mauve
#

slt, jvoulais savoir comment je pourrais avoir ma conssole qui affiche mes log comme ceci pls

ember phoenix
#
console.log('--------')
console.log('| pipi |')
console.log('--------')
#

aprés tu peux rendre ça meilleur comment en fesant '-'.repeat(ton_texte.length)

#

carrement en rendant ça une fonction

#

bref le mieux pr s'améliorer c'est d'essayer d'abord

empty mauve
#

👍

sinful flicker
#

après si tu parle de la couleur tu peux utiliser https://www.npmjs.com/package/chalk

gleaming pier
#

Bonsoir j'arrive pas a régler cette erreur (Erreur lors du rejet du ticket: DiscordAPIError[50035]: Invalid Form Body
user_id[NUMBER_TYPE_COERCE]: Value "ticket" is not snowflake.
at handleErrors (C:\Users\dvrk1\Desktop\MystralBotDiscord\node_modules@discordjs\rest\dist\index.js:730:13)
at process.processTicksAndRejections (c:\Users\dvrk1\Desktop\MystralBotDiscord\lib\internal\process\task_queues.js:95:5)
at async SequentialHandler.runRequest (C:\Users\dvrk1\Desktop\MystralBotDiscord\node_modules@discordjs\rest\dist\index.js:1133:23)
at async SequentialHandler.queueRequest (C:\Users\dvrk1\Desktop\MystralBotDiscord\node_modules@discordjs\rest\dist\index.js:963:14)
at async _REST.request (C:\Users\dvrk1\Desktop\MystralBotDiscord\node_modules@discordjs\rest\dist\index.js:1278:22)
at async GuildMemberManager._fetchSingle (c:\Users\dvrk1\Desktop\MystralBotDiscord\node_modules\discord.js\src\managers\GuildMemberManager.js:221:18)
at async Client.<anonymous> (C:\Users\dvrk1\Desktop\MystralBotDiscord\index.js:202:32) {requestBody: {…}, rawError: {…}, code: 50035, status: 400, method: 'GET', …}),

#

if (interaction.customId.startsWith('reject_ticket_')) {
const [, userId] = interaction.customId.split('');
try {
const member = await interaction.guild.members.fetch(userId);
if (!member) {
return interaction.reply({ content: "Impossible de trouver l'utilisateur.", ephemeral: true });
}

            await interaction.reply({ content: 'Votre demande de ticket a été rejetée.', ephemeral: true });

            const requestChannel = client.channels.cache.get(ticketRequestChannelId);
            if (requestChannel) {
                const messages = await requestChannel.messages.fetch();
                const requestMessage = messages.find(msg => msg.embeds[0]?.description.includes(userId));
                if (requestMessage) await requestMessage.delete();
            }
        } catch (error) {
            console.error('Erreur lors du rejet du ticket:', error);
            await interaction.reply({ content: 'Une erreur est survenue lors du rejet du ticket.', ephemeral: true });
        }
    }
ember phoenix
#

la partie de guauche avait une valeure (?)

#

et la partie de droite était "ticket"

#

sauf que t'a nommé ce string/texte "ticket" comme userId

#

peut etre c'est la premiere partie de interaction.customId qui est le userId ?

#

console.log interaction.customId pr voir

gleaming pier
ember phoenix
#

?

noble mountain
#

Je suis de retour ! x)

Petit soucis, sur mon embed de candidature, j'ai mis un bouton pour Valider l'envoi, retourner aux précédentes questions, etc... Mais quand j'ai répondu à toutes les questions et que je reçois le message

"Vous avez terminé toutes les questions. Veuillez utiliser le bouton 'Valider l'envoi' pour soumettre votre candidature."

Mon bouton valider l'envoi ne marche pas, aucune erreur juste "Échec de l'interaction" avec le bot sur discord...

#

Je l'ai mis dans ma function updateQuestionEmbed le bouton

#

J'ai peut-être mon idée pour le coup

plush anchor
noble mountain
#

Aucune comme j'ai dis

plush anchor
#

Ah pardon j'avais pas vu

noble mountain
#

c'est ça qui est le plus drôle je pense kapp

plush anchor
#

Tu as réessayé car c'est bizzare pas d'interaction et pas d'erreur 😅

cursive sail
#

Si tu as échec de l'intéraction, et que rien ne ce passe, dans ce cas y'a un problème dans ton code 🤓

plush anchor
#

Oui peut être que tu ne répond pas à l'interaction

cursive sail
#

Nan en vrai, sûrement que tu as mal désigné ton interaction, du coup il lance rien du tout

noble mountain
#

Est-ce que le fait de mettre à jour mon embed à chaque fois que l'utilisateur répond à une des questions peut être la cause d'un conflit ?

#

Et qui fait que mes boutons d'interactions ne répondent plus du coup

plush anchor
cursive sail
#

Alors attend, j'termine de regarder ton code et j'te dit ça

#

Ah bah c bon j'ai trouver

cursive sail
cursive sail
# noble mountain Je suis de retour ! x) Petit soucis, sur mon embed de candidature, j'ai mis un ...
const row = new ActionRowBuilder()
            .addComponents(
                new ButtonBuilder()
                    .setCustomId(`previous_${messageId}`)
                    .setLabel('Précédent')
                    .setStyle(ButtonStyle.Secondary)
                    .setDisabled(step === 0),
                new ButtonBuilder()
                    .setCustomId(`next_${messageId}`)
                    .setLabel('Suivant')
                    .setStyle(ButtonStyle.Primary)
                    .setDisabled(step >= questions[category].length),
                new ButtonBuilder()
                    .setCustomId(`cancel_${messageId}`)
                    .setLabel('Annuler')
                    .setStyle(ButtonStyle.Danger),
                new ButtonBuilder()
                    .setCustomId(`submit_${messageId}`)
                    .setLabel('Valider l\'envoi')
                    .setStyle(ButtonStyle.Success)
                    .setDisabled(step < questions[category].length - 1)
            );

Modif ta ligne 206 en ajoutant un "- 1"

#

ça devrait potentiellement résoudre le prblm

noble mountain
#

Non car mon bouton de validation se dégrise avant la fin des questions

#

Il se dégrisait correctement avant quand toutes les questions étaient terminés

#

await message.edit({ embeds: [embed], components: [row] });

#

Je le met bien à jour pourtant ?

cursive sail
# noble mountain Non car mon bouton de validation se dégrise avant la fin des questions
const row = new ActionRowBuilder()
    .addComponents(
        new ButtonBuilder()
            .setCustomId(`previous_${messageId}`)
            .setLabel('Précédent')
            .setStyle(ButtonStyle.Secondary)
            .setDisabled(step === 0),
        new ButtonBuilder()
            .setCustomId(`next_${messageId}`)
            .setLabel('Suivant')
            .setStyle(ButtonStyle.Primary)
            .setDisabled(step >= questions[category].length),
        new ButtonBuilder()
            .setCustomId(`cancel_${messageId}`)
            .setLabel('Annuler')
            .setStyle(ButtonStyle.Danger),
        new ButtonBuilder()
            .setCustomId(`submit_${messageId}`)
            .setLabel('Valider l\'envoi')
            .setStyle(ButtonStyle.Success)
            .setDisabled(step !== questions[category].length)
    );

Et si tu fais comme ça, ça devrait palier ce problème, nan ?

noble mountain
#

Pas l'impression xd

#

Je remet une autre image pour éviter de pub

#

Je vois pas ou est le soucis la vraiment

#

C'est affreux

queen ocean
#

En vrai commence par clean un peu ton code

#

Genre tes customid n'ont pas de logique

#

Tu intégères des variables dedans mais tu les utilises jamais dans l'intération

#

ensuite ajoute des console.log a certains étapes pour voir dans ta console où ton code s'arrête

noble mountain
#

Juste le message générique de discord d'échec

queen ocean
queen ocean
#

donc voila mtn tu sais que ta function est pas appelé

#

donc tu dois trouver le problème au moment où tu appels ta function

silent quiver
#

salut j'ai un petit probleme avec typescript

export interface TextInputParams {
    type: 'text';
    default: string;
    require?: boolean;
       accept?: RegExp;
    min?: number;
    max?: number;
    compare?: keyof les_clés_de_inputConfig
}

export type InputConfig = {
    [key: string]: TextInputParams | ColorInputParams | CheckboxInputParams;
}

Je cherche depuis deux heures sans rien trouver donc je me demande si c'est possible, je voudrais récupérer les clés generique de InputConfig pour que compare soit du type "la liste des clés inputConfig".
Est j'aimerais pouvoir l'utiliser de cette manière :

const inputConfig: InputConfig = {
    password: { type: "text", default: "", require: true },
    passwordConfirm: { type: "text", default: "", require: true, compare: "password" },
    warn: { type: "text", default: "" }
};

J'ai l'impression que c'est la manière dont je veux l'utiliser qui pose problème
PS: le code que j'ai fourni est celui de base qui fonctionne mais pas avec compare

ember phoenix
#

hmmm t'a deja essayé, au lieu que InputConfig soit un objet avec des textes en clé et des paramétres en valeurs, que InputConfig soit un array avec plusieurs objets ?

#

du style ```ts
const inputConfig: InputConfig = [
{ name: "password", type: "text", default: "", require: true },
{ name: "passwordConfirm", type: "text", default: "", require: true, compare: "password" },
{ name: "warn", type: "text", default: "" }
};

#

c'est trés peu recommandé les [key: string]

silent quiver
#

nan car je trouve ça plus facile a écrire quand je code ça ce raproche plus des mongoose schema

ember phoenix
#

aaaaaaah je voit

silent quiver
#

je peu faire un record jsp si c'est mieux

ember phoenix
#

baaah InputConfig peut avoir n'importe quel valeur du js dynamique je pense pas que tu peux recuperer ça

#

ouais une ptite liste typescript

#

avec des valeurs prédéfinies

#

sinon juste compare?: string

silent quiver
#

au pire ouai mais en vrais y'a peu etre moyen avec un array de récuépré ça plus facilement

#

ben mrc je vais teste

ember phoenix
#

je deteste quand j'dois utiliser typescript d'une certaine maniére bizarre pour la rendre compatible logiquement avec un autre module ptdrrr force

honest forge
#

compare?: keyof les_clés_de_inputConfig 🤭

#

mdr

ember phoenix
#

ptdrrrr on en est là

honest forge
#

avec tout le code en anglais ça m'a fait bien rire

#

franchement y'a peut être moyen de faire plus simple

#

ce genre de truc en TS c'est bien relou

silent quiver
#

je confirme

ember phoenix
#

je doute, ts est connu pour surtout pas étre sensible aux valeurs dynamiques js ¯_(ツ)_/¯

ember phoenix
honest forge
#

oui ^^'

#

ça ressemblerait à quoi une clé générique de ton inputConfig ?

ember phoenix
#

c'est à dire ?

#

j'ai 0 vocabulaire ts

honest forge
#

key as keyof typeof les_clés_de_inputConfig

#

mdrr

silent quiver
#

en gros

#

mdr moi je trouve ça tres propre

#

surtout avec l'acent

honest forge
#

je suis en train de recheck ce cours ts de 8h
https://www.youtube.com/watch?v=gieEQFIfgYc

il parle d'un truc qui ressemble a ton pb vers 2h39

Web Dev Roadmap for Beginners (Free!): https://bit.ly/DaveGrayWebDevRoadmap

This TypeScript Full Course for Beginners is an all-in-one beginner tutorial and complete course full of over 8 hours of TypeScript code and instruction to level up your web development skills. Think of this TypeScript full course tutorial as a TS video textbook with 17...

▶ Play video
#

les trucs de clés et tout

silent quiver
#

azy je regarde ça

honest forge
#

courage lol

ember phoenix
#

oulah 8h

#

force force

silent quiver
#

vous etes fou pas les 8h mdr

honest forge
#

franchement je me souviens de quasi rien mdr

ember phoenix
#

en 8h il aura le temps de créer une alternative à typescript

honest forge
#

ça lui prend 8h pour expliquer toutes les erreurs typescript mdrr

#

chatGPT est plutôt efficace avec ça

#

Franchement je pourrais pu me passer de TS pour le front

#

en JS les erreurs sont jamais soulignées

#

Et trop de libs utilisent typescript

#

Pourquoi un bot nous donne des glaces ? mdr

ember phoenix
#

jsspas c'est un jeu bizarre du serveur

ember phoenix
honest forge
#

de ouf

ember phoenix
#

hate de voir des outils qui vont me faire ça mais pour le backend

#

askip pocketbase c bien

honest forge
#

ben pour le coup avoir une lib pour hasher le password

#

ou les trucs de regex quoi

#

utiliser zod au lieu d'écrire un regex a la main mdr

honest forge
ember phoenix
#

remlie la doc

honest forge
#

x)

ember phoenix
#

tro chou

honest forge
#

ouais

#

en backend le framework Adonis est super bien

#

y'a toutes les libs qu'il faut déjà intégrées dedans

#

je comprend pas pourquoi il est pas + utilisé

#

j'admire vraiment les gens qui font leur backend sur Express mdr

#

ou sur Node tout court

#

tellement de travail

silent quiver
#

en vrais perso je suis pas encore un pro du coup Express c'est génial pour comprendre

#

avec node y'a un meilleur control par exemple sur les sockets j'evite d'utiliser des libs

honest forge
#

Ouais c'est bien de commencer par les bases.. Moi j'avais commencé à apprendre le backend sur adonis, ou le travail était déjà hyper maché mdr

#

ça m'a fait un vrai choc de voir a quoi ressemblait du code classique de Node.js

#

^^'

silent quiver
#

le truc le plus chiant c'est le nombre de fichier que tu as pour faire un truc

#

est sans le typescript je n'imagine pas avec

honest forge
#

tu t'y connais beaucoup en back?

silent quiver
#

ouai un peu

honest forge
#

je me posais des question à propos de l'ordre des middlewares

#

genre si c'est très important de les mettre dans un ordre spécial

#

je viens plutot du front

silent quiver
#

il seront executer dans l'ordre que tu leur donne mais c'est pas important si il ne sont pas lié apres le mieux c'est de voir qu'elle sont les priorités

#

si t'as un middleware qui doit refuser une request le plus tot sera le mieux

honest forge
#

ouais effectivement..

silent quiver
#

le mieux c'est de le faire avec nginx

honest forge
#

ça a l'air bien carré comme truc

#

là je suis sur Next js donc c'est un peu spécial comment marchent leur middlewares

#

je capte pas vraiment encore

silent quiver
#

j'ai pas encore utiliser next mais soit doit etre a peu pres pareil

honest forge
#

c'est la manière de déclarer ou on place les middleware qui est étrange

#

enfin bon, je verrais bien..

silent quiver
#

je viens de regarder en vrai y'a pas trop de diff je trouve

#

avec express y'a deux façon de placer un middleware

honest forge
#

là le truc avec next c'est que souvent on voit des tutos ou les gens écrivent un simple middleware qui a seulement une utilité

#

mais si on a besoin de plusieurs middlewares ça a l'air un peu compliqué

#

car il faut les importer dans un seul, a ce que j'ai compris

#

je sais pas comment c'est dans Express

silent quiver
#

dans express soit tu l'utilise à la racine de l'app soit sur chaque route est tu peux aussi le faire entre les deux

#

entre les deux genre /update/user tu peux le placer sur update

honest forge
#

ça a l'air pratique

silent quiver
#

ben en vrais tu dois pouvoir faire la meme chose avec next mais effectivent je comprend pas trop le concept

honest forge
#

ouais ^^'

#

y'a pas mal de trucs un peu étranges dans next

#

mais je trouve ça très cool quand même

silent quiver
# silent quiver salut j'ai un petit probleme avec typescript ```ts export interface TextInputPar...

du coup j'ai trouvé le plus simple c'est de créer une fonction pour générer la config

interface TextInputParamsGeneric<T extends InputConfigGeneric<T>, K extends keyof T> extends TextInputParams {
    compare?: Exclude<keyof T, K>;
}
export type InputConfigGeneric<T extends InputConfig> = {
    [K in keyof T]: TextInputParamsGeneric<T, K> | ColorInputParams | CheckboxInputParams;
}

export function useInputConfig<T extends InputConfigGeneric<T>>(inputConfig: T): T {
    return inputConfig;
}

ça fonctionne nickel

serene tangle
wary urchin
ember phoenix
#

t'a 2 fichiers .js essaye sur les 2 si ça strouve t'a changé qu'un seul au debutlol

wary urchin
ember phoenix
#

ah oui y a pas de composants dessus

#

j'voit pas ce que ça peut étre à part changer en .jsx hein

ember phoenix
#

juste pr me rassurer intérieurement tu peux renommer le fichier en .jsx et screen la nouvelle erreure stp :'))

ember phoenix
#

dans le "main" du package.json ça dis ./src/index.js mais jvoit pas de fichier comme ça c'est normal?

ember phoenix
#

ok je fmg _

oak turret
#

tu peux montrer la page de ton composant stp ?

wary urchin
#

Le fichier ou réellement un screen de la page sur le navigateur?

oak turret
#

le code du composant

keen narwhal
wary urchin
keen narwhal
#

ta ça

{
  "presets": ["next/babel"]
}
keen narwhal
#

?

wary urchin
keen narwhal
#

envoie moi ce que tu as stp

wary urchin
#
/** @type {import('next').NextConfig} */
const nextConfig = {};

export default nextConfig;
keen narwhal
#

essaye ça

const withTM = require('next-transpile-modules')(['@tailoredui/react']);

/** @type {import('next').NextConfig} */
const nextConfig = withTM({});

module.exports = nextConfig;

fais cette commande

npm install next-transpile-modules

et inclue le

{
  "presets": ["next/babel"]
}

pour test

wary urchin
#

mais je ne veux pas régler le problème de mon côté seulement

#

J'aimerais que la librairie fonctionne chez tout le monde

#

Le projet NextJS que j'ai c'est une template

keen narwhal
#

ah ok

wary urchin
#

npx create-next-app@latest

wary urchin
keen narwhal
#

je pense oui, par contre je saurais t'aider..

wary urchin
keen narwhal
#

oui c'est ce que je vois

wary urchin
#

Je ne vois pas ce que ça pourrait être

keen narwhal
#

t'es obligé d'utiliser le tsx ?

wary urchin
#

Normalement non

#

mais je le mets au cas où

#

j'ai déjà essayé sans

#

mais même erreur

keen narwhal
#

ah oui excuse

floral bolt
#

envois un screen de ton package.json

floral bolt
wary urchin
# floral bolt envois un screen de ton package.json
{
    "name": "@tailoredui/react",
    "description": "Set of stylized user interface components for React designed to integrate seamlessly with Tailwind CSS.",
    "version": "0.0.0",
    "main": "./src/index.js",
    "type": "module",
    "peerDependencies": {
        "react": "^18.0.0",
        "react-dom": "^18.0.0",
        "tailwindcss": "^3.0.0"
    }
}
floral bolt
#

tu as que ca ?

wary urchin
#

Oui

floral bolt
#

c'est pour ca

#

donc .babelrc:

  "presets": [
    "@babel/preset-env",
    "@babel/preset-react"
  ],
  "plugins": [
    "@babel/plugin-transform-runtime"
  ]
}```
#

package.json ajoute :

 "main": "dist/index.js",
  "module": "dist/index.js",
"scripts": {
  "build": "babel src --out-dir dist --copy-files",
  "dev": "babel src --out-dir dist --copy-files --watch",
}
wary urchin
#
{
    "name": "@tailoredui/react",
    "description": "Set of stylized user interface components for React designed to integrate seamlessly with Tailwind CSS.",
    "version": "0.0.0",
    "main": "dist/index.js",
    "module": "dist/index.js",
    "type": "module",
    "scripts": {
        "build": "babel src --out-dir dist --copy-files",
        "dev": "babel src --out-dir dist --copy-files --watch"
    },
    "peerDependencies": {
        "react": "^18.0.0",
        "react-dom": "^18.0.0",
        "tailwindcss": "^3.0.0"
    }
}
#

Je suppose que c'est bon?

floral bolt
#

oui tes sensé lancé

#

puis faire npm link

#

si tu y arrive pas ou va tout refaire de la base

wary urchin
floral bolt
#

oui

#

juste pour etre sur tu sais dev des projets node ?

#

parceque l'idée est bonne mais je pense que tu ne comprend pas trop comment marche les modules node

#

c'est pas pour être mechant hein ca ne me derange pas du tout de taidé, mais c'est pour être sur que tu suive bien

#

Non plutôt le principe de npm

wary urchin
floral bolt
#

ok, je vais te faire un petit tuto pour t'expliqué comment faire 😉

wary urchin
#

Jusqu'ici, je n'ai développé que ceci:

floral bolt
#

Tutoriel : Créer et Tester une Bibliothèque de Composants avec Next.js

Ce tutoriel vous guide à travers le processus de création d'une bibliothèque de composants React, puis comment l'intégrer dans un projet Next.js pour tester les composants en développement.

Prérequis

  • Node.js et npm installés sur votre machine.
  • Connaissances de base en JavaScript, React, et Next.js.

Étape 1 : Créer le Projet Next.js

  1. Créer un nouveau projet Next.js

    Ouvrez un terminal et exécutez la commande suivante pour créer un nouveau projet Next.js :

    npx create-next-app@latest my-nextjs-app
    cd my-nextjs-app
    

Étape 2 : Créer le Module

  1. Créer un nouveau répertoire pour la bibliothèque

    Ouvrez un terminal en dehors de vôtre projet next et créez un répertoire pour votre bibliothèque de composants :

    mkdir my-component-library
    cd my-component-library
    
  2. Initialiser un projet npm

    Initialisez un projet npm dans le répertoire de la bibliothèque :

    npm init -y
    
  3. Installer les dépendances nécessaires

    Installez React, Tailwind CSS et Babel pour la compilation des fichiers JSX :

    npm install react react-dom
    npm install --save-dev tailwindcss postcss autoprefixer @babel/core @babel/cli @babel/preset-env @babel/preset-react babel-plugin-transform-runtime
    
  4. Configurer Tailwind CSS

    Initialisez Tailwind CSS et créez les fichiers de configuration :

    npx tailwindcss init
    

    Créez un fichier CSS (src/styles/tailwind.css) avec les directives Tailwind :

    @tailwind base;
    @tailwind components;
    @tailwind utilities;
    

    Créez un fichier postcss.config.js :

    module.exports = {
      plugins: [
        'postcss-import',
        'tailwindcss',
        'autoprefixer',
      ],
    };
    
#
  1. Configurer Babel

    Créez un fichier .babelrc avec la configuration suivante :

    {
      "presets": [
        "@babel/preset-env",
        "@babel/preset-react"
      ],
      "plugins": [
        "@babel/plugin-transform-runtime"
      ]
    }
    
  2. Créer les composants

    Créez un répertoire src/components et ajoutez un composant. Par exemple, créez un fichier Button.jsx :

    import React from 'react';
    import PropTypes from 'prop-types';
    
    const Button = ({ onClick, children }) => (
      <button
        onClick={onClick}
        className="bg-blue-500 text-white py-2 px-4 rounded hover:bg-blue-600"
      >
        {children}
      </button>
    );
    
    Button.propTypes = {
      onClick: PropTypes.func.isRequired,
      children: PropTypes.node.isRequired
    };
    
    export default Button;
    

    Créez un fichier index.js pour exporter les composants :

    export { default as Button } from './components/Button';
    
  3. Configurer les scripts de build

    Modifiez package.json pour ajouter les scripts de construction :

    {
      "name": "my-component-library",
      "version": "1.0.0",
      "description": "A component library built with React and Tailwind CSS",
      "main": "dist/index.js",
      "module": "dist/index.js",
      "types": "dist/index.d.ts",
      "scripts": {
        "build": "babel src --out-dir dist --copy-files && postcss src/styles/tailwind.css -o dist/tailwind.css",
        "prepublishOnly": "npm run build"
      },
      "dependencies": {
        "react": "^18.0.0",
        "react-dom": "^18.0.0"
      },
      "devDependencies": {
        "@babel/cli": "^7.0.0",
        "@babel/core": "^7.0.0",
        "@babel/preset-env": "^7.0.0",
        "@babel/preset-react": "^7.0.0",
        "postcss": "^8.0.0",
        "tailwindcss": "^3.0.0",
        "autoprefixer": "^10.0.0"
      },
      "peerDependencies": {
        "react": "^18.0.0",
        "react-dom": "^18.0.0"
      },
      "keywords": [
        "react",
        "components",
        "tailwindcss"
      ],
      "author": "Votre Nom",
      "license": "MIT"
    }
    
#

Étape 3 : Développer et Tester les Composants

  1. Créer un lien symbolique pour la bibliothèque

    Dans le répertoire de votre bibliothèque, créez un lien symbolique global avec npm link :

    npm link
    
  2. Lier la bibliothèque au projet Next.js

    Passez au répertoire de votre projet Next.js et créez un lien symbolique vers votre bibliothèque de composants :

    npm link my-component-library
    
  3. Utiliser les composants dans Next.js

    Importez et utilisez les composants dans votre projet Next.js. Par exemple, modifiez pages/index.js pour inclure votre composant :

    import { Button } from 'my-component-library';
    
    export default function Home() {
      return (
        <div className="p-4">
          <Button onClick={() => alert('Clicked!')}>Click Me</Button>
        </div>
      );
    }
    
  4. Modifier les composants

    Apportez des modifications à vos composants dans la bibliothèque. N'oubliez pas de reconstruire la bibliothèque si nécessaire :

    npm run build
    

    Les modifications seront automatiquement reflétées dans le projet Next.js grâce au lien symbolique.

Étape 4 : Automatiser la Construction (Optionnel)

  1. Installer nodemon

    Pour surveiller les modifications et reconstruire automatiquement la bibliothèque, installez nodemon :

    npm install --save-dev nodemon
    
  2. Ajouter un script de surveillance

    Modifiez package.json pour ajouter un script de surveillance :

    "scripts": {
      "build": "babel src --out-dir dist --copy-files && postcss src/styles/tailwind.css -o dist/tailwind.css",
      "watch": "nodemon --watch src --exec 'npm run build'",
      "prepublishOnly": "npm run build"
    }
    
  3. Exécuter la surveillance

    Lancez le script de surveillance pour reconstruire automatiquement lors des modifications :

    npm run watch
    
wary urchin
#

Encore merci! Je m'en vais de ce pas pour lire cela

empty mauve
#

ping pls

sterile badger
empty mauve
#

mdrr

strange thicket
#

@empty mauve Tout bête ahah

#

conntent => content

empty mauve
#

mdrr j'avais pas vue merci 😅

strange thicket
#

TS te met pas un warn ou une erreur sur l'IDE ? @empty mauve

sinful flicker
#

Il est ptetre sur notpad++ a l’ancienne 😇

strange thicket
#

Haha mes débuts @sinful flicker

empty mauve
#

nan jsuis sur vsc tkt

#

mais nn il m'a rien mis

strange thicket
sinful flicker
#

Discordjs est en ts

Normalement ton ide te signale quand même le problème

strange thicket
#

En TS tout est typé, donc l'IDE aurait remarqué que ton contenu JSON était pas correct, alors que JS est un gros porc

sly shale
#

Js osef le typage ts laisse rien passer kapp

keen narwhal
empty mauve
#

pourtant le commande fontionne bien

DiscordAPIError[10007]: Unknown Member
    at handleErrors (C:\Users\agius\OneDrive\Bureau\Angelo\node_modules\@discordjs\rest\dist\index.js:730:13)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async SequentialHandler.runRequest (C:\Users\agius\OneDrive\Bureau\Angelo\node_modules\@discordjs\rest\dist\index.js:1133:23)
    at async SequentialHandler.queueRequest (C:\Users\agius\OneDrive\Bureau\Angelo\node_modules\@discordjs\rest\dist\index.js:963:14)
    at async _REST.request (C:\Users\agius\OneDrive\Bureau\Angelo\node_modules\@discordjs\rest\dist\index.js:1278:22)
    at async ThreadMemberManager._fetchSingle (C:\Users\agius\OneDrive\Bureau\Angelo\node_modules\discord.js\src\managers\ThreadMemberManager.js:168:18)
    at async Object.run (C:\Users\agius\OneDrive\Bureau\Angelo\src\commands\tickets\ticketAddMember.js:49:34)
    at async module.exports (C:\Users\agius\OneDrive\Bureau\Angelo\src\events\validations\chatInputCommandValidator.js:81:5)
    at async Client.<anonymous> (C:\Users\agius\OneDrive\Bureau\Angelo\src\handlers\eventHandler.js:18:9) {
  requestBody: { files: undefined, json: undefined },
  rawError: { message: 'Unknown Member', code: 10007 },
  code: 10007,
  status: 404,
  method: 'GET',
  url: 'https://discord.com/api/v10/channels/1268961741300305985/thread-members/531430483829981184'
}
sinful flicker
#

essaie plutot ca pour recuperer l'utilisateur

empty mauve
empty mauve
empty mauve
# sinful flicker channel.members.find(u => u.id === memberToAdd.id)
TypeError: channel.members.find is not a function
    at Object.run (C:\Users\agius\OneDrive\Bureau\Angelo\src\commands\tickets\ticketAddMember.js:49:56)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async module.exports (C:\Users\agius\OneDrive\Bureau\Angelo\src\events\validations\chatInputCommandValidator.js:81:5)
    at async Client.<anonymous> (C:\Users\agius\OneDrive\Bureau\Angelo\src\handlers\eventHandler.js:18:9)
ember phoenix
#

channel.members.cache.find(...)

#

il voulait dire

#

mais faut que t'ai l'intent GuildMembers activé

empty mauve
#

bon jvai etre chiant déso

#
TypeError: Cannot read properties of undefined (reading 'catch')
    at Object.run (C:\Users\agius\OneDrive\Bureau\Angelo\src\commands\tickets\ticketAddMember.js:49:96)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async module.exports (C:\Users\agius\OneDrive\Bureau\Angelo\src\events\validations\chatInputCommandValidator.js:81:5)
    at async Client.<anonymous> (C:\Users\agius\OneDrive\Bureau\Angelo\src\handlers\eventHandler.js:18:9)
sinful flicker
#

Enlève ta partie catch , si ton find retourne rien ta variable sera undefined

#

Et tu met si c’est ps déjà fait un if undefined return …

empty mauve
#

ok

#

tt bon merci ^^

sinful flicker
#

😉

empty mauve
#
C:\Users\agius\OneDrive\Bureau\Angelo\node_modules\@discordjs\rest\dist\index.js:730
      throw new DiscordAPIError(data, "code" in data ? data.code : data.error, status, method, url, requestData);
            ^

DiscordAPIError[10008]: Unknown Message
    at handleErrors (C:\Users\agius\OneDrive\Bureau\Angelo\node_modules\@discordjs\rest\dist\index.js:730:13)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async SequentialHandler.runRequest (C:\Users\agius\OneDrive\Bureau\Angelo\node_modules\@discordjs\rest\dist\index.js:1133:23)
    at async SequentialHandler.queueRequest (C:\Users\agius\OneDrive\Bureau\Angelo\node_modules\@discordjs\rest\dist\index.js:963:14)
    at async _REST.request (C:\Users\agius\OneDrive\Bureau\Angelo\node_modules\@discordjs\rest\dist\index.js:1278:22)
    at async GuildMessageManager.edit (C:\Users\agius\OneDrive\Bureau\Angelo\node_modules\discord.js\src\managers\MessageManager.js:188:15)
    at async InteractionCollector.<anonymous> (C:\Users\agius\OneDrive\Bureau\Angelo\src\utils\buttonPagination.js:92:17) {
  requestBody: {
    files: [],
    json: {
      content: undefined,
      tts: false,
      nonce: undefined,
      enforce_nonce: false,
      embeds: [
        {
          color: 3447003,
          title: 'Embed',
          description: "C'est la page 1"
        }
      ],
      components: [],
      username: undefined,
      avatar_url: undefined,
      allowed_mentions: undefined,
      flags: 0,
      message_reference: undefined,
      attachments: undefined,
      sticker_ids: undefined,
      thread_name: undefined,
      applied_tags: undefined,
      poll: undefined
    }
  },
  rawError: { message: 'Unknown Message', code: 10008 },
  code: 10008,
  status: 404,
  method: 'PATCH',
  url: 'https://discord.com/api/v10/channels/1076173957633417296/messages/1269009717980823694'
}

Node.js v20.12.0

voila bon...

#

je pas compris l'erreur

#

et je trouve pas le problème dans le code

sly shale
#

DiscordAPIError[10008]: Unknown Message

#

C:\Users\agius\OneDrive\Bureau\Angelo\node_modules@discordjs\rest\dist\index.js:730
throw new DiscordAPIError(data, "code" in data ? data.code : data.error, status, method, url, requestData);

empty mauve
#

oui mais ya quoi qui va pas dans le code

sly shale
#

c'est toi qui leur a donné la value undefined ?

empty mauve
#

nan

sly shale
#

screen la ligne 725 a 731 de ton index js

empty mauve
#

j'ai que celui de discord.js qui est aussi grand

sly shale
#

at async InteractionCollector.<anonymous> (C:\Users\agius\OneDrive\Bureau\Angelo\src\utils\buttonPagination.js:92:17) {

empty mauve
sly shale
#

c'est ce que j'était entrain de regarder

#

en gros ton embed passe dans l'erreur car il arrive pas a trouver la donnée de ton message

#

donnée undefined donc ca catch l'erreur

empty mauve
#

ok, et comment réglé ça?

sly shale
#

console.log chaque étape de ton processus et savoir ce qui fait crash

empty mauve
#

oki

sly shale
#

ya forcément des étapes qui vont valider et une étape qui va crash

empty mauve
#

comment je doit structurer mes console.log de chaque étape 😅 (déso)

sly shale
#

tu la place un peu random partout petit a petit sur ton processus tu fait un console log sur chaque entrée

empty mauve
#

et je log quel élément par exemple

sly shale
#

toutes ta fonction de suivis de message

empty mauve
#

ok

serene tangle
#

Par exemple au debut et apres la modification

empty mauve
sterile badger
sterile badger
empty mauve
#

nan mais c'est pour mon serv

#

et j'avais pas d'idée

serene tangle
# empty mauve bon...

Verifie la partie qui exécute l’interaction en question et les modifications des valeurs. Tu peux log les differentes variable et constante avant la modification par exemple puis apres pour voir si le changement s’est bien derouler et que la valeur correspond a celle attendue

sterile badger
#

Logane

serene tangle
#

Lin tout rose comme le gelano

sterile badger
#

Des anagrammes de ton prénom

serene tangle
#

Je laurais appeler fornikator perso

empty mauve
#

et plus rien...

sterile badger
empty mauve
sterile badger
#

Nn ok je vous embête plus vous avez l’air occupés…

empty mauve
sly shale
#

J’y comprend rien

#

Ton bot est aussi Asmathique que mon site hier

keen narwhal
#

MDRR

serene tangle
empty mauve
#

a la fin ça sera une commande help avec des page ducoup

serene tangle
#

Mais la le probleme c’est quel commande, c’est censé faire quoi et ca plante a quel moment ?

empty mauve
#

quand j'envoie mon embed tt va bien mais c'est quand je change de page le problème

sly shale
#

Regarde ta fonctionne de changement de page du coups

serene tangle
empty mauve
#

oui, mais ya pas d'erreur

serene tangle
#

Si tu cliques et que soit il ne ce passe rien alors y’a un problème dans la recuperation/affichage du contenu si ca change et que ya plus rien c’est que l’affichage ce fait mais il recupere pas ce que tu veux

empty mauve
#

ok...

#

pas tt compris

serene tangle
#

Quand tu cliques il ce passe un truc quand meme ou rien du tout

empty mauve
#

ok

serene tangle
#

C’est une question dsl jai pas mis le ?

empty mauve
#

tkt

#

bah les bouton disparaisse mais il ne réaparaissent pas et l'embed reste sur la page 1

#

bon jvai quand meme faire ma commande help et je revient si ya d'autre problème

serene tangle
empty mauve
#

oki

serene tangle
# empty mauve oki

Essaye de voir des exemples existants sur le web tu devrais voir si ta structure est différente

empty mauve
#

j'ai toujours le meme problème ça vient vraiment des mes boutons

serene tangle
empty mauve
#

oui je la met a jour et jte la passe

empty mauve
#

att jla met public

#

att jme fait enguler par discord car ya mon token

#

jmet un .gitignore et c'est bon

#

bon enfait je galère avec git donc juste touche pas a mon token pls

empty mauve
#

juste fait pas attention au .env pls

serene tangle
empty mauve
#

oki

serene tangle
# empty mauve <@238717801467084801> vzy vas voir

Dans un premier temps je sais pas si ca fait longtemps que t'as fais ce projet j'te conseil de crée au moins une branche dev sur laquelle tu peux merger toutes les branches et te feront une application en mode développement puis une fois que tu auras tout paufiner la tu peux merger sur la main ce que tu es sur qu'il va rester, c'est pas obliger mais petit conseil pour la gestion du projet

serene tangle
# empty mauve oki

Les fichier/dossiers qui concerne ton problème son lesquel exactement ? genre la création du menu et ses fonctions

empty mauve
empty mauve
serene tangle
empty mauve
#

eu.. j'ai réglé le problème avec gemini mais par contre j'ai le problème que ça me laisse ça

#

faut que je mette un setTimeout() ?

serene tangle
empty mauve
serene tangle
#

Je sais pas si c'est très propre mais logiquement une fois l'envoie fait si tu coupes tout l'envoie reste et l'écrit devrait s'arreter en meme temps

serene tangle
empty mauve
serene tangle
serene tangle
keen narwhal
#

méchant ça

empty mauve
serene tangle
# empty mauve

Ah c'était donc juste l'index qui était pas bien transmis

empty mauve
#

yep

empty mauve
serene tangle
empty mauve
#

y'a plus de plus 1...

#

c'est juste le msg comme quoi le bot réfléchie qui m'embète

serene tangle
empty mauve
#

oui

serene tangle
#

T'as mis un break a la fin de ton processus pour voir ?

empty mauve
#

jsp ou le mettre 😅

serene tangle
#

essaye après ton return msg voir

empty mauve
serene tangle
#

au niveau du console log juste au dessus voir

empty mauve
#

nn plus meme chose

serene tangle
#

en dessous du resetTime sinon jsp du tout

empty mauve
#

😩 nn plus

serene tangle
#

Il semble que vous avez besoin de vous assurer que vous terminez correctement l'interaction après avoir répondu à l'utilisateur. Utiliser await i.deferReply(); et ne pas répondre correctement peut entraîner le bot à rester en attente de réponse.

Pour corriger cela, vous pouvez utiliser i.update() ou i.editReply() au lieu de i.deferReply() pour s'assurer que l'interaction est correctement terminée. Voici une version modifiée de votre code :

#

Tu peux tenter ca

empty mauve
#

ok

#

voila le résultat avec les deux solution

cursive sail
empty mauve
cursive sail
#

okeyy

restive flower
true marten
#

Bonjour j'ai une question

#

est ce que les ratelimit existe pour les redirection sur les bots discord

#

et comment on peut le savoir

queen ocean
#

C'est a dire ?

true marten
#

Et là quand j'essaie de le faire aujourd'hui sa charge dans le vide alors que sa marchais avant

empty mauve
#

Salut j'ai un petit

-An error occurred! Error: Invalid string format

et ma commande n'est pas registered

empty mauve
#

J'avais mis une maj harold

misty parcel
empty mauve
wheat salmon
#

😅

wheat salmon
#

Je sais pas hein, je débute KaPOP

neat lintel
#

alors oui je l'ai pas mis a jour récemment donc probable que il y ait des trucs pas à jour

#

après ya pas eu de mise a jour majeur de Djs donc normalement si ils ont pas fait n'importe quoi le code est censé fonctionner. Si t'as une érreur spécifique ou un problème hesites pas a le partager je regarderai

sinful flicker
sinful flicker
zenith bridge
#

Salut je suis entraind de faire un launcher minecraft avec electron + react + typescript + vite, mais j'ai un code où je l'appelle qu'une seul fois mais qu'il n'arrête pas de s'executer et donc cela me créer plein d'erreur

https://pastebin.com/4fsHsmpR

ipcMain.handle("getCurrentCape", async (event) => {
        return await skinManager.getActualCape();
    });

https://pastebin.com/DswxuBj5

lime cargo
#

Salut !
Je débute un peu dans le js et je voulais savoir si c'était normal de ne pas avoir d'autocomplétion pour pas mal de choses comme ''innerHTML'' ou des trucs basiques comme ça ? (jsuis sur vscode)

sly shale
#

verifie les extensions que tu as installé

empty mauve
#

slt, pour un de mes site, j'ai eu besoin de faire un "discover" mais le problème c'est que c'est pas opti et c'est moche, comment jpeu faire en sorte que un élément html soit crée en js en fonction du nombre d'élément a affiché

#

*et aussi comment jpeu otpi les image qui se charge (ça fait bug le site)

fierce plank
#

Petit cadeau pour creer tes elements, pour les afficher au fur et à mesure utilise une boucle

#

Et ensuite pour optimiser tes images essaye de les compresser le plus possible ou alors de les mettre sur un CDN

empty mauve
fierce plank
leaden prism
#

hey, alors j'essaye d'apprendre à bien utiliser tailwindcss et nuxt ui. Cependant, j'ai un problème. Comment est ce que je peut faire pour changer la couleur par défaut pour la rendre plus foncé??

En gros j'ai vu qu'il fallait ajouter dans la config tailwind la couleur puis dans le fichier app.config.ts la couleur par défaut. Mais la couleur choisit est je trouve beaucoup trop claire. Comment est ce que je peut faire pour la rendre plus foncée?

tailwindcc.config.ts :

import type { Config } from "tailwindcss";
import defaultTheme from "tailwindcss/defaultTheme";

export default <Partial<Config>>{
  content: [
    "./pages/**/*.{js,ts,jsx,tsx}",
    "./components/**/*.{js,ts,jsx,tsx}",
    "./app/**/*.{js,ts,jsx,tsx}",
  ],
  theme: {
    extend: {
      colors: {
        elephant: {
          50: "#effaff",
          100: "#ddf5ff",
          200: "#b4edff",
          300: "#72e0ff",
          400: "#27d2ff",
          500: "#00bdfc",
          600: "#0098d9",
          700: "#0079af",
          800: "#006690",
          900: "#035477",
          950: "#023047",
        },
      },
    },
  },
};

app.config.ts :

export default defineAppConfig({
  ui: {
    primary: "elephant",
    colors: ["elephant"],
  },
});

Merci de votre aide

lime cargo
#

Bonjour,
Vous avez une vidéo à recommander pour apprendre le backend ? (du style nodeJs + PostgreSQL)

ember phoenix
#

y a des vidéos dans les domaines dessus

lime cargo
autumn tendon
#

Bonjour tout le monde ! J'ai un problème avec ma commande discord.js, je m'explique :

En gros, si on fait /verify, ça check le json de la response pour trouver data.data.name, ça c'est ok pour l'instant, ça trouve bien mon nom rp et tout.

mais pour changer mon nickname, là ça me dis rawError: { message: 'Missing Permissions', code: 50013 }

alors que le bot a les perms admin, j'ai déjà essayé de mettre le rôle du bot tout en haut, ça ne fais rien. Si quelqu'un à déjà eu cette erreur, comment la régler ?

Je vous laisse mon code:

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

module.exports = {
    data: new SlashCommandBuilder()
        .setName('verify')
        .setDescription('Verifiez vous avec cette commande.'),
    async execute(interaction) {
        const apiUrl = 'https://dashboard.kobralost-rp.com/api/v2/1/836244875720523807/members/1179426752905367652';
        const apiKey = 'mon token api (qui est valide)';

        try {

            const response = await axios.get(apiUrl, {
                headers: {
                    'Authorization': `Bearer ${apiKey}`,
                    'Accept': 'application/json'
                }
            });
            const data = response.data;

            if (data.code !== 'OK') {
                console.error('Erreur de l\'API :', data);
                return interaction.reply('erreur api, check la console');
            }

            const rpName = data.data.name;

            const member = await interaction.guild.members.fetch(interaction.user.id);
            if (member) {
                await member.setNickname(rpName);
                console.log(`${member.user.tag} a été verifié et son nom a ete changé en : ${rpName}`);
                return interaction.reply(`Vous êtes verifié et nommé en tant que : ${rpName}`);
            } else {
                console.error('il est pas dans le serv');
                return interaction.reply('Impossible de trouver votre profil sur le serveur.');
            }
        } catch (error) {
            console.error('Erreur lors de l\'exécution de la commande :', error);
            return interaction.reply('erreur general, check la console.');
        }
    },
};

dire oriole
dire oriole
#

D'ailleurs, bonjour tout le monde,
Une personne a déjà pus travailler sur les SKU et les Entitlements des bots discord ?

J'aimerais savoir comment vous faites pour rester a jour sur la liste ?
Actuellement mon système est un peu bourrin, dès qu'une personne fait une commande le bot fait une request a discord (https://discord.com/api/applications/{{Id}}/entitlements?exclude_ended=true) pour vois si il y a un abonnement en cours

Vous avez votre propre db que vous mettez a jour de temps en temps ?
Ou discord a un system d'event qui notifie quand un abonnement débute ou prend fin ?

worthy ice
#

Bonjour, je suis en train de faire actuellement un système de ticket pour mon bot, et je bloque sur le fait de fermer le ticket, je m'explique.
En gros quand j'appui sur le bouton "fermer" sa m'envoie un autre bouton pour me demander si je suis sur de le clôturer, une fois que j'appuie sur oui le ticket se clôture, la personne ayant ouvert le ticket ne peux plus parler dedans.
Maintenant je souhaite que quand on ajoute une personne au ticket, sois également dans l'impossibilité de parler, mais je ne sais pas comment récuperer cette utilisateur.
Le premier utilisateur se trouve dans le topic du salon.

ember phoenix
#

ou alors tu peux, quand on ajoute quelqu'un dans un ticket aussi le mentionner dans le topic du salon

#

et ensuite quand on clique sur confirmer ça recuperer tt les mentions du salon et les mute eux

autumn tendon
night scarab
#

Salut salut, je voulais reprendre mon bot musique en discord.js et ça m'affiche que ils ont changer d'extracteur ou je sais pas quoi. Et donc je ne sais pas quoi prendre. Si des gens pourrait m'aider je serai volontier. Ce que m'affiche dans mon terminal juste en dessous

autumn tendon
#

Et il t'a dis de le dl sur

#
#

Installe le avec npm i discord-player-youtubei

night scarab
#

Merci chef

#

T'es un crack

autumn tendon
night scarab
autumn tendon
#

Je pense qu'il va falloir que tu changes tout ton code pour l'adapter à ce package

night scarab
#
    at module.exports (D:\Bot\src\Structure\Musique\events.js:10:18)
    at Object.<anonymous> (D:\Bot\index.js:9:42)
    at Module._compile (node:internal/modules/cjs/loader:1376:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1435:10)
    at Module.load (node:internal/modules/cjs/loader:1207:32)
    at Module._load (node:internal/modules/cjs/loader:1023:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:135:12)
    at node:internal/main/run_main_module:28:49 Promise {
  <rejected> TypeError: Player is not a constructor
      at module.exports (D:\Bot\src\Structure\Musique\events.js:10:18)
      at Object.<anonymous> (D:\Bot\index.js:9:42)
      at Module._compile (node:internal/modules/cjs/loader:1376:14)
      at Module._extensions..js (node:internal/modules/cjs/loader:1435:10)
      at Module.load (node:internal/modules/cjs/loader:1207:32)
      at Module._load (node:internal/modules/cjs/loader:1023:12)
      at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:135:12)
      at node:internal/main/run_main_module:28:49
} ```
autumn tendon
#

Donne ton code

night scarab
#
const { Player } = require('discord-player-youtubei');

module.exports = async (bot) => {
    const Embed = new EmbedBuilder()
    .setColor(bot.config.clients.embedColor)
    .setTimestamp()
    .setFooter({ text: bot.config.clients.name, iconURL: bot.config.clients.logo});

    bot.player = new Player(bot, bot.config.opt.discordPlayer);

    await bot.player.extractors.loadDefault();

    bot.player.events.on('playerStart', (queue, track) => {
        queue.metadata.channel.send({
            embeds: [
                Embed
                .setDescription(`*✅・Je commence à jouer: **${track.title}** !*`)
            ],
            ephemeral: false
        })
    })
     
    bot.player.events.on('audioTrackAdd', (queue, track) => {
        queue.metadata.channel.send({
            embeds: [
                Embed
                .setDescription(`*✅・La musique **${track.title}** as bien été ajouté à la file d'attente !*`)
            ],
            ephemeral: false
        })
    })
     
    bot.player.events.on('audioTracksAdd', (queue, track) => {
        queue.metadata.channel.send({
            embeds: [
                Embed
                .setDescription(`*✅・Plusieurs musique ajouté à la file d'attente !*`)
            ],
            ephemeral: false
        })
    })
     
    bot.player.events.on('playerSkip', (queue, track) => {
        queue.metadata.channel.send({
            embeds: [
                Embed
                .setDescription(`*✅・**${track.title}** ignoré en raison d'un problème !*`)
            ],
            ephemeral: false
        })
    })
#
    bot.player.events.on('disconnect', (queue) => {
        queue.metadata.channel.send({
            embeds: [
                Embed
                .setDescription(`*❌・J'ai fini mon travaille, je déconnecte du salons !*`)
            ],
            ephemeral: false
        })
    })

    bot.player.events.on('emptyChannel', (queue) => {
        queue.metadata.channel.send({
            embeds: [
                Embed
                .setDescription(`*❌・Personne n'est dans le canal vocal, je quitte le canal vocal !*`)
            ],
            ephemeral: false
        })
    })

    bot.player.events.on('emptyQueue', (queue) => {
        queue.metadata.channel.send({
            embeds: [
                Embed
                .setDescription(`*✅・J'ai fini de lire toute la file d'attente !*`)
            ],
            ephemeral: false
        })
    })

    bot.player.events.on('error', (queue, error) => {
        console.log(`Événement d'erreur générale du joueur: ${error.message}`);
        console.log(error);
    })
     
    bot.player.events.on('playerError', (queue, error) => {
        console.log(`Événement d'erreur du joueur: ${error.message}`);
        console.log(error);
    })
}
#

Comme j'avais pas nitro je pouvais pas le mettre en un seul message

autumn tendon
night scarab
#

Et je te redis

#

Merci de fou mec

autumn tendon
#

(faut aussi que j'y arrives, sinon faudrait donner ça au spécialistes discordjs)

cerulean pond
#

Quel sympathie

night scarab
autumn tendon
#
const { EmbedBuilder } = require('discord.js');
const { YoutubeiExtractor } = require('discord-player-youtubei');
const player = useMainPlayer()

module.exports = async (bot) => {
    const Embed = new EmbedBuilder()
    .setColor(bot.config.clients.embedColor)
    .setTimestamp()
    .setFooter({ text: bot.config.clients.name, iconURL: bot.config.clients.logo});

player.extractors.register(YoutubeiExtractor, {})

    bot.player.events.on('playerStart', (queue, track) => {
        queue.metadata.channel.send({
            embeds: [
                Embed
                .setDescription(`*✅・Je commence à jouer: **${track.title}** !*`)
            ],
            ephemeral: false
        })
    })
     
    bot.player.events.on('audioTrackAdd', (queue, track) => {
        queue.metadata.channel.send({
            embeds: [
                Embed
                .setDescription(`*✅・La musique **${track.title}** as bien été ajouté à la file d'attente !*`)
            ],
            ephemeral: false
        })
    })
     
    bot.player.events.on('audioTracksAdd', (queue, track) => {
        queue.metadata.channel.send({
            embeds: [
                Embed
                .setDescription(`*✅・Plusieurs musique ajouté à la file d'attente !*`)
            ],
            ephemeral: false
        })
    })
     
    bot.player.events.on('playerSkip', (queue, track) => {
        queue.metadata.channel.send({
            embeds: [
                Embed
                .setDescription(`*✅・**${track.title}** ignoré en raison d'un problème !*`)
            ],
            ephemeral: false
        })
    })
    bot.player.events.on('disconnect', (queue) => {
        queue.metadata.channel.send({
            embeds: [
                Embed
                .setDescription(`*❌・J'ai fini mon travaille, je déconnecte du salons !*`)
            ],
            ephemeral: false
        })
    })

    bot.player.events.on('emptyChannel', (queue) => {
        queue.metadata.channel.send({
            embeds: [
                Embed
                .setDescription(`*❌・Personne n'est dans le canal vocal, je quitte le canal vocal !*`)
            ],
            ephemeral: false
        })
    })

    bot.player.events.on('emptyQueue', (queue) => {
        queue.metadata.channel.send({
            embeds: [
                Embed
                .setDescription(`*✅・J'ai fini de lire toute la file d'attente !*`)
            ],
            ephemeral: false
        })
    })

    bot.player.events.on('error', (queue, error) => {
        console.log(`Événement d'erreur générale du joueur: ${error.message}`);
        console.log(error);
    })
     
    bot.player.events.on('playerError', (queue, error) => {
        console.log(`Événement d'erreur du joueur: ${error.message}`);
        console.log(error);
    })
}
#

essaye ça stp

night scarab
#
(node:10236) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
(Use `node --trace-warnings ...` to show where the warning was created)
warning:65
Uncaught SyntaxError D:\Bot des cop1\index.js:2
import { YoutubeiExtractor } from "discord-player-youtubei"
^^^^^^

SyntaxError: Cannot use import statement outside a module
    at internalCompileFunction (internal/vm:77:18)
    at wrapSafe (internal/modules/cjs/loader:1288:20)
    at Module._compile (internal/modules/cjs/loader:1340:27)
    at Module._extensions..js (internal/modules/cjs/loader:1435:10)
    at Module.load (internal/modules/cjs/loader:1207:32)
    at Module._load (internal/modules/cjs/loader:1023:12)
    at executeUserEntryPoint (internal/modules/run_main:135:12)
    at <anonymous> (internal/main/run_main_module:28:49)```
#

@autumn tendon

#

...

leaden prism
#

hey, je suis en train d'essayer d'héberger mon site fait avec nuxt3 et je rencontre cette erreur quand je run la commande npm run build. Le truc bizarre est que cela fonctionne sur ma machine. Pouvez vous m'aider svp.
lien du repo si vous voulez essayer :
https://github.com/Nocteln/habit-tracker

autumn tendon
#

je refait un autre test

night scarab
autumn tendon
#
const { EmbedBuilder } = require('discord.js');
import { YoutubeiExtractor } from "discord-player-youtubei";
const player = useMainPlayer()

module.exports = async (bot) => {
    const Embed = new EmbedBuilder()
    .setColor(bot.config.clients.embedColor)
    .setTimestamp()
    .setFooter({ text: bot.config.clients.name, iconURL: bot.config.clients.logo});

player.extractors.register(YoutubeiExtractor, {})

    bot.player.events.on('playerStart', (queue, track) => {
        queue.metadata.channel.send({
            embeds: [
                Embed
                .setDescription(`*✅・Je commence à jouer: **${track.title}** !*`)
            ],
            ephemeral: false
        })
    })
     
    bot.player.events.on('audioTrackAdd', (queue, track) => {
        queue.metadata.channel.send({
            embeds: [
                Embed
                .setDescription(`*✅・La musique **${track.title}** as bien été ajouté à la file d'attente !*`)
            ],
            ephemeral: false
        })
    })
     
    bot.player.events.on('audioTracksAdd', (queue, track) => {
        queue.metadata.channel.send({
            embeds: [
                Embed
                .setDescription(`*✅・Plusieurs musique ajouté à la file d'attente !*`)
            ],
            ephemeral: false
        })
    })
     
    bot.player.events.on('playerSkip', (queue, track) => {
        queue.metadata.channel.send({
            embeds: [
                Embed
                .setDescription(`*✅・**${track.title}** ignoré en raison d'un problème !*`)
            ],
            ephemeral: false
        })
    })
    bot.player.events.on('disconnect', (queue) => {
        queue.metadata.channel.send({
            embeds: [
                Embed
                .setDescription(`*❌・J'ai fini mon travaille, je déconnecte du salons !*`)
            ],
            ephemeral: false
        })
    })

    bot.player.events.on('emptyChannel', (queue) => {
        queue.metadata.channel.send({
            embeds: [
                Embed
                .setDescription(`*❌・Personne n'est dans le canal vocal, je quitte le canal vocal !*`)
            ],
            ephemeral: false
        })
    })

    bot.player.events.on('emptyQueue', (queue) => {
        queue.metadata.channel.send({
            embeds: [
                Embed
                .setDescription(`*✅・J'ai fini de lire toute la file d'attente !*`)
            ],
            ephemeral: false
        })
    })

    bot.player.events.on('error', (queue, error) => {
        console.log(`Événement d'erreur générale du joueur: ${error.message}`);
        console.log(error);
    })
     
    bot.player.events.on('playerError', (queue, error) => {
        console.log(`Événement d'erreur du joueur: ${error.message}`);
        console.log(error);
    })
}
#

essaye ça voir

leaden prism
night scarab
#
(node:6132) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
(Use `node --trace-warnings ...` to show where the warning was created)
warning:65
Uncaught SyntaxError D:\Bot\index.js:2
import { YoutubeiExtractor } from "discord-player-youtubei"
^^^^^^

SyntaxError: Cannot use import statement outside a module
    at internalCompileFunction (internal/vm:77:18)
    at wrapSafe (internal/modules/cjs/loader:1288:20)
    at Module._compile (internal/modules/cjs/loader:1340:27)
    at Module._extensions..js (internal/modules/cjs/loader:1435:10)
    at Module.load (internal/modules/cjs/loader:1207:32)
    at Module._load (internal/modules/cjs/loader:1023:12)
    at executeUserEntryPoint (internal/modules/run_main:135:12)
    at <anonymous> (internal/main/run_main_module:28:49)```
night scarab
#

Mais laisse tomber

#

C'est déjà super gentil de ta part

sly shale
leaden prism
sly shale
#

Regarde la doc de consola

autumn tendon
night scarab
fair ether
# night scarab ```TypeError: Player is not a constructor at module.exports (D:\Bot\src\Stru...

Salut,
Alors il te dit que player n'est pas un constructeur donc il ne reconnaît pas

('discord-player-youtubei')

En fouillant dans la Doc, essaye plutôt ceci

const  { Player }  =  require ( 'discord-player' ) ;

Sans oublier d'installer son package

Normalement je dis bien normalement ça résoudra ton problème de constructeur, je suis désolé moi je ne peux pas tester le code car je ne suis pas derrière mon pc mais j'espère que ça résoudra ton soucis 😉

night scarab
#
An alternative is to use discord-player-youtubei https://npm.im/discord-player-youtubei
View this GitHub issue for more information: https://github.com/Androz2091/discord-player/issues/1922
(Use `node --trace-warnings ...` to show where the warning was created)
ConnectTimeoutError: Connect Timeout Error (attempted addresses: 162.159.136.232:443, 162.159.137.232:443) ```
fair ether
night scarab
fair ether
night scarab
#

Et puis sinon, si j'essaye de le faire avec un Spotify, ça ne marche pas

fair ether
#

Faudra changer d'extracteur. Tu peux envoyer un message à chatgpt pour te dire justement qu'elle extracteur fonctionnerai le mieux il pourra te suggérer des packages bien meilleure

Moi j'utilisais

 ytdl-core

Pour mes bots musique ça pourrait peut être t'aider

fair ether
night scarab
#

J'ai fait une annonce sur le serveur...

#

En espérant

night scarab
#

Merci quand même chef

#

Je vais essayer tout ça quand je reviens chez moi

noble mountain
#

Bonjour ! Petit soucis avec mon bot.

Je fais un système de modération donc warn et liste warns et je récupère l'id du modérateur qui warn pour ensuite le mettre dans mon liste warn.
J'ai fait le test, ça m'a bien récupéré le bon ID partout correctement (le mien) mais quand je fais mon liste warn pour voir la liste des warns ça me récupère un mauvais ID (presque le mien)

mon id : 302140208239869965
ce qu'il récupère : 302140208239869950

En gros, il récupère l'ID mais en enlevant -15, ce que je comprends pas...


const { SlashCommandBuilder, EmbedBuilder } = require('discord.js');
const pool = require('../../db/database');

module.exports = {
    data: new SlashCommandBuilder()
        .setName('warnings')
        .setDescription('Affiche la liste des avertissements d\'un utilisateur')
        .addUserOption(option => 
            option.setName('user')
                .setDescription('L\'utilisateur dont vous souhaitez voir les avertissements')
                .setRequired(true)
        ),
    async execute(interaction) {
        const targetUser = interaction.options.getUser('user');
        
        const connection = await pool.getConnection();
        try {
            const [warnings] = await connection.query('SELECT * FROM warnings WHERE user_id = ?', [targetUser.id]);

            if (warnings.length === 0) {
                await interaction.reply({ content: `${targetUser.tag} n'a pas d'avertissements.`, ephemeral: true });
                return;
            }

            const embed = new EmbedBuilder()
                .setTitle(`Avertissements pour ${targetUser.tag}`)
                .setColor('#FF0000')
                .setThumbnail(targetUser.displayAvatarURL());

            for (const [index, warn] of warnings.entries()) {
                let moderatorName = 'Utilisateur inconnu';
                let moderatorMention = `ID: ${warn.moderator_id}`;

                if (warn.moderator_id && typeof warn.moderator_id === 'string' && warn.moderator_id.match(/^\d+$/)) {
                    try {
                        console.log(`Tentative de récupération du modérateur avec l'ID: ${warn.moderator_id}`);
                        const moderator = await interaction.client.users.fetch(warn.moderator_id);
                        if (moderator) {
                            moderatorName = moderator.username;
                            moderatorMention = `<@${moderator.id}>`;
                        }
                    } catch (error) {
                        console.error(`Erreur lors de la récupération du modérateur avec l'ID ${warn.moderator_id}:`, error);
                        moderatorMention = `ID: ${warn.moderator_id}`;
                    }
                } else {
                    console.error(`ID de modérateur invalide récupéré: ${warn.moderator_id}`);
                }

                embed.addFields([
                    {
                        name: `Avertissement ${index + 1}`,
                        value: `**Raison**: ${warn.reason}\n**Modérateur**: ${moderatorMention} (${moderatorName})\n**Date**: ${new Date(warn.timestamp).toLocaleString('fr-FR', { timeZone: 'Europe/Paris' })}`,
                    },
                ]);
            }

            await interaction.reply({ embeds: [embed] });
        } catch (error) {
            console.error('Erreur lors de la récupération des avertissements:', error);
            await interaction.reply({ content: 'Une erreur s\'est produite lors de la récupération des avertissements.', ephemeral: true });
        } finally {
            connection.release();
        }
    }
};
sinful flicker
noble mountain
#

C'est la bonne

#

ça récupère tout correctement juste il le retranscrit pas correctement, je ne sais pour quelle raison

sinful flicker
#

À quel niveau exactement ?

noble mountain
#

Quand je fais le détail des warns ça me récupère le mauvais id

#

Dans ma bdd, c'est le bon id pourtant

sinful flicker
#

et les logs danss ta console

noble mountain
#

Bah forcément j'ai :

Erreur lors de la récupération du modérateur avec l'ID 302140208239869950: DiscordAPIError[50035]: Invalid Form Body
user_id[NUMBER_TYPE_COERCE]: Value "null" is not snowflake.
    at handleErrors (C:\Users\Axel\Desktop\BHBots\BHLevel\node_modules\@discordjs\rest\dist\index.js:730:13)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async SequentialHandler.runRequest (C:\Users\Axel\Desktop\BHBots\BHLevel\node_modules\@discordjs\rest\dist\index.js:1133:23)
    at async SequentialHandler.queueRequest (C:\Users\Axel\Desktop\BHBots\BHLevel\node_modules\@discordjs\rest\dist\index.js:963:14)
    at async UserManager.fetch (C:\Users\Axel\Desktop\BHBots\BHLevel\node_modules\discord.js\src\managers\UserManager.js:94:18)
    at async Object.execute (C:\Users\Axel\Desktop\BHBots\BHLevel\commands\modération\listwarn.js:36:43)
    at async Client.<anonymous> (C:\Users\Axel\Desktop\BHBots\BHLevel\index.js:64:13) {
  requestBody: { files: undefined, json: undefined },
  rawError: {
    message: 'Invalid Form Body',
    code: 50035,
    errors: { user_id: [Object] }
  },
  code: 50035,
  status: 400,
  method: 'GET',
  url: 'https://discord.com/api/v10/users/null'
}
#

Vu que l'id qu'il récupère n'est pas le bon

#

Sauf que pourquoi il me récupère mon ID en enlevant 15

sinful flicker
#

fais un console log de ton const [warnings] = await connection.query('SELECT * FROM warnings WHERE user_id = ?', [targetUser.id]);

#

warnings

noble mountain
sinful flicker
#

C'est plutot drole ca ^^"

noble mountain
#

On en revient au même, il récupère pas le bon id

#

Je sais pas pk ça agit comme ça en enlevant -15 à mon id

sinful flicker
#

SELECT * FROM warnings WHERE user_id ='302140208239869965'

#

exec ca sur ton phpmy admin voir ce quil te sort lui

noble mountain
#

Les bons warns

sinful flicker
#

cest vraiment particulier

noble mountain
#

att je test

sinful flicker
#

elle donne quoi la structure de ta table

noble mountain
#

C'est bon

#

Problème réglé

#

Je les avais mis en BIGINT 20 alors qu'on doit les mettre en VARCHAR dans la bdd

sinful flicker
#

j'allais arrivé la dessus ahah ; gg 😉

dense hedge
#

les id discord sont des string et pas un number meme si il y a que des chiffre 👀

queen ocean
#

Discord les stock en bigint de son coté mais les communique en string

#

Y a certains cas où vous pouvez recevoir un int mais peu de chance que ca vous arrive

dense hedge
#

il y a que les permission je crois qui reste principalement en bigint

cursive sail
cursive sail
fair ether
#

Ça répond à ta question ?

keen narwhal
#

quand tu fais un live ou une vidéo le bot envoie le message ?

fierce plank
#

Hello quelqu'un aurait une idée d ou ca peut venir ?

#
    return new TSError(diagnosticText, diagnosticCodes, diagnostics);
           ^
TSError: ⨯ Unable to compile TypeScript:
src/client/client.ts:105:20 - error TS2339: Property 'player' does not exist on type 'Client<boolean>'.

105             client.player.on(event.name, fn);
                       ~~~~~~
src/client/client.ts:181:28 - error TS2339: Property 'player' does not exist on type 'Client<boolean>'.

181         return this.client.player;
                               ~~~~~~

    at createTSError (/Users/fullgreen/IdeaProjects/Polaris/PolarisBot/node_modules/ts-node/src/index.ts:859:12)
    at reportTSError (/Users/fullgreen/IdeaProjects/Polaris/PolarisBot/node_modules/ts-node/src/index.ts:863:19)
    at getOutput (/Users/fullgreen/IdeaProjects/Polaris/PolarisBot/node_modules/ts-node/src/index.ts:1077:36)
    at Object.compile (/Users/fullgreen/IdeaProjects/Polaris/PolarisBot/node_modules/ts-node/src/index.ts:1433:41)
    at Module.m._compile (/Users/fullgreen/IdeaProjects/Polaris/PolarisBot/node_modules/ts-node/src/index.ts:1617:30)
    at Module._extensions..js (node:internal/modules/cjs/loader:1691:10)
    at Object.require.extensions.<computed> [as .ts] (/Users/fullgreen/IdeaProjects/Polaris/PolarisBot/node_modules/ts-node/src/index.ts:1621:12)
    at Module.load (node:internal/modules/cjs/loader:1317:32)
    at Function.Module._load (node:internal/modules/cjs/loader:1127:12)
    at TracingChannel.traceSync (node:diagnostics_channel:315:14) {
  diagnosticCodes: [ 2339, 2339 ]
}
#
import { Collection } from "discord.js";
import {CommandOptions} from "@/types/command";

declare module "discord.js" {
    export interface Client {
        commands: Collection<String, CommandOptions>;
        player: any;
    }
}
#
{
  "compilerOptions": {
    "target": "es2016",
    "module": "commonjs",
    "rootDir": "./src",
    "outDir": "./dist",
    "esModuleInterop": true,
    "forceConsistentCasingInFileNames": true,
    "strict": true,
    "typeRoots": ["src/@types", "node_modules/@types"],
    "skipLibCheck": true,
    "paths": {
        "@/*": ["src/*"]
    },
  },
  "include": ["src"],
  "exclude": ["node_modules"]
}
violet knot
#

tu utilse Client et non ExtendedClient

#

en regardant vite fait

clear elbow
#

Bonjour, quelqu'un serais disponible pour m'aider à utiliser nextauth pour discord en nextjs ? Je trouve plusieurs tuto mais je n'y arrive pas ... Merci !

odd crater
#

Salut salut quelqu'un serait disponible pour m'expliquer pourquoi quand je souhaite récupérer un formulaire avec fetch ça marche pas dans la console j'ai droit a POST 500

fierce plank
#

Et surtout page ou app router ?

#

app router

#

pages router

fair ether
#

Dès lors d'une correction tu as écrit 'youtubei ?' donc je te montre le package qui est dorénavant obsolètes

#

Ceci sert simplement à faire un bot music. Mais le package est obsolète et donc, a été remplacé par discord-player. C'est pourquoi il a eu une erreur non reconnu

keen narwhal
#

y a un module down mis jspsi c youtubei

fair ether
# keen narwhal les modules sont tous down non?

Je n'ai pas eu de soucis avec ytdl-core.
Mais c'est bien galère à chercher des modules fonctionnels, je sais pas si ytdl-core marche encore aujourd'hui. Mais y'a 2 mois j'ai pas eu de soucis

keen narwhal
fair ether
#

Fouille dans la Doc et test, moi j'ai mes anciens codes mais comme je suis en vacances. Je peux pas test

keen narwhal
keen narwhal
fair ether
fair ether
keen narwhal
fair ether
#

Vraiment ça arrive ça mdr. Tu galère pendant des heures pour au final à la fin du t'aperçois que le module est enfaite obsolète. Ça m'est déjà arrivé quand j'ai voulu faire mon 1er bot music.
C'était même marqué sur la page. Mais j'étais tellement pressé de le faire que je n'ai pas fait attention

worthy ice
keen narwhal
#

depuis longtemps

keen narwhal
fair ether
fair ether
onyx flame
#

Salut j'ai une questions vous savez comment afficher plusieurs images dans un embed et quand je passe sur mobile afficher seulement une image ?

#

en nodejs discord.js

onyx flame
#

@sinful flicker Si je viens de le faire merci quand même.

sinful flicker
queen ocean
sinful flicker
#

I seeee , c’est stylé en vrai

onyx flame
#

Yep mais il y a une solutions 😉

sinful flicker
#

Manque plus que des checkbox dans les formulaires

onyx flame
#

Dans la v15 il vont taff dessus.

queen ocean
#

Discord est en V10 actuellement

onyx flame
#

Et ce que tu dis n'as rien avoir avec l'api de discord.

queen ocean
onyx flame
#

Sinon j'aurai eu un probleme de request dans l'api pour afficher 3 image dans mon embed et une seul quand je suis sur mobile.

#

juste de la logique.

queen ocean
#

L'API permet de recevoir plusieurs embeds dans un msg MAIS si les embeds ont la même url et une image, les images seront merge dans le 1er embed
C'est un comportement voulu pour gérer les postes twitter comme des embeds
Sauf que sur mobile, y a moins de place sur l'écran, donc seul la première image est affiché 😉

#

Il a pas aimé ma solution il a leave KaPOP

sharp grail
#

discord.js va passer en v15? sue

#

malheur

queen ocean
sharp grail
#

hmm okay 🤔

sharp grail
#

merci

dense hedge
keen narwhal
#

malheur là V15

#

MALHEUR

#

ça pue sa mère la v15, faudra tout re adapter les commandes

#

y aura des modules ils seront même pas à jour

#

reste sur la v14 c'est très bien

sharp grail
#

😂

sharp grail
keen narwhal
cerulean pond
keen narwhal
#

ou jai dit que je vois la v15 ? tu es un ancien développeur ? chaque fois c'est la même chanson tu dois adapter, attendre les corrections, etc.. A chaque version de discord js, c'est pour ça que je conseil pas de mettre directement la v15 et attendre quelques mois.

cerulean pond
keen narwhal
# cerulean pond ah my bad, de la manière dont tu le disais on croyait que la v15 était déjà sort...

nan tqt y a rien ; c'est juste que les gens parlait de la v15 donc je me suis ramener. Franchement, elle va bientôt sortir (il me semble) mais faites comme vous voulez mais faudra pas pleurer si vous devez adapter le code à la nv version... Surtout que limite vous devez creer en fait la nouvelle commande, ça ira plus vite que adapter car y aura probablement des options en +, nouvelle manière de faire les permissions etc

cerulean pond
keen narwhal
cerulean pond
#

Du coup si j'ai bien fait les choses, je n'aurai qu'à changer quelques trucs dans les fonctions principales qui se chargent de créé un embed, boutons, menus etc à partir d'un tableau d'objet que j'ai moi-même crée et typé

#

Et le tour est joué haha

keen narwhal
#

tu me dira quoi quand elle sortira. Je pense que tu vas vite abandonner 😹

cerulean pond
#

S'il n'y a pas de nouveautés majeures, je m'empresserai pas de mettre le v15 avant que la v16 soit sortie, et puis dans tous les cas ça me prendra de toute façon que quelques fonctions à changer comme je te l'ai déjà dit, et tout mon code dépend de ses fonctions principales à changer, donc pas besoin de changer la façon dont on crée les embeds dans chaque coin de mon code

keen narwhal
#

d'accord

#

bon bonne journée à toi ! j'y vais désolé

keen onyx
keen onyx
#

nope

#

mais en vrai c pas un soucis en soit c'est juste que j'aimerai comprendre pourquoi sa fait ça, c'est pas logique

floral bolt
#

Alors pour la faire simple c'est le mode strict de react qui fait un double rendu pour éviter les effet indésirable qu'il peut y avoir de temps en temps , et en gros quand tu clic la premiere fois ca va venir mettre a jour le state selected ce qui va rerendre ton bouton

#

j'imagine que c'est pas clair

#

mais on appel ca un effet de bord

keen onyx
#

nan ya pas de strictmode ici, et quand je clique la première fois certes, sa rerender mon bouton (a cause du state qui change) comme toutes les autres fois d'après, mais là, la 1er fois ca va le rerender 2 fois, c'est ça que je comprend pas

empty mauve
sly shale
keen narwhal
#

prsk sah

#

force

#

a

#

lui

sly shale
#

Je sait pas il va sûrement venir demander de l’aide

#

Mais force je scale pas 2000+ ligne de code

keen narwhal
#

big flemme de passer littéralement 1 semaine sur son code

#

je pense que gta 6 et la v16 aura le temps de sortir que j'aurais pas fini son code correction

keen onyx
keen narwhal
steep gulch
#

Hello

#

j'ai un soucis avec mon backend

#

c'est la première fois que j'utilise node.js pour me connecter a ma base de donner mysql

#

stocker en local avec xamp

#

quand je veux recup les infos dans un tableau je recois cette erreur

#

Error: Access denied for user 'root'@'localhost' (using password: NO)

#

======================================================================
Mon code

const mysql = require("mysql2");

const connection = mysql.createConnection({
host: "localhost",
user: "root",
database: "dbh_name",
});

connection.query("SELECT * FROM users", function (err, results, fields) {
console.log(err);
console.log(results);
console.log(fields);
});

keen onyx
keen narwhal
# keen onyx

c'est quoi le code? probablement une faute de frappe, de ta part

#

envoie pas le code au complet, juste quelques lignes avant et la fin du code

keen onyx
#

j'ai isoler le bug dans le sandbox tout est bon

steep gulch
#

je comprend pas vraiment ce qui est dit dans le sandbox

keen onyx
steep gulch
#

Ah okay

steep gulch
#

Error: Access denied for user 'root'@'localhost' (using password: YES)

steep gulch
#

je croit je me suis mal démerder

weary torrent
#

@keen onyx t’as résolu ton problème de render 2 fois ?

keen onyx
#

non

weary torrent
#

Si je ne m’abuse c’est parce que t’es en développement

#

Et le DOM se render 2 fois en react quand tu dev

#

Essaye de le build et de le start pour voir

#

Sinon

#

Tu retires le React.StrictMode de ton app.js si tu l’as mis et ça enlèvera le double render

#

De ça

ReactDOM.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
document.getElementById('root'));

À ça

ReactDOM.render(
  <>
    <App />
  </>,
document.getElementById('root'));
keen onyx
#

je test de voir si sa s'enleve en production mais sa m'étonnerai

weary torrent
#

Essaye

steep gulch
floral bolt
#

Je t’explique mieux, mais en gros ton bouton appel automatiquement la fonction au premier appel puis le stage ce reset

keen onyx
floral bolt
#

Je sais pas pourquoi exactement mais c’est un soucis qui arrive de temps en temps sur React, tu peux test avec l’extension react développer sur chrome pour avoir plus d’info

keen onyx
keen onyx
keen narwhal
#

Un vrai les gars c'est facile de faire des cheat pour stream tu as qu'à faire un script qui avantage sur le jeux et tu fais F12 pour exécuter le script

weary torrent
ancient sonnetBOT
#
Citation du message de hikinno#0 posté dans #javascript-typescript

quoteStart yaurai t'il un bon dev React qui saurai expliqué pourquoi lors du premier clic du bouton le composant se render 2 fois ? (c'est lié au useEffect mais bizarrement sa fonction setup ne s'exécute pas mais semble quand meme causé un re-render) : (https://codesandbox.io/p/sandbox/react-dev-forked-593rh3?file=%2Fsrc%2FApp.js) quoteEnd

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

keen onyx
#

et enfaite la function setup du useeffect ne se lance meme pas sur le click donc en vrai il a aucun effet direct, mais en l'enlevant le problème disparait donc...

zenith bridge
#

Salut, j'ai mis l'extension Réact sur Électron mais rien qui s'affiche dans l'inspecteur

#

Et l'import

#
        REACT_DEVELOPER_TOOLS,
} from "electron-devtools-installer";```
idle tide
#

hello ! je suis actuellement en train de suivre la formation de grafikart mais je galère à comprendre les boucles et les fonctions (enfin surtout le contenu, j'ai compris comment les construire et les appeler mais en général on y retrouve beaucoup de boucles & conditions..), vous auriez une autre vidéo ou un site (lecture) à me conseiller svpp ?

silent quiver
# idle tide hello ! je suis actuellement en train de suivre la formation de grafikart mais j...

il y a ça https://developer.mozilla.org/fr/docs/Web/JavaScript/Guide
Mdn possède de très bonnes doc et sont traduites par la communauté.

MDN Web Docs

Le guide JavaScript illustre comment utiliser JavaScript et fournit un aperçu des fonctionnalités du langage. Pour des informations exhaustives à propos des fonctionnalités du langage, voir la référence JavaScript.

leaden arrow
#

Sa fait 3h que je suis là dessus j'essaye de téléporter le joueur sur l'herbe mais il est téléporter sur l'herbe pendant 1s puis il se fait re téléporter dans la pierre

Merci d'avance

keen narwhal
leaden arrow
#

En faite mon problème c'est que je veut que le joueur apparaissent sur l'herbe mais il se fait re téléporter dans la pierre 1s après

keen narwhal
#

Tu peux m'envoyer le script

finite glade
#

Bonjour, j'aimerais si possible l'aide d'un developpeur car j'ai repris un serveur avec un bot en développement et je vous avoue être perdu car j'ai voulu copier une commande pour effectuer une attaque et cela ne fonctionne pas (crash bot) merci a vous (vocal disponible)

finite glade
dire oriole
finite glade
#

js

#

d'accord merci c'est gentil de ta part

keen narwhal
finite glade
keen narwhal
#

Non flemme

finite glade
#

ah x)

#

tempis merci quand même alors

leaden arrow
keen narwhal
finite glade
leaden arrow
lean jasper
#

Bonjour,

J'aurais besoin d'aide sur la commande d'un bot discord. ^^"

Voici le code :
la commande est censée compter le nombre total de messages envoyés par chaque utilisateur, stocker cette information et l'afficher.

Le même principe s'applique aux activités vocales, avec ou sans système AFK.
Si un utilisateur est seul dans un salon vocal et est muet, il est considéré comme AFK.
De même, s'il est dans un salon vocal avec d'autres personnes mais mute micro et casque, il est aussi considéré comme AFK.
De 2 heures à 10 heures du matin (heure européenne), si un utilisateur est seul dans un salon vocal, il est marqué comme AFK jusqu'à 10 heures du matin (Peut importe si il est mute ou pas).

Si l'utilisateur est démute, il est considéré comme actif. (Comportement de personne active...)
De plus si possible, j'aimerais évité que ça spam mon fichier json, c'est a dire au lieu que ça crée de nouvelle ligne, simplement que ça edit les lignes déjà créé.

Je n'ai pas de codes d'erreur ou de messages spécifiques; le problème est que cela ne fonctionne pas comme prévu.

Désolé si celà est mal formuler ou quoi que ce sois, je suis un petit peu a bout de nerf a propos de celà, si vous souhaitez avoir plus d'information ou quoi que ce sois, n'hésitez pas a me demander.

const moment = require('moment'); // Importer la bibliothèque moment
const fs = require('fs');

// Create a new client instance
const client = new Client({
    intents: [
        GatewayIntentBits.Guilds,
        GatewayIntentBits.GuildMembers,
        GatewayIntentBits.GuildMessages,
        GatewayIntentBits.MessageContent,
        GatewayIntentBits.GuildPresences,
        GatewayIntentBits.GuildVoiceStates
    ]
});```
keen narwhal
leaden arrow
full raven
#

Salut, y'a un dev js avec qui je pourrais discuter en voc 5 min ?

#

svp ?

torn fog
full raven
#

c'est un peu plus compliqué que ca, mais je vais essayer d'expliquer au mieux.

Donc, j'aimerais apprendre le javascript, étant donné que j'ai un projet que je souhaite développer (et plein d'autres), mais j'en ai marre de demander les codes a chatgpt, je veux être capable de coder par moi même. pour ca, j'ai regardé des tutos, cherché des dizaines de sites, mais j'ai rien trouvé qui m'aide a apprendre. c'est pour ca que j'aimerais savoir par quel moyen vous avez appris Javascript. (de facon gratuite)

floral bolt
#

On a créé des projet, donne toi des défis à réaliser et fait tout pour y arriver sans gpt 😉

full raven
#

je vais jamais bien loin sans aide

#

et c'est pour ca que je finis toujours par abandonner et scroller sur YouTube

finite glade
#

Une personne serais disponible pour vocal, j'aimerais faire une commande if avec un texte pour des récompense via un roll mais je vous avoue être un peu perdu (premier jour de dev)

silent quiver
finite glade
#

J'ai plus précisément 2 chose a faire

dire oriole
finite glade
#

oh nice

#

Je fini et j'arrive

finite glade
#

@dire oriolec'est bon j'ai fini tu es disponible ?

dire oriole
#

Yep

leaden arrow
#

Bon bah je vais demander a quelqu'un d'autre alors

keen narwhal
leaden arrow
#

Pas grave

floral bolt
#

Tu sais que tu as des vidéos qui te montre comment faire ?

floral bolt
#

vas en vocal ya possiblement quelqu'un qui viendras te tenir compagnie 😉

spice grail
# full raven je vais jamais bien loin sans aide

il faut commencer par apprendre le « lexique » du langage, tout ce qui va être variable, fonction, boucle, etc.. si tu ne sais pas ce que c’est une boucle tu regarde comment ça fonctionne et les différents types. pour ça il y a pleins de tutos et ensuite tu apprends à utiliser une librairie, puis des frameworks ce qui est plutôt pratique en js. mais faut y aller step by step, ne brûle pas les étapes en voulant faire le site de l’année ou autre si tu ne maîtrise pas le js (commence par des choses simples ça te motivera pour apprendre et continuer 😉)

full raven
#

Merci du conseil !

lean jasper
#
    at Client.<anonymous> (E:\Bureau\Bot Discord\Hiva Bot\Gestion Hiva\index.js:986:47)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)```

Le bot a all perm, dont sont role est le role le plus haut du serveur.
Impossible de donner n'importe quel role a n'importe quel membre.
ocean grail
# lean jasper ```Erreur lors de la gestion des rôles : TypeError: Cannot read properties of un...
client.on('messageCreate', async message => {
    if (message.author.bot || !message.guild) return; // Ignore les messages des bots et les messages hors serveur

    const [command, roleMention, memberMention] = message.content.slice(1).trim().split(/ +/);

    if (command !== 'addrole' && command !== 'removerole') return;

    if (!roleMention || !memberMention) {
        return message.reply('Usage : +addrole @role @membre ou +removerole @role @membre');
    }

    const roleId = roleMention.replace(/[\\<>@#&!]/g, '');
    const memberId = memberMention.replace(/[\\<>@#&!]/g, '');

    console.log(`Command: ${command}`);
    console.log(`Role ID: ${roleId}`);
    console.log(`Member ID: ${memberId}`);

    // Vérifiez que ROLE_WHITELISTS est défini et contient les données attendues
    if (!ROLE_WHITELISTS || !ROLE_WHITELISTS[command]) {
        console.error('ROLE_WHITELISTS non défini ou incomplet');
        return message.reply('Une erreur de configuration est survenue.');
    }

    const allowedRoles = ROLE_WHITELISTS[command];

    // Vérifiez que message.member existe et a la propriété roles
    if (!message.member || !message.member.roles) {
        console.error('message.member ou message.member.roles est undefined');
        return message.reply('Impossible de vérifier vos permissions.');
    }

    if (!message.member.roles.cache.some(role => allowedRoles.includes(role.id))) {
        return message.reply('Vous n\'avez pas la permission d\'utiliser cette commande.');
    }

    try {
        // Le reste de votre code...
    } catch (error) {
        console.error('Erreur lors de la gestion des rôles :', error);
        message.reply('Une erreur est survenue. Assurez-vous que les mentions sont correctes et que le bot a les permissions nécessaires.');
    }
});```
lean jasper
#

Je sais pas si je suis stupide, mais ça me met exactement les memes erreurs.

ocean grail
#

t'as pas ça ?

console.error('ROLE_WHITELISTS non défini ou incomplet');

#

@lean jasper

ocean grail
#

non mais dans ta console du coup mdr t'as pas le mess ? 😂

lean jasper
#

Nope

steep gulch
#

Hey je galère à récup ma session fait dans mon backend avec express dans mon front end

#

si je vais dans mon back end j'ai les infos de la session parfaitement mais quand je fetch les infos dans mon front j'ai cette erreur en console

#

Uncaught (in promise) SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

#

mon fetch :

#

fetch("/session")
.then((response) => response.json())
.then((user) => console.log(user));

#

mon back end :

#

app.get("/session", (req, res) => {
const user = req.session.user;
try {
res.json(user);
} catch (error) {
res.status(500).json({ message: "Server error" });
}
});

floral bolt
steep gulch
#

J'ai rien dis

#

je reçois un résultat

#

la réponse est énorme

#

je fais quoi avec ?

#

@floral bolt

floral bolt
#

et normalement dans ton log tu auras user:{..}

steep gulch
#

fetch("/session").then((response) => console.log(response.data));

#

erreur :

#

undifined

#

il trouve pas

#

@floral bolt

torn fog
steep gulch
#

Response { type: "basic", url: "http://localhost:5173/session", redirected: false, status: 200, ok: true, statusText: "OK", headers: Headers(8), body: ReadableStream, bodyUsed: false, Symbol("ninja"): {…} }

#

@torn fog

steep gulch
floral bolt
#

.then(response => {
    if (!response.ok) {
      throw new Error(`HTTP error! status: ${response.status}`);
    }
    return response.json();
  })
  .then(user => {
    console.log("User session data:", user);
  })
  .catch(error => {
    console.error("Erreur lors de la récupération de la session:", error);
  });
steep gulch
#

Erreur lors de la récupération de la session: SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data

#

@floral bolt

floral bolt
#

C’est que ton json ne renvois rien :/

steep gulch
#

c'est bizard

#

parce que ma session du coté backend s'affiche correctement c'est qu'elle est par vide

floral bolt
#

Log req user côté back ?

steep gulch
#

console.log(req.session);
res.json(user);

#

Le res.json(user) affiche bien mes infos

#

mais console log fait rien

#

par contre

#

console.log(user)

#

ça affiche mes infos

#

@floral bolt

#

j'ai rien dis meme req session fonctionne

floral bolt
#

ok alors renvois jsute req.session et retest

steep gulch
floral bolt
#
app.get("/session", (req, res) => {
  try {
    const user = req.session.user;
    console.log(user);
    
    if (user) {
      res.status(200).json({
        message: "Session utilisateur récupérée avec succès",
        user: user
      });
    } else {
      res.status(401).json({
        message: "Aucune session utilisateur trouvée",
        user: null
      });
    }
  } catch (error) {
    console.error("Erreur lors de la récupération de la session:", error);
    res.status(500).json({ message: "Erreur serveur lors de la récupération de la session" });
  }
});```
steep gulch
#

@floral bolt

floral bolt
#

ok, il ne retrouve pas l'user du coup

steep gulch
#

c'est bizard je ne comprend pas pourquoi tu as une idée du problème ?

floral bolt
#

je pense que ton token n'est pas valide

steep gulch
#

ma session est défini ici :

#

app.get("/api/v1/auth/steam/return", async (req, res) => {
res.setHeader("Content-Type", "text/plain");
try {
let steamId = await signIn.verifyLogin(req.url);

const steamid64 = steamId.getSteamID64();
const response = await axios.get(`https://api.steampowered.com/ISteamUser/GetPlayerSummaries/v2/?key=${process.env.STEAM_API_KEY}&steamids=${steamid64}`);
const { avatarfull, personaname, profileurl } = response.data.response.players[0];
const userip = await fetch("https://api.ipify.org?format=json")
  .then((response) => response.json())
  .then((data) => {
    return data.ip;
  })
  .catch((error) => {
    console.log("Error:", error);
  });

req.session.user = {
  steamid64,
  avatarfull,
  personaname,
  profileurl,
  userip,
};
await req.session.save();

res.redirect(process.env.API_URL);

} catch (error) {
console.error(error);
return res.status(500).send("There was an error signing in.");
}
});

floral bolt
#

ouais masi client vers serveur ?

steep gulch
#

c'est a dire ?

floral bolt
#

Bah tu es sensé avoir un token quand tu te connecte ?

#

comment tu fais pour savoir qui est ton utilisateur ?

steep gulch
#

je pense on commence a touché a pourquoi ça fonctionne pas

#

en gros

#

j'ai suivi ce tuto

#

ce qui me permet de faire une connexion avec steam

#

les info comme je tes fais voir sont stocker dans une session a la fin et de la je ne sais pas comment envoyé c'est info au front

floral bolt
#

app.get('/', (req, res) => {
const { user } = req.session;
res.status(200).send(user);
});
coté client tu dois garder le user

#

normalement hein

#

parceque la rien n'identifie les requettes de ton client, tu ne sais pas si l'user est connecter ou non

steep gulch
#

Okay je suis un pueperdu pour etre honnete mais je remis ce que tu as envoyé et ça ne change rien pour le moment

#

Je nouveau a node et express du coup je suis perdu

#

@floral bolt

fierce plank
#

Hello, quelqu'un saurait pourquoi j ai cette erreur avec next-auth ?

#

mon code

fierce plank
#

probleme réglé maintenant j ai des erreurs 405

pure tiger
keen narwhal
# lean jasper

si cest toujours à jour, tu n'as juste pas défini "roles"

oak turret
#

ou qu’importe la méthode

fierce plank
#
import { handlers } from "@/lib/auth/";

export { handlers as GET, handlers as POST }
craggy mist
#

salut dans vs code lorque je mets npx create-next-app@latest dans le terminal ce me met erreur avec npx quelqu'un saurait comment régler ce bug ?

keen narwhal
craggy mist
#

bien sur att 2 secondes

keen narwhal
#

Yes

craggy mist
keen narwhal
craggy mist
#

ha ok je mets quoi a la place ?

keen narwhal
#

Juste latest

craggy mist
#

meme erreur

keen narwhal
craggy mist
#

oe

keen narwhal
#

Enft dis si ça te dérange le ping

craggy mist
#

non tkt

keen narwhal
#

create-new-app@latest

craggy mist
keen narwhal
keen narwhal
keen narwhal
craggy mist
keen narwhal
#

create-next-app

#

Fin dcp

#

npx create-next-app@latest

craggy mist
#

meme erreur

#

c un fichier que j'ai pas installe ?

keen narwhal
craggy mist
#

la commande ?

keen narwhal
#

Pls?

craggy mist
#

oe

#

ca marche pas

#

mais npm init marche

keen narwhal
craggy mist
#

pas reconnu

keen narwhal
#

Hésite pas à ping

keen narwhal
craggy mist
#

deja fait

#

mais ok

keen narwhal
craggy mist
#

comment ?

keen narwhal
#

Et si ça marche pas redémarrer ton pc

craggy mist
#

ok j'essaye merci

keen narwhal
#

Sur vscode

craggy mist
#

yes

#

meme erreur

keen narwhal
#

Pls ping (js c’est rare quand on demande ça)

keen narwhal
craggy mist
#

oui

#

@keen narwhal

keen narwhal
#

Dcp npm pas reconnu?

craggy mist
#

non

#

@keen narwhal

keen narwhal
craggy mist
#

je dois y aller mais merci

#

not found npm

keen narwhal
keen narwhal