#javascript-typescript
1 messages · Page 32 of 1
Je test ça je me souviens plus
Nop, j'ai pas
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
Donc ton probleme commence ici 😉
Ouais mais pour moi la logique est correctement structurée donc pourquoi ça ne fonctionnerait pas dans mon cas
C'est ça que j'arrive pas à répondre
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]
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']
});
et ensuite tout simplement
if (message.channel.type === 'DM') {
ne peux pas etre correcte
car channel type est un nombre
if (message.channel.type === ChannelType.DM) serait plus juste ?
et donc le channel.type d'un message privé === 1
si ton ChannelType est définis oui !
😉
@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
Oui, merci mais pourquoi c'est ça le truc
si tu prend l'url tout en bas de l'erreur
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
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
hmmmm, t'a l'intent des messages privés?
Yep
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
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
Il est bon
c'est bien l'id du message et pas l'id du salon ou un truc comme ça ?
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
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
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
ooo
Donc c'est bien le channel_id qui était mauvais
C'est bon problème réglé
Ouais mais pu de sous 😢
Fin j'ai 40 balles mais ricrac pour la fin du mois xd
pfff
ah bah ca je sait pas je te dis juste l'erreur qu'il ressort
Et ouais me reste des courses à faire 
jpense il avait remarqué 😹
oui XD
slt, jvoulais savoir comment je pourrais avoir ma conssole qui affiche mes log comme ceci pls
baaaaah qu'est ce que tu ne sait pas faire ?
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
👍
après si tu parle de la couleur tu peux utiliser https://www.npmjs.com/package/chalk
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 });
}
}
quand t'a fait interaction.customId.split
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
ok je vais faire ca merci
?
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
Ok et tu as une erreur en console ?
Aucune comme j'ai dis
Ah pardon j'avais pas vu
c'est ça qui est le plus drôle je pense 
Tu as réessayé car c'est bizzare pas d'interaction et pas d'erreur 😅
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 🤓
Bien vu sherlock
Oui peut être que tu ne répond pas à l'interaction
Nan en vrai, sûrement que tu as mal désigné ton interaction, du coup il lance rien du tout
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
Oui je pense que ça joue tu devrai supprimer l'ancien et renvoyer un nouveau tout propre avec une autre interaction !
Alors attend, j'termine de regarder ton code et j'te dit ça
Ah bah c bon j'ai trouver
Tu met à jour ton embed, mais pas ton button
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
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 ?
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 ?
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
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
C'est fait mais il s'arrête pas, quand j'appuies sur mes boutons aucune erreur, aucun crash
Juste le message générique de discord d'échec
Si tu met des logs dans ta function handleApplicationConfirmation(), tu les vois dans ta console ?
Effectivement, j'ai rien
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
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
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]
nan car je trouve ça plus facile a écrire quand je code ça ce raproche plus des mongoose schema
aaaaaaah je voit
je peu faire un record jsp si c'est mieux
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
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
je deteste quand j'dois utiliser typescript d'une certaine maniére bizarre pour la rendre compatible logiquement avec un autre module ptdrrr force
ptdrrrr on en est là
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
je confirme
je doute, ts est connu pour surtout pas étre sensible aux valeurs dynamiques js ¯_(ツ)_/¯
ptdrrrr on est partout
a ça keyof inputConfig
en gros
mdr moi je trouve ça tres propre
surtout avec l'acent
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...
les trucs de clés et tout
azy je regarde ça
courage lol
vous etes fou pas les 8h mdr
ouais, j'ai vu la moitié
franchement je me souviens de quasi rien mdr
en 8h il aura le temps de créer une alternative à typescript
ç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
jsspas c'est un jeu bizarre du serveur
tailwind et ts c'est le genre d'outil quand on teste on peux plus revenir au truc de base ptdrrrr
de ouf
hate de voir des outils qui vont me faire ça mais pour le backend
askip pocketbase c bien
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
leur site a l'air très cute
remlie la doc
x)
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
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
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
^^'
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
tu t'y connais beaucoup en back?
ouai un peu
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
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
ouais effectivement..
le mieux c'est de le faire avec nginx
ç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
j'ai pas encore utiliser next mais soit doit etre a peu pres pareil
c'est la manière de déclarer ou on place les middleware qui est étrange
enfin bon, je verrais bien..
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
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
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
ça a l'air pratique
ben en vrais tu dois pouvoir faire la meme chose avec next mais effectivent je comprend pas trop le concept
ouais ^^'
y'a pas mal de trucs un peu étranges dans next
mais je trouve ça très cool quand même
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
Après tu peux tres bien les automatiser avec un CLI par exemple pour eviter de tout refaire a chaque fois
Hééé! Je développe une librairie de composants stylisés pour React utilisant Tailwind CSS mais je rencontre un problème que je n'arrive pas à régler:
https://cdn.discordapp.com/attachments/1233345530013421629/1268620254905630798/image.png?ex=66ad162e&is=66abc4ae&hm=33d27a8f660bb8fc40cd49b1055822d004581b72a76576159ab0b2fb9838fdbb&
https://cdn.discordapp.com/attachments/1233345530013421629/1268620255110889704/image.png?ex=66ad162e&is=66abc4ae&hm=9de9bb93c0273f9bca463d3d009ea9e9aa981ee4783a50d330414cfab6f6cfd6&
https://cdn.discordapp.com/attachments/1233345530013421629/1268620444181729433/image.png?ex=66ad165b&is=66abc4db&hm=6684f598fdd9256492d2240f40b7076b2dbbd7483c7b2ff026257eb7d7fb5f91&
https://cdn.discordapp.com/attachments/1233345530013421629/1268620255345901631/image.png?ex=66ad162e&is=66abc4ae&hm=88d9e69c76ecda1b7cf8e8840ccb93463f5eebd27ba0a3ba77360e353ea8321f&
ça doit étre jsx non?
pas .js
J'ai déjà essayé avec .jsx et j'ai la même erreur
t'a 2 fichiers .js essaye sur les 2 si ça strouve t'a changé qu'un seul au debutlol
index.js n'a pas besoin d'être changé en index.jsx
ah oui y a pas de composants dessus
j'voit pas ce que ça peut étre à part changer en .jsx hein
juste pr me rassurer intérieurement tu peux renommer le fichier en .jsx et screen la nouvelle erreure stp :'))
Même erreur
dans le "main" du package.json ça dis ./src/index.js mais jvoit pas de fichier comme ça c'est normal?
tu peux montrer la page de ton composant stp ?
La page?
Le fichier ou réellement un screen de la page sur le navigateur?
le code du composant
normalement non
t'utilise pas babel un bail comme ça ?
C'est inclus dans NextJS et React aussi je crois
ta ça
{
"presets": ["next/babel"]
}
Non
Oui
envoie moi ce que tu as stp
/** @type {import('next').NextConfig} */
const nextConfig = {};
export default nextConfig;
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
Je fais ça
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
ah ok
npx create-next-app@latest
Je suppose que c'est inutile que j'essaye ça du coup?
je pense oui, par contre je saurais t'aider..
Merci quand même mais la situation est vraiment casse-pieds
oui c'est ce que je vois
Je ne vois pas ce que ça pourrait être
t'es obligé d'utiliser le tsx ?
jsx tu veux dire?
Normalement non
mais je le mets au cas où
j'ai déjà essayé sans
mais même erreur
ah oui excuse
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"
}
}
tu as que ca ?
Oui
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",
}
{
"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?
oui tes sensé lancé
puis faire npm link
si tu y arrive pas ou va tout refaire de la base
Là directement dans mon paquet?
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
Ah d'accord
J'ai commencé il n'y a pas longtemps
ok, je vais te faire un petit tuto pour t'expliqué comment faire 😉
Jusqu'ici, je n'ai développé que ceci:
Merci beaucoup!
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
-
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
-
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 -
Initialiser un projet npm
Initialisez un projet npm dans le répertoire de la bibliothèque :
npm init -y -
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 -
Configurer Tailwind CSS
Initialisez Tailwind CSS et créez les fichiers de configuration :
npx tailwindcss initCré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', ], };
-
Configurer Babel
Créez un fichier
.babelrcavec la configuration suivante :{ "presets": [ "@babel/preset-env", "@babel/preset-react" ], "plugins": [ "@babel/plugin-transform-runtime" ] } -
Créer les composants
Créez un répertoire
src/componentset ajoutez un composant. Par exemple, créez un fichierButton.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.jspour exporter les composants :export { default as Button } from './components/Button'; -
Configurer les scripts de build
Modifiez
package.jsonpour 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
-
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 -
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 -
Utiliser les composants dans Next.js
Importez et utilisez les composants dans votre projet Next.js. Par exemple, modifiez
pages/index.jspour 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> ); } -
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 buildLes modifications seront automatiquement reflétées dans le projet Next.js grâce au lien symbolique.
Étape 4 : Automatiser la Construction (Optionnel)
-
Installer
nodemonPour surveiller les modifications et reconstruire automatiquement la bibliothèque, installez
nodemon:npm install --save-dev nodemon -
Ajouter un script de surveillance
Modifiez
package.jsonpour 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" } -
Exécuter la surveillance
Lancez le script de surveillance pour reconstruire automatiquement lors des modifications :
npm run watch
Encore merci! Je m'en vais de ce pas pour lire cela
@empty mauve
mdrr
mdrr j'avais pas vue merci 😅
TS te met pas un warn ou une erreur sur l'IDE ? @empty mauve
Il est ptetre sur notpad++ a l’ancienne 😇
Haha mes débuts @sinful flicker
JS*
Ah bah c'est pour ça alors
Discordjs est en ts
Normalement ton ide te signale quand même le problème
En TS tout est typé, donc l'IDE aurait remarqué que ton contenu JSON était pas correct, alors que JS est un gros porc
Js osef le typage ts laisse rien passer 

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'
}
pas sur que ca fonctionne
channel.members.find(u => u.id === memberToAdd.id)
essaie plutot ca pour recuperer l'utilisateur
déso j'étais absent
oki j'avi essayer
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)
channel.members.cache.find(...)
il voulait dire
mais faut que t'ai l'intent GuildMembers activé
tkt je l'ai
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)
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 …
😉
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
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);
oui mais ya quoi qui va pas dans le code
c'est toi qui leur a donné la value undefined ?
nan
screen la ligne 725 a 731 de ton index js
j'ai que celui de discord.js qui est aussi grand
at async InteractionCollector.<anonymous> (C:\Users\agius\OneDrive\Bureau\Angelo\src\utils\buttonPagination.js:92:17) {
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
ok, et comment réglé ça?
console.log chaque étape de ton processus et savoir ce qui fait crash
oki
ya forcément des étapes qui vont valider et une étape qui va crash
comment je doit structurer mes console.log de chaque étape 😅 (déso)
tu la place un peu random partout petit a petit sur ton processus tu fait un console log sur chaque entrée
et je log quel élément par exemple
toutes ta fonction de suivis de message
ok
Tu peux aussi logger la variable/constante qui contient la valeur final ou autre si tu veux voir ce qui pete dans la fonction
Par exemple au debut et apres la modification
bon...
Ton bot il a le même nom que toi ??
Yes j’ai penser à ça mdrrrr
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
Lin tout rose comme le gelano
Des anagrammes de ton prénom
Je laurais appeler fornikator perso
Je suis sur que si tu change son nom il marchera mieux
nan mais ya pas de problème avec le nom
Nn ok je vous embête plus vous avez l’air occupés…
@serene tangle
MDRR
C’est quoi que tu essayes de créer exactement et c’est quelle partie qui plante ?
a la fin ça sera une commande help avec des page ducoup
Mais la le probleme c’est quel commande, c’est censé faire quoi et ca plante a quel moment ?
quand j'envoie mon embed tt va bien mais c'est quand je change de page le problème
Regarde ta fonctionne de changement de page du coups
C’est quand t’essayes de changer le contenu avec les fleches pour plusieurs contenus et quand tu cliques sur la fleche ya une erreur ?
A mon avis c’est la gestion des index des pages qui doit poser problème dans ce cas
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
Quand tu cliques il ce passe un truc quand meme ou rien du tout
ok
C’est une question dsl jai pas mis le ?
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
Je vois l’idée, je connais ps assez le code pour pouvoir t’aiguiller mais ca concerne soit le bouton, soit l’affichage une fois cliquer
oki
Essaye de voir des exemples existants sur le web tu devrais voir si ta structure est différente
j'ai toujours le meme problème ça vient vraiment des mes boutons
Tu as un repo ? Je peux essayer de jeter un oeil ca me fera une petite prospection dans les bots discord mdrr
oui je la met a jour et jte la passe
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
@serene tangle vzy vas voir
juste fait pas attention au .env pls
Tkt je touche rien juste je jette un oeil pour voir si j’peux t’aider à répérer le problème
oki
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
Les fichier/dossiers qui concerne ton problème son lesquel exactement ? genre la création du menu et ses fonctions
j'ai pas tt compris déso, c'est vrai que niveau gestion de projet jsuis pas le mieu
buttonPagination.js dans /utils et help.js dans /command/general
En gros t'as branche "main", sert seulement pour ce qui est définitif ou en tout cas fonctionnel et au point. La branche dev elle te sert à réunir les autres branches que tu créerais par exemple /git checkout -b menu-buttons que tu mergerais dans dev et une fois que c'est valider et fonctionnel la tu peux le merge la dev dans main par exemple
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() ?
Alors je sais pas quelle méthode tu utilises pour discord mais j'imagine que tu peux break le processus une fois l'envoie fait
ok
jte met une image Zaros nous bloque des mots
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
oki
Ouai je comprend après c'est juste une recommandation surtout pour les recruteurs ils préfereront qlq qui organise ses branches ect plutôt que pas j'imagine
faut que je m'apofondisse avec github je connais pas tt
En vrai c'est pas beaucoup plus difficile (ca demande de verifier les merge ect) mais ca se fait globalement tu crée des repo tu crée des branche, tu sauvegardes avec commit et ou tu merge les branches tas a peu près tout l'intéret de git
c'était quoi le problème dcp ?
att je re jdoit promener mon chien
Ah c'était donc juste l'index qui était pas bien transmis
yep
j'essaie de régler le problème de ça...
si tu enleves le +1 ca fonctionne toujours pas ?
Mais l'affichage se fait correctement en dehors de l'écriture ?
oui
T'as mis un break a la fin de ton processus pour voir ?
essaye après ton return msg voir
au niveau du console log juste au dessus voir
nn plus meme chose
en dessous du resetTime sinon jsp du tout
😩 nn plus
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
Renvoie ton code actuel pls
problème réglé sorry
okeyy

Bonjour j'ai une question
est ce que les ratelimit existe pour les redirection sur les bots discord
et comment on peut le savoir
les redirections sur les bots Discord ?
C'est a dire ?
Dans l'onglet Oauth2 du dev portal tu met un lien de redirection et tu utilises discord passeport pour l'authentification
Et là quand j'essaie de le faire aujourd'hui sa charge dans le vide alors que sa marchais avant
Salut j'ai un petit
-An error occurred! Error: Invalid string format
et ma commande n'est pas registered
J'avais mis une maj 
Honteux

https://creatorsarea.fr/tutoriels/creer-un-bot-discord-avec-discordjs-et-sheweny/proteger-une-commande-sur-son-bot-discord
On est d'accord que le tuto est pas à jour, ou alors jai raté un truc sur mes /commands ?
😅
@neat lintel 👀
Je sais pas hein, je débute 
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
Ok thanks !
Et oublie pas de register tes commands après les avoir créés
https://discordjs.guide/creating-your-bot/command-deployment.html#command-registration
Mercii !
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
ipcMain.handle("getCurrentCape", async (event) => {
return await skinManager.getActualCape();
});
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
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)
verifie les extensions que tu as installé
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)
Hello
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
oki merci pour les tips 😉
de rien
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
Bonjour,
Vous avez une vidéo à recommander pour apprendre le backend ? (du style nodeJs + PostgreSQL)
y a des vidéos dans les domaines dessus
Merci beaucoup je vais regarder ça !
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.');
}
},
};
Yo, j'ai vite fait essayer de mon coté,
J'arrive au même résultat que toi uniquement quand je teste sur moi même, sur tout les autres membres le member.setNickname() fonctionne,
Je pense que tu es fonda de ton serveur, et discord dois avoir une règle ou on ne peux pas modifier le pseudo du fondateur du serveur (comme le ban ou le kick par exemple)
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 ?
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.
tu peux recuperer tout les membres du salon qui ne son pas modérateurs et les mute eux du salon
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
Ah nickel, je testerai ça avec un alt, merci beaucoup pour ta réponse 🙂
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
En gros, il t'a dis que y'a une alternative meilleur a ton package
Et il t'a dis de le dl sur
An unofficial package to test the use of youtubei in discord-player v6.. Latest version: 1.2.6, last published: 2 days ago. Start using discord-player-youtubei in your project by running npm i discord-player-youtubei. There are no other projects in the npm registry using discord-player-youtubei.
Installe le avec npm i discord-player-youtubei
Azy je fais ça
Merci chef
T'es un crack
Dis le moi si ça marche 🙂
Alors...
Je pense qu'il va falloir que tu changes tout ton code pour l'adapter à ce package
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
} ```
....
Donne ton code
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
Je rentre qu'à 23h30 donc pour l'instant essaye de régler le problème en étudiant le wiki :https://npm.im/discord-player-youtubei
Je vais regarder ça au cas où
Et je te redis
Merci de fou mec
De rien, si tu n'y arrives pas du tout, j'essaierai ton code et je te rendrai ton code qui marche. 
(faut aussi que j'y arrives, sinon faudrait donner ça au spécialistes discordjs)
Quel sympathie
Wesh mais merci
Mais oui, y en a pas beaucoup des gens comme lui
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
Azy merci je fais ça de suite
(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
...
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
attends
je refait un autre test
Azy merci mec t'es super gentil
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
c'est bon j'ai réussi en mettant a jour le module unenv
euh
(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)```
L’erreur est explicite consola n’est pas exporter
le problème etait que c'était le code d'une librairie dcp je savais pas quoi enlever
Regarde la doc de consola
d'accord, désolé encore 😅 j'ai comme même essayé
Mais c'est pas grave. C'est déjà beaucoup de ta part chef
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 😉
Euh le problème c'est que c'était mon code d'avant. Et avant ça me disais ça
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) ```
Alors si tu as toujours un problème en ce moment tu peux peut être copier coller ton code dans un fichier .txt (pour ne pas le perdre).
Puis tu copies colle ton ancien code qui t'affiché l'erreur au dessus en changeant bien évidemment le discord-player-youtubei
C'était le problème d'avant. Mais ducoup j'ai une autre erreur quand je change...
Il te dit qu'il scrappe les données de youtube, donc si youtube change un truc le youtubeExtractor peut ne plus fonctionner donc être instable
Donc y a t-il une solution....
Et puis sinon, si j'essaye de le faire avec un Spotify, ça ne marche pas
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
Le problème maintenant c'est que Spotify et youtube ont beaucoup de restrictions concernant les bots musique. C'est clairement plus dur d'en faire un maintenant qu'avant, car le fait qu'il n'y a aucune pub quand tu utilises un bot musique ça les fait chier. Car qui dit "pas de pub" dit "pas de thune". En gros ils y gagnent rien
Ah je voiss
Merci quand même chef
Je vais essayer tout ça quand je reviens chez moi
youtubei?
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();
}
}
};
T’as vérifier dans ta base de donne que tu ai bien la bonne id déjà ?
En faisant juste un log de ton select ?
Oui
C'est la bonne
ça récupère tout correctement juste il le retranscrit pas correctement, je ne sais pour quelle raison
À quel niveau exactement ?
ici
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
et les logs danss ta console
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
fais un console log de ton const [warnings] = await connection.query('SELECT * FROM warnings WHERE user_id = ?', [targetUser.id]);
warnings
Warnings retrieved from database: [
{
id: 1,
user_id: 302140208239869950,
guild_id: 1111009039434916000,
moderator_id: 302140208239869950,
reason: 'test',
timestamp: 2024-08-12T07:18:10.000Z
}
]
ID de modérateur invalide récupéré: 302140208239869950
C'est plutot drole ca ^^"
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
SELECT * FROM warnings WHERE user_id ='302140208239869965'
exec ca sur ton phpmy admin voir ce quil te sort lui
Les bons warns
cest vraiment particulier
elle donne quoi la structure de ta table
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
j'allais arrivé la dessus ahah ; gg 😉
les id discord sont des string et pas un number meme si il y a que des chiffre 👀
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
il y a que les permission je crois qui reste principalement en bigint
clean archi/SOC ?
An unofficial package to test the use of youtubei in discord-player v6.. Latest version: 1.2.6, last published: 5 days ago. Start using discord-player-youtubei in your project by running npm i discord-player-youtubei. There are no other projects in the npm registry using discord-player-youtubei.
Ça répond à ta question ?
etu veux faire quoi?
quand tu fais un live ou une vidéo le bot envoie le message ?
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 ]
}
Class Main
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"]
}
ligne 174 a 178
tu utilse Client et non ExtendedClient
en regardant vite fait
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 !
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
T as lu la doc ?
Et surtout page ou app router ?
The main entry point of NextAuth.js is the NextAuth method that you import from next-auth. It handles different types of requests, as defined in the REST API section.
app router
The example code below describes how to add authentication to a Next.js app.
pages router
Je répondais simplement à une aide
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
les modules sont tous down non?
y a un module down mis jspsi c youtubei
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
ytdl c'est bien je connais en vif le module mais je l'ai déjà vu passer pas mal de fois sur les tuto YouTube. A voir s'il est toujours possible de coder avec ou obsolète
Fouille dans la Doc et test, moi j'ai mes anciens codes mais comme je suis en vacances. Je peux pas test
et ici je connaissais pas le module "youtubei" donc je pensais que le "i" était une faute de frappe, mb
j'attends la v15 qui va bientôt sortir c'est mieux
C'est l'ancien module mais ils ont changé tout ça. Ils utilisent plus le même API me semble t'il. Je sais pas du tout
d'accord, merci
Ouais vos mieux, pour pas avoir un code trifouiller d'erreur au cas où lol ce qui m'est arrivé avec beaucoup de modules
Ha c'est trop chiant ça 😹. Imagine tu dev en v14 et pendant ton dev ton code est obsolète car le module a fait la maj
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
Yo, j'ai un bot musique aussi avec discord-player etc, plus aucune musique se joue donc je crois que il est down
discord player c'est down
depuis longtemps
je compatis ce sentiment de trahison par le module qui préviens pas ! 😹 Le truc le plus chiant c'est quand tu dois tout re adapter...
Je ne suis pas avec discord-player moi
Ah bah oui t'es obligé de tous changer ect... C'est juste les conditions que tu laisses le reste c'est à changer
c'est vraiment casse couille
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
Ce n’est pas possible
@sinful flicker Si je viens de le faire merci quand même.
Ah ouais ? Ça doit pas être très vieux alors ahah
C'est un comportement de l'API qui étais de base pas prévu d'être utilisé par les users mais uniquement par Discord, et du coup sur mobile l'affichage est différent car pas possible de tout afficher avec les tailles d'écran
I seeee , c’est stylé en vrai
Yep mais il y a une solutions 😉
Manque plus que des checkbox dans les formulaires
Dans la v15 il vont taff dessus.
V15 c'est DiscordJS, rien a voir avec l'API de Discord
Discord est en V10 actuellement
Et ce que tu dis n'as rien avoir avec l'api de discord.

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.
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 
Rien d'annoncé il me semble pour l'instant
hmm okay 🤔
merci
pk malheur ?
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
😂
exact, y aura pleins de choses à refaire et ça sera chiant 😭 et puis pour le moment après y a toujours pas de grosses modifications de l'API de discord ni de nouveautés exceptionelles
oui, comme chaque maj. Le début est pas intéressant car ça sera juste des lignes + opti mais rien de plus pour le début
où tu vois là v15 ?
?
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.
ah my bad, de la manière dont tu le disais on croyait que la v15 était déjà sortie au moins en bêta
Donc je voyais pas trop pourquoi tu parlais de la v15 maintenant, mais sinon oui je suis d'accord avec toi si y'a pas de réelles fonctionnalités utiles c'est useless de tout réadapter
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
haha oui je comprends, après perso lorsque je devais passer de la v13 à la v14 y'avait tellement de trucs à faire que je me suis dit autant bien moduler mon code afin de faire en sorte de changer que quelques lignes pour tout réadapter les nouvelles structures des nouvelles versions plutôt que changer dans chaque fichier
Franchement, big flemme 😹. Des fois, refaire toute la commande permet d'aller plus vite que adapter (erreur, indefined id, db bug, ...)
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
tu me dira quoi quand elle sortira. Je pense que tu vas vite abandonner 😹
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
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)
tu as reglé ton souci ?
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
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
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
"l'ego" i think
j'en connait un avec un index.js de 2050 ligne mouhaha
il a leave lui?
prsk sah
force
a
lui
Je sait pas il va sûrement venir demander de l’aide
Mais force je scale pas 2000+ ligne de code
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
je relance juste si jamais quelqu'un a une idée ?
avec l'erreur, un screen de la commande serait vraiment pas de refus
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);
});
tu peux essayer sa https://stackoverflow.com/questions/2995054/access-denied-for-user-rootlocalhost-using-passwordno
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
c'est dans le sandbox
j'ai isoler le bug dans le sandbox tout est bon
je comprend pas vraiment ce qui est dit dans le sandbox
non non je répondais à cute.linux, toi tu peux résoudre ton bug avec le SO @steep gulch
Ah okay
comme dit dans le SO j'ai reset le password mais ça me met ça comme erreur maintenant
Error: Access denied for user 'root'@'localhost' (using password: YES)
ta reset comment le mdp ?
je croit je me suis mal démerder
@keen onyx t’as résolu ton problème de render 2 fois ?
non
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'));
déja fait dans le codesandobx
je test de voir si sa s'enleve en production mais sa m'étonnerai
Essaye
Je comprend rien au instruction je suis désolé ^^'
Je t’explique mieux, mais en gros ton bouton appel automatiquement la fonction au premier appel puis le stage ce reset
ouai j'ai l'impression que c un truc comme sa, mais pourquoi c au premier click seulement ?
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
déjà fait mais sa donne pas plus d'info, et surtout en enlevant le useEffect le bug ne se reproduit plus, et aussi enfaite la fonction du bouton je pense pas qu'elle soit appeler on mount au final
sa se produit quand meme en production, rien avoir avec le strictmode ou le mode de build
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
Et il ressemble à quoi ton useEffect ? T’as un array de dépendances ?
mais ya le sandbox 😭 #javascript-typescript message
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) 
➜ [Voir le message original](#javascript-typescript message)
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...
Salut, j'ai mis l'extension Réact sur Électron mais rien qui s'affiche dans l'inspecteur
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
Et l'import
REACT_DEVELOPER_TOOLS,
} from "electron-devtools-installer";```
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 ?
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é.
parfait merci !
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
Jes pas compris ton problème ducoup je ves aussi esye de faire un Minecraft on 2D pour voir ton problème
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
Tu peux m'envoyer le script
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)
Par hasard serais-tu disponible ?
Yop, js ou ts ?
Je rentre du taff ce soir vers 18h si tu 'a pas eu de réponse depuis je pourrais aider si tu veux
Oui
vocal compris ?
Non flemme
J'avais envoyé le fichier si tu la pas vu le voici
Ah oe j'avais oublié
j'ai trouver la solution il me manquer un \ mais je te remercie mon chef
Dcp ?
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
]
});```
Mauvais nouvelle jes uh la flemme
Ah (même avec ton pseudo dans les crédits ta la flm ?)
Ça sera plus rapide de poser directement la question ici
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)
On a créé des projet, donne toi des défis à réaliser et fait tout pour y arriver sans gpt 😉
je vais jamais bien loin sans aide
et c'est pour ca que je finis toujours par abandonner et scroller sur YouTube
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)
https://fr.javascript.info/
https://www.ionos.fr/digitalguide/serveur/know-how/creer-un-bot-discord/
en réalité j'ai plein de chose a faire et je galère, je trouve qu'i lest plus simple de me montrer une fois mais bon merci quand même
J'ai plus précisément 2 chose a faire
Ca marche je suis dispo vocal quand tu veux si jamais tu a besoin d'aide pour quoi que ce sois
@dire oriolec'est bon j'ai fini tu es disponible ?
Yep
Oe
Bon bah je vais demander a quelqu'un d'autre alors
Jes la flemme
Pas grave
Tu sais que tu as des vidéos qui te montre comment faire ?
bah l'aide va rien changer :/
vas en vocal ya possiblement quelqu'un qui viendras te tenir compagnie 😉
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 😉)
Merci du conseil !
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.
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.');
}
});```
t'as pas ça ?
console.error('ROLE_WHITELISTS non défini ou incomplet');
@lean jasper
non mais dans ta console du coup mdr t'as pas le mess ? 😂
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" });
}
});
Enlève .json() de ta réponse et fait un console.log
je reçcois ça : ncaught (in promise) TypeError: response is not a function
J'ai rien dis
je reçois un résultat
la réponse est énorme
je fais quoi avec ?
@floral bolt
console.log(response.data)
et normalement dans ton log tu auras user:{..}
fetch("/session").then((response) => console.log(response.data));
erreur :
undifined
il trouve pas
@floral bolt
Fait un console.log(response)
ça me donne ça
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
ya quoi apres ?
.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);
});
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
C’est que ton json ne renvois rien :/
c'est bizard
parce que ma session du coté backend s'affiche correctement c'est qu'elle est par vide
Log req user côté back ?
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
Session {
cookie: { path: '/', _expires: null, originalMaxAge: null, httpOnly: true },
user: {
steamid64: '765611995...',
avatarfull: 'https://avatars.steamstatic.com/d153762ceb84964b2290d9a65f9b92d1edd6257e_full.jpg',
personaname: 'Personal Character',
profileurl: 'https://steamcommunity.com/profiles/7656119957.../',
userip: '92.18...'
}
}
ok alors renvois jsute req.session et retest
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" });
}
});```
ok, il ne retrouve pas l'user du coup
c'est bizard je ne comprend pas pourquoi tu as une idée du problème ?
je pense que ton token n'est pas valide
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.");
}
});
ouais masi client vers serveur ?
c'est a dire ?
Bah tu es sensé avoir un token quand tu te connecte ?
comment tu fais pour savoir qui est ton utilisateur ?
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
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
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
Toujours d'actualité
Hello, quelqu'un saurait pourquoi j ai cette erreur avec next-auth ?
mon code
Hastebin is a free web-based pastebin service for storing and sharing text and code snippets with anyone. Get started now.
mon erreur
https://hastebin.com/share/erezubiloy.bash
Hastebin is a free web-based pastebin service for storing and sharing text and code snippets with anyone. Get started now.
probleme réglé maintenant j ai des erreurs 405
possibilité de voir ton code corrigé et l'url sur la quelle tu as la 405 ?
si cest toujours à jour, tu n'as juste pas défini "roles"
t’as un call http avec un post défini en get ou l’inverse
ou qu’importe la méthode
import { handlers } from "@/lib/auth/";
export { handlers as GET, handlers as POST }
Hastebin is a free web-based pastebin service for storing and sharing text and code snippets with anyone. Get started now.
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 ?
Avoir l’erreur nous aiderais déjà un peu
bien sur att 2 secondes
Yes
Chuis pas pro mais ça existe @latestnpx ?
ha ok je mets quoi a la place ?
Juste latest
meme erreur
Tu peux quand mm renvoyer pls?
oe
Enft dis si ça te dérange le ping
create-new-app@latest
Ok
…
npx create-new-app@latest
Ah non erreur de ma part
create-next-app
Fin dcp
npx create-next-app@latest
Envoie ce que t’as écrit (screen pls)
Screen ou juste un npm n’est pas reconnu?
pas reconnu
Hésite pas à ping
Réinstalle node js
Essaye de kill ton terminal
comment ?
Et si ça marche pas redémarrer ton pc
ok j'essaye merci
Pls ping (js c’est rare quand on demande ça)
Hmmmmm t’as tout redémarré ?
Dcp npm pas reconnu?
What is the error?
Ok ping quand tu reviens
Pndt l’installation de node js assure toi de cocher installer dans le path
