#javascript-typescript
1 messages · Page 29 of 1
nop, car login n'existe pas , j'ai volontairement mis une variable fausse pour que mon fallback s'active
salut , récemment je me suis remis à react et j'ai (re)appris les bases
Est ce que quelqu'un connait des vidéos ou un site pour commencer à approfondir vers des trucs un peu plus tricky ?
Tu as la formation de Grafikart qui est vraiment pas mal.
https://youtube.com/playlist?list=PLjwdMgw5TTLUEOKPg5Z5TgwAOeWkjGL69&si=77DqbKAyhLNjWWPU
Concernant les trucs tricky ça n'existe pas des formations ou des articles sur ce genre de choses vu que c'est du cas par cas et que ça concernera des problèmes de niche.
Bonjour, j'ai eu une petite discussion au sujet des sockets qui m'a laissé perplexe. Pour moi un socket est une manière d'avoir une communication bilatérale de client à serveur ou dans l'autre sens sur lequel repose la problèmatique des sockets, la communication de serveur à client.
Je souhaite développer un système de lobby pour des parties multijoueurs, compatible avec un système de multi-machine. Pour cela je pensais créer des threads avec plusieurs sockets où les utilisateurs se connectent sur la socket qui contrôle la partie, plus simplement le serveur de la partie. On m'a répondu qu'il fallait créer une socket par client ce que je n'ai pas du tout compris.
Pouvez-vous m'en apprendre plus sur les dispotifs déjà existant dans des cas similaires ? Dernière question, si jamais il faut créer plusieurs sockets server, comment déterminé le port sur lequel l'utilisateur doit se connecter et comment sécurisé la transmission des données ?
tu peux toute a fait n'avoir qu'un seul socket d'ailleur c'est mieux d'en n'avoir qu'un. ce qu'il faut faire c'est gerer m'annuelement les connextions au server c'est au moment de la connection que le client vas envoyer dans quel lobby il veux ce connecter (le handshake) apres il faut que tu crée un object map pour chaque lobby le mieux dans ce cas c'est de faire une class qui gere l'object map est dans chaque map de lobby tu mes le socket du client (n'oublie pas d'utiliser des id pour les clients)
apres ça vas etre compliquer d'expliquer comment metre tout ça en route
c'est pas le handshake mais l'upgrade my bad
bien en fait j'ai pas mal d'idée, le site gère la base de donnée et enregistre le lobby avec un token (uuid de la partie). Ensuite il communique avec un serveur sur le quel il souhaite "instancier" une partie en lui fournissant toutes les données relatives à sa configuration (mode de jeu ect...) et ensuite les joueurs concernées reçoivent toutes les infos pour se connecteur au serveur de la partie.
Bien sûr plus facile à dire qu'à faire
mais après je n'ai pas assez de connaissance pour déterminer si ce fonctionnement est opti
tu peu voc ? comme ça je t'explique un peu mieux
Bonjour j'ai soucis de callback sur mon front avec Vue3. J'utilise socket.io pour communiquer avec le serveur de la partie. Au niveau de l'émission de clien à serveur tout se passe bien mais c'est lorsque je veux emettre un évenement au client ou faire un callback rien n'est executé.
// dans mon composant Vue client
socket.emit("create lobby", "test", "checkers", "public", (response: string): void => {
console.error(response);
gameTray = new TrayGame(
"checkers-test",
"waiting",
"",
new CheckersClient(scene, camera, controls)
);
gameTray.setup();
});
// côté serveur:
// configuration
this.io = new Server({
cors: {
origin: "*", // on verra plus tard ça ^^
methods: ["GET","HEAD","PUT","PATCH","POST","DELETE"],
credentials: true,
optionsSuccessStatus: 204
}
});
//... plus loin
socket.on("create lobby", (uuid: string, game: string, visibility: "public" | "private", callback: any) => {
let answer: string = "failed";
if (this.lobbies.size < this.capacity) {
if ((visibility === "public" || visibility === "private") && this.games.includes(game) && uuid) {
this.lobbies.set(uuid, new PTLobby(uuid, game, visibility));
answer = "success";
console.log(this.lobbies.get(uuid));
// tout ça aussi est bien executé
}
}
callback(answer); // executé mais pas reçu
});
Je vous avoue je ne comprends pas le soucis si je pouvais avoir un peu d'aide ^^. Question quand il y a un callback de la part du serveur... est-ce qu'il passe par le middleware suivant ?
private middleware(socket: any, next: any): void {
const auth = socket.handshake.auth;
if (auth) {
if (this.isServerAuthentificationValid(auth)) {
socket.data.authType = "server";
next();
} else {
console.log("invalid");
}
}
next(new Error("not authorized"));
}
il est def avec this.io.use ce n'est pas le middleware du socket
passe voc je vais t'aider
vers 14h je serais dispo
ça marche tu me ping quand t'es dispo
ça marche
Holà, je me demandais si il existait un outil qui lit un script.js et qui est capable de dire quelle fonction n'est pas utilisé dans le projet ? J'ai récupéré du code légacy et je veux faire le ménage dedans 😄
Bonjour des ide permettent au survol de fonction de voir le nombre de référence et d'utilisation, sinon tu a la fonction ctrl+shift+f de vscode (et autre ide) permettant de chercher quelque chose dans l'ensemble de ton projet, hormis ceci je ne connais pas d'outil capable de détecter le code mort, peut être des extensions
tu peux via ESLint par exemple, meme avec typescript tu peux facilement detecter les unused codes
mais c'est un peu de config
Pour le coup, eslint, c'est hyper simple à mettre en place 👀
Hey, j'ai un problème avec tailwind. Tout est bien configuré mais j'ai l'impression que mes classes ne s'appliquent pas
Mon page.tsx :
export default function Home() {
return <main className="bg-green-500 border-2">cc</main>;
}
mon tailwind.config.ts :
import type { Config } from "tailwindcss";
const config: Config = {
content: [
"./pages/**/*.{js,ts,jsx,tsx,mdx}",
"./components/**/*.{js,ts,jsx,tsx,mdx}",
"./app/**/*.{js,ts,jsx,tsx,mdx}",
],
theme: {
extend: {
backgroundImage: {
"gradient-radial": "radial-gradient(var(--tw-gradient-stops))",
"gradient-conic":
"conic-gradient(from 180deg at 50% 50%, var(--tw-gradient-stops))",
},
},
},
plugins: [],
};
export default config;
tu as bien import ton fichier css dans ton main ou app js ?
avec ca dedans
@tailwind base;
@tailwind components;
@tailwind utilities;
oui mais je crois que j'ai trouvé
je vérfie et je te dit
ok c'est bon
enfaite quand j'ai fait le tri avec les fichiers "inutiles" j'ai delete par inadvertance le import 'global.css'
et dcp non je n'avait pas bien import
Hello, petite question sur un morceau de code pour un bot discord qui me prend la tête..
J'ai deux membres ayant bel et bien un nickname sur mon serveur, pourtant le bot renvoie null quand je lui demande d'afficher <GuildMember>.nickname
A prendre en compte que pour l'un ça marche, l'autre non, et quand je rename le 2e "à la main", ça fonctionne ..
Est-ce que quelqu'un aurait une idée de pourquoi ?
( Je suis en V13 )
Avec le code, c'est mieux 🤔
De fait, le code n’y changera pas grand chose, puisque ce sera simplement l’accès au nickname à partir de l’id d’un guildmember
Ba justement, tu as peut être fait quelques choses dans la code qui ne faut pas 🤷♀️
bon…
interaction.guild.members.cache.get(id1).nickname // Renvoie la valeur escomptée
interaction.guild.members.cache.get(id2).nickname // Renvoie la valeur null
si tu y tiens tant
avec id1 et id2 les IDs respectifs de deux membres
les deux ayant bien un nickname set sur le serveur discord
Par ailleurs, le bot est administrateur et a tous les intents
j'aurai tendance a dire un soucis de cache du coup
Surement que celui dont tu recois pas le nickname est en partial
Evite de passer par le .cache, passe tjs par un .fetch et en interne ca va gérer automatiquement le cache
qu’est ce qui lui prend à lui
c'est moi qui essaie de comprendre
je ferai ça demain je suis exténué là, merci bien !
u = await guild.members.fetch('296325018923827202')
console.log(u.nickname)```
Avec quelque chose de ce gabarit, ce serait supposé fonctionner ?
Si tu as bien une variable guild avant alors oui
je l'ai bien oui, pour autant je me retrouve toujours avec le même problème :/
Essayer de rajouter ça après l’id : , { force: true }
🤔
u = await guild.members.fetch({user :'296325018923827202', force: true})
console.log(u.nickname) // Renvoie null
De quoi casser son crâne de bon matin haha
Et si tu console log juste ta variable u ? Ta quoi ?
Quelque chose de la classe GuildMember
Envoie un screen de la console
t'es sur que le membre a modifié son nom d'utilisateurs sur le serveur?
parce que si c'est pas le cas, nickname c'est bien null
oui oui, ça c'est sûr 😉
@near saddle juste au cas où maintenant tu as 2 type de nickname, le global_name et le nickname
mon username c’est enzostvs, global_name enzo et nickname null
peut être regarde à ce niveau
alors c’est peut être global_name que je cherche :’)
Mais ce qui me paraît étonnant c’est que pour certains ce soit null et pour d’autres non
Dans ce cas il faudrait que je regarde si le nickname != null, auquel cas j’utilise nickname, et sinon global_name ?
je sais pas ce que tu veux faire mais oui sûrement du coup
l’attribut globalName il est récupérable en V13 ? ou il faut que j’ update en V14?
Et pour te répondre, je cherche simplement à récupérer le nom affiché actuellement dans le serveur ou est mon bot, que j’avais l’habitude d’obtenir avec displayName
mais peut être qu’avec le nouveau système des username etc ça a modifié ça
je sais pas sorry je suis pas du tout les maj discord js
bah c'est tjs displayName du coup il me semble 🤔
Jpensais t'avais un user avec un nickname et t'arrivais pas à le voir via le bot ?
Il me semble que displayName prend le global name en priorité, et s'il n'existe pas ça prend le username
J'ai eu le problème, il me semble que si tu ne met pas de global name ça prend ton username et le global name est null du coup
displayName c'est pour avoir le nom affiché (logique) donc d'abord il check si il a un nickname (donc un pseudo uniquement sur le serveur) puis si y a pas il prend le displayName de l'user
Mais j'ai déjà eu un problème avec le displayName, donc en vrai le plus simple c'est de faire un user.global_name ?? user.username
Ah my bad il veut le nickname
J'ai pas lu la conv 🤡
Sur un User
Et sur un GuildMember
Donc t'as raison
comme souvent
bah oui 

Après la c'est même pas ca son problème en réalité
askip il a un membre qui a mit un nickname mais il arrive pas à le récup via le bot
Il lui manquerait peut être un intent / partial ?
Le fameux intent manquant qu’on a oublié et qui resoud tout les problèmes
hello désolé, pas de notif de la journée x)
Par défaut j’avais aucun partial, mais je les ai tous mis hier soir pour essayer, ça n’a tout de même pas fonctionné :/
a moins que je sois vraiment pas à jour sur les différences entre nickname et username xD
et concernant les intents, je crois que le client est construit avec 3276799 comme valeur
const client = new Discord.Client({ intents: 3276799, partials: ["CHANNEL","GUILD_MEMBER", "GUILD_SCHEDULED_EVENT", "MESSAGE", "REACTION", "USER"] });
quelque chose de ce tonneau là
Si tu veux vérif, tu peux cliquer sur son profil et afficher les serveurs en commun, si tu vois un pseudo sous le nom du serveur c'est qu'il a un nickname
Je t'ai rename 30sec pour faire le screen d'exemple
Jcrois y a personne qui s'amuse a retenir une valeur comme ca mdr 
Indique les intents en clair dans ton code
Car la tu sais pas clairement voir ce que ta activer
qui pourrais m'aider à regler le blem du ping que Mad Rage a fait
si tu veux de l'aide, il va falloir développer ^^
Tu peux venir pv
non postes ici, au moins si je ne suis pas apte à t'aider qqun d'autre le fera
Ah dacc az bah je t’envoie le/les codes dans 5min
d'acc, n'hésites pas à me ping
Eternity later
du coup j'ai mis ça dans le main.js
const { Client, IntentsBitField, Collection } = require("discord.js");
const client = new Client({intents: new IntentsBitField(3243773)});
const loadCommands = require("./loaders/loadCommands");
const dotenv = require("dotenv");
dotenv.config();
client.commands = new Collection();
loadCommands(client);
client.on("messageCreate", message => {
const prefix = "!"
if(!message.content.startsWith(prefix)) return;
const arrayMessage = message.content.split(" ");
const name = arrayMessage[0].slice(prefix.lenght, message.content.split(" ")[0].lenght);
const command = client.commands.get(name);
command.run(client, message);
});
client.login(process.env.TOKEN);```
ça dans le loadCommands.js
const { readdirSync } = require("fs");
module.exports = client => {
let count = 0;
const dirsCommands = readdirSync("./commands/");
for(const dirs of dirsCommands) {
const filesDirs = readdirSync(`./commands/${dirs}/`);
for(const files of filesDirs) {
const command = require(`../commands/${dirs}/${files}`);
client.commands.set(command.name, command);
count++;
};
};
console.log(`[Commands] => ${count} logged commands`);
}```
et ça dans le ping.js
module.exports = {
name: "ping",
description: "ping du bot",
async run(client, message) {
message.reply("Pong !")
}
};```
sauf que le ping ne fonctionne pas
c'est à dire ?
tu as un console log, count logged commands
ok et ton !ping renvoie rien du tout ?
nan rien du tout
on a encore le droit au commande avec préfixe ?
jsp
montre la vidéo de mad rage pls
et ajoute dans ton ping js un console.log
savoir si il éxécute la commande ou rien
👉 Yo les potes, je vous fais un petit tuto de comment coder un bot Discord avec discord.js v14 ! Dans cette vidéo, on va commencer par les prérequis pour coder le robot et apprendre à le démarrer ! N'hésite pas à t'abonner, activer la cloche, liker et rejoindre mes réseaux (merci) !
👉 Discord développeur : https://discord.com/developers/docs/in...
👉 Yo les potes, je vous fais un petit tuto de comment coder un bot Discord avec discord.js v14 ! Dans cette vidéo, on va créer l'handler des commandes afin de charger toutes les commandes de notre robot ! N'hésite pas à t'abonner, activer la cloche, liker et rejoindre mes réseaux (merci) !
👉 Discord développeur : https://discord.com/developers/...
@buoyant compass
Yes
bon ben tu vas me faire recréer un bot discord
jpensais pas refaire sa un jour
jv regarder attends un pey
pas de soucie merci !
j'ui désolé faut j'aille manger j'ai pas plus e temps a passé dessus
pas de soucie
quelqu'un pourrait m'aider à crée un bot en js ?
sa marche ?
wtf
faut le replace par quoi ?
ok ya pas que ça
c'est ce que je pensais aussi
const name = arrayMessage[0].slice(prefix.length, message.content.split(" ")[0].length);
ligne 15 de ton main const name
ok c'est la ligne le pb
jsp ou t'as trouvé sa
sur la vidéo quand il explique sauf qu'il change de ligne toute les 2s
je tente un truc
az redis moi
jsp si c'est ça dans la vidéo dsl
nan tkt pas de prblm
const { Client, IntentsBitField, Collection } = require("discord.js");
const client = new Client({intents: new IntentsBitField(3243773)});
const loadCommands = require("./loaders/loadCommands.js");
client.commands = new Collection();
loadCommands(client);
client.on("messageCreate", message => {
const prefix = "!"
if(!message.content.startsWith(prefix)) return;
const name = message.content.split(" ")[0].replace(prefix, "");
console.log(name);
const command = client.commands.get(name);
command.run(client, message);
});
pas loin de ça
ta fix ? ou bientôt ?
Jai arrt mmon pc pour ajd mais mon log de name ne se fait pas donc c pas loin
A moins que jai foiré mon log qu'il fallait le mettre plus bas
pas de soucie on verra demain bg
yes
Ok copies sa alors
const { Client, IntentsBitField, Collection } = require("discord.js");
const client = new Client({intents: new IntentsBitField(3243773)});
const loadCommands = require("./loaders/loadCommands.js");
client.commands = new Collection();
loadCommands(client);
client.on("messageCreate", message => {
const prefix = "!"
if(!message.content.startsWith(prefix)) return;
const name = message.content.split(" ")[0].replace(prefix, "");
const command = client.commands.get(name);
console.log(name)
command.run(client, message);
});
⚠️ ajoutes ton dotenv et ton client.login (c est le.main js)
Et fait !ping
Tu mdis ta console
yes
Ya moyen c le messagecreate
sa clc
tu fais quoi comme requete précisément
normalement tout y est activé ( de memoire ) mais c’est vrai qu’en clair ce serait mieux x)
Et je pense pas que ça soit une bonne idée de laisser trainer ton token
c pas le mien blc
Quelqu'un s'y connait avec Adonis, on travail en projet et nous avons décidé de partir sur Adonis qui est très réputé. Ce n'est pas ma partie mais est-ce que quelqu'un serait disponible pour organiser un call pour me montrer comment setup le projet correctement s'il vous plait. On souhaite utiliser une db MySQL mais impossible de faire marcher la moindre migration. Je n'ai rien installé sur ma machine pour ce qui est de la DB.
si non des ressources ça me va
car sur la doc d'Adonis je n'ai rien qui fait référence à une doc pour installer la db mysql
Tu as une commandes à rentrer, elle est écrit sur la six
Doc *
« Ace migration:run »
la migration mets pleins d'erreurs
je lui dit de le faire mais ça fait plusieurs qu'il le fait et la db est bien en route
Tu as bien la configuration a ta db ?
bas c pas chez moi que ça se passe mais oui la configuration est bien faite, le port est le bon (celui par défaut 3306), le user et le mdp c'est l'utilisateur root classic
et la db est bien présente quand on regarde avec phpmyadmin
j'ai la confirmation que ces commandes ont bien été executés mais pour le coup le problème vient plus tôt de la lib MySQL
qui visiblement n'arrive pas à faire la connection
Si tu l’as déjà fait il n’a pas besoin de le refaire si vous été sur la même base
Si la connection ce fait pas c'est vous le problème je pense x)
ok bien maintenant pourquoi la table users ne se crée pas...
MySQL en général si un truc ce fait pas, faut relire xD
le dockers
Si jamais email ne peut pas être en primary ça doit être « id »
bas ça ne devrait rien changé
tu peux le faire
Ouais mais faut quand même les bonnes pratiques 😉 après pour ton problème je ne sais pas, je vais regarder ailleurs 🙂
c'est possible avec du mysql
« Bonne pratiques »
on voulait pas avoir des soucis d'indexations mdr
avec des sauts d'd
id*
je vois pourquoi oui
Essaye de te connecter via un client mysql genre heidisql
on va changé mais même sans ça même avec le make: users de base ça ne marchait pas
je ne connais pas
Bah télécharge le et essaye, si ça ne marche pas c’est que ton mysql n’est pas accessible et si ça marche c’est qu’il y a un problème de configuration sur ton app adonis
ok ça permet de setup la db
Ouais c’est un phpmyadmin beaucoup plus beau
le pb c pas la db
ducoup là je resetup Adonis
j'ai ai profité pour prendre l'authentification avec token
Salut j'ai un probleme avec mon bot discord une personne pourrais t'elle m'aider ?
PS C:\Users\joris\WebstormProjects\PlayTrays-back> node ace migration:run
[ info ] Upgrading migrations version from "1" to "2"
❯ migrated database/migrations/1711721598870_create_users_table
❯ error database/migrations/1711721598878_create_access_tokens_table
[ error ] create table `auth_access_tokens` (`id` int unsigned not null auto_increment primary key, `tokenable_id` int unsigned not null, `type` varchar(255) not null, `name` varchar(255) null, `hash` varchar(255) not null, `abilities` text not null, `created_at` timestamp, `updated_at` timestamp, `last_used_at` timestamp null, `expires_at` timestamp null) - Invalid default value for 'updated_at'
at Packet.asError (C:\Users\joris\WebstormProjects\PlayTrays-back\node_modules\mysql2\lib\packets\packet.js:728:17)
at Query.execute (C:\Users\joris\WebstormProjects\PlayTrays-back\node_modules\mysql2\lib\commands\command.js:29:26)
at Connection.handlePacket (C:\Users\joris\WebstormProjects\PlayTrays-back\node_modules\mysql2\lib\connection.js:481:34)
at PacketParser.onPacket (C:\Users\joris\WebstormProjects\PlayTrays-back\node_modules\mysql2\lib\connection.js:97:12)
at PacketParser.executeStart (C:\Users\joris\WebstormProjects\PlayTrays-back\node_modules\mysql2\lib\packet_parser.js:75:16)
at Socket.<anonymous> (C:\Users\joris\WebstormProjects\PlayTrays-back\node_modules\mysql2\lib\connection.js:104:25)
at Socket.emit (node:events:514:28)
at addChunk (node:internal/streams/readable:343:12)
at readableAddChunk (node:internal/streams/readable:316:9)
at Readable.push (node:internal/streams/readable:253:10)
PS C:\Users\joris\WebstormProjects\PlayTrays-back>
Voici ce que j'ai en console @noble mountain
moi ma db fonctionne proprement mais il n'arrive pas à faire la table de base
enfin celles pour les tokens
j'essaye de fixe l'erreur sql mais là ça marche
je fais comment pour set une valeur par défaut genre current time stamps
j'ai un peu de mal avec le framework je vous avoue la commu n'est pas très présente sur les forums stackoverflows

J'avais pas vu que c'étais une histoire de captcha.
@queen ocean c'est legit ?
Il étais déjà ban mais j'avais pas vu ce msg, bien vu
Ah c'est un mec qui veut faire un autocaptcha bot là ?
On l'a eu sur un autre serv aussi 🤣
Salut à tous, j'espère que vous allez bien, j'essaie de créer une application avec vuejs et laravel, après l'inscription et la connexion, je suis censé stocker les données de l'utilisateur dans le store Pinia, le problème est que lorsque j'essaie d'accéder ces données dans le tableau de bord, j'obtiens des erreurs. voici mon fichier user.js pinia :
import { defineStore } from 'pinia';
export const useUserStore = defineStore("user", () => {
const user = ref({
id : null,
name : 'johndoe',
email : 'johndoe@gmail.con',
role : 'admin',
});
const saveUser = (userData) =>{
// console.log(userData);
user.value.id = userData.id;
user.value.name = userData.name;
user.value.email = userData.email;
user.value.role = userData.role
};
const clearUser = ()=>{
user.value.id = null,
user.value.name = '',
user.value.email = ''
user.value.role = ''
};
const isAuthenticated = computed(() => user.id /= null);
return {
user, saveUser,clearUser
}
}); ``` Ici le dashboard ``` <script setup>
import { useUserStore } from '../stores/user';
// const {user} = storeToRefs(useUserStore);
// const {getUser} = useUserStore();
const store = useUserStore();
console.log(store.user.value)
const user = store.user.value
</script>
<template>
<div class="h-full w-full">
<h2 class="text-2xl text-red-500 font-bold">Here is the dashboard of aics Planning app</h2>
<h2 class="text-2xl text-red-500 font-bold">So welcome brother</h2>
Hello dear {{ user.email }} --------- {{ user.name }}
</div>
</template>``` .
ici que j'ai i get those errors : `` [Vue warn]: Unhandled error during execution of scheduler flush. This is likely a Vue internals bug. Please open an issue at https://github.com/vuejs/core . at <Dashboard onVnodeUnmounted=fn<onVnodeUnmounted> ref=Ref< null > > at <RouterView> at <App> warn$1 @ chunk-LD2SDDMZ.js?v=8b6c8942:1740 logError @ chunk-LD2SDDMZ.js?v=8b6c8942:1944 handleError @ chunk-LD2SDDMZ.js?v=8b6c8942:1936 callWithErrorHandling @ chunk-LD2SDDMZ.js?v=8b6c8942:1889 flushJobs @ chunk-LD2SDDMZ.js?v=8b6c8942:2093 Promise.then (async) queueFlush @ chunk-LD2SDDMZ.js?v=8b6c8942:2002 queueJob @ chunk-LD2SDDMZ.js?v=8b6c8942:1996 reload @ chunk-LD2SDDMZ.js?v=8b6c8942:2203 (anonymous) @ chunk-LD2SDDMZ.js?v=8b6c8942:2233 (anonymous) @ Dashboard.vue?t=1711791121513:51 (anonymous) @ hmr.ts:77 (anonymous) @ hmr.ts:311 (anonymous) @ hmr.ts:277 queueUpdate @ hmr.ts:277 await in queueUpdate (async) (anonymous) @ client.ts:199 handleMessage @ client.ts:197 (anonymous) @ client.ts:91 Show 16 more frames Show less pinia.js?v=8b6c8942:1354 Uncaught (in promise) Error: [🍍]: "getActivePinia()" was called but there was no active Pinia. Are you trying to use a store before calling "app.use(pinia)"? See https://pinia.vuejs.org/core-concepts/outside-component-usage.html for help. This will fail in production. at useStore (pinia.js?v=8b6c8942:1354:13) at setup (Dashboard.vue:8:19) at callWithErrorHandling (chunk-LD2SDDMZ.js?v=8b6c8942:1887:19) at setupStatefulComponent (chunk-LD2SDDMZ.js?v=8b6c8942:9287:25) at setupComponent (chunk-LD2SDDMZ.js?v=8b6c8942:9248:36) at mountComponent (chunk-LD2SDDMZ.js?v=8b6c8942:7579:7) at processComponent (chunk-LD2SDDMZ.js?v=8b6c8942:7545:9) at patch (chunk-LD2SDDMZ.js?v=8b6c8942:7011:11) at ReactiveEffect.componentUpdateFn [as fn] (chunk-LD2SDDMZ.js?v=8b6c8942:7769:9) at ReactiveEffect.run (chunk-LD2SDDMZ.js?v=8b6c8942:657:19)
Je n'est jamais fait de vue donc je ne sais pas trop mais il est claire que tu appel getActivePinia() avant d'avoir activer Pinia d'apres le msg d'erreur. Vérifie que tu suis bien le doc https://pinia.vuejs.org/core-concepts/outside-component-usage.html
c'est le code de la doc que j'utilises, y a pas de getActivePinia() . je sais vraiment plus quoi faire
alors je dirais que tu accéder au store avant de l'avoir activer
Update :
La V13 ne reçoit pas les globalName, donc il fallait passer en V14
Hello
Fais voir ton main.js ou main.ts
here
createPinia après createApp
const app = createApp(App)
app.use(createPinia())
app.mount('#app')
comme ceci
Merci beaucoup , ça passe nickel, apres un jour de boulot et deux petits changements a la fin !!! 😅 😅 😅
en plus de ça, j'ai declaré le store dans le dashboard comme une variable computed ...
Bien joué haha
merci encore pour ton aide. C'est en fait la premiere fois que j'utilises vuejs avec laravel. c'pour un devoir de classe. je dois concevoir une app de generation d'emplois de temps
Pas de soucis ! Si t'as des questions en Vue n'hésite pas, j'suis en plein dedans là sur une mission freelance x)
ok, merci bien !!
petite question, ce stockage est cense rester tant que le user est connnecté non ?
le store ?
hey, je suis en train d'essayer de faire une api pour mon site sauf que cette derniere est en http et du coup google refuse de fetch. Comment est ce que je peut faire pour la passer en https?
Utilise ta propre api pour faire une requête à la place de l'utilisateur
C'est pas normal, c'est quelle API que t'utilise ?
express
Hein
ba j'ai fait mon api avec express
Ah ok je vois
Bon alors dans ce cas pour tes tests en local tu vas pouvoir l'utiliser 😄
Montre ton erreur même si je pense la connaître
oui en local je peut l'utiliser
mais des que je deploy l'app (avec vercel) sa ne fonctionne plus
Tu viens de me dire que t'avais utilisé pm2 👀
euuu oui
J'ai jamais utilise plesk je t'avoue je vais pas pouvoir t'aider là dessus
pour mon app express
En tout cas trouve un moyen de mettre un certificat sinon tu pourras pas faire de requêtes en http
enft j'utilise plesk actuellement mais je vais utiliser autre chose plus tard car je suis en train de refaire mon portfolio
ok merci
Salut tout le monde !
Comment je peut faire pour répondre à un button ?
en discord.js
genre je voudrais que quand je clique sur le button avec l'id un-id-au-hasard ça renvoie :
"bouton cliqué" dans la console
et je l'avoue, je sais pas du tout comment faire 😉
bah tu console log ton interaction ?
Ada Tech School te propose d'explorer le thème de l'Intelligence Artificielle.
Xuan-Vi, développeuse et encadrante chez Ada Tech School, sera notre invitée spéciale lors de notre Webinar "L'Intelligence Artificielle peut-elle être féministe ?"
Découvre l'impact de l'Intelligence Artificielle sur le développement web et l'importance d'une approche féministe pour combattre les biais sexistes.
Rendez-vous le mardi 9 avril à 18h30 sur Zoom.
Lien d'inscription juste ici : https://www.eventbrite.fr/e/billets-webinar-lintelligence-artificielle-peut-elle-etre-feministe-867344499747?aff=Discord
@queen ocean je sais pas si t'accepte ça ou non
C'est bon pour moi tqt
D'ailleurs @keen narwhal comme ca tu sais, bcp ici ont déjà vu le sujet durant l'Asynconf de 2023
Il spam son message sur tous les servs de dev je suis mort
1 msg par serv c'est pas ce que j'appel du spam mdr
nan sur l'autre c'était 4 messages d'un coup
oui vous y'en a qu'un :)
ah bah il s'est fait ban sur l'autre xD
rip
oui mais comment je peut détécter le clique du bouton ?
Avec un event https://old.discordjs.dev/#/docs/discord.js/main/class/Client?scrollTo=e-interactionCreate
Si ta jamais fait de bot go check https://discordjs.guide/
j'ai déjà fais un bot, mais les buttons, ça à l'air facile mais j'y arrive pas mdr
vzy je check ça
j'ai trouvé ça sinon:
https://discordjs.guide/message-components/interactions.html#awaiting-components
Bah ca dépend ce que tu veux faire mais ca c'est pour recevoir que une seule interaction et agir en fonction de cette interaction
Si tu veux faire un bouton qui sera potentiellement utilisé plusieurs fois alors check ce que j'ai envoyé
j'ai tenter un truc
mais chelou
if(interaction.CustomId === 'turn-slot'){
return await interaction.reply("Cliqué !");
}
j'ai fait ça (j'ai regarder le customId turn-slot existe, mais ça me fait un échec de l'interaction
je ne comprends pas
et j'ai aucune erreur dans la console
hehehe
même, je ne comprends pas
@queen ocean
sans voir le reste du code je peux pas t'aider
tu veux voir quoi en + ?
async execute(interaction) {
const turn = new ButtonBuilder()
.setCustomId('turn-slot-debug-com')
.setLabel('Tourner la roue')
.setStyle(ButtonStyle.Primary)
.setEmoji('👉');
const row = new ActionRowBuilder()
.addComponents(turn);
await interaction.reply({ content: ':white_check_mark: · Roulette chanceuse envoyée !' , ephemeral:true })
await interaction.channel.send({ content: 'test!', components: [row]})
if (interaction.customId === 'turn-slot-debug-com') {
await interaction.channel.send("Cliqué !");
}
}
@queen ocean je t'ai envoyé le code, j'ai changé un truc et je sais pas si ça peut changer quelque chose, au lieu de interaction.reply j'ai mis interaction.channel.send
Tu fais pas les choses correctement
L'envoie du bouton et l'envoie de la réponse quand on clique c'est 2 choses séparé
La ton truc execute ca viens d'ou ? C'est une commande ?
c'est une commande yes
y'a tout mes const au dessus avec le nom de la commande, sa description ect
okok du coup ta surement déjà un truc sur ton bot pour aussi gérer les events nan ?
yes, un interactionCreate.js situé dans le dossier events
bah c'est dans cette event que tu dois faire ta condition avec le customId
ah d'accord
si j'ai bien compris, dans interactionCreate.js,
je met :
if (interaction.customId === 'turn-slot-debug-com') {
await interaction.channel.send("Cliqué !");
}
dedans ?
Le meilleur moyen de savoir c'est de tester 💪
ok finalement, j'ai réussi ! merci pour ton aide
👌
c'est du gpt ?
@stark spoke
ah d'accord, alors déjà, MessageEmbed n'existe plus, c'est EmbedBuilder maintenant
mais je suis conseil de regarde ça
c'est un guide pour créer son premier bot ^^
avec un command handler
ect
Bonsoir! Est-ce normal que mon bot se lance comme prévu mais sans l'activité que je lui ai indiqué?
met ça à la place:
client.user.setActivity(`${client.guilds.cache.size} servers.`, { type: ActivityType.Watching });
c'est ça dans les nouvelles version normalement
C'était bien ça, merci beaucoup!
Aucun problème 🙂
c'est le but du serveur
Salut pk mon truc marche pas ?
const checkBlacklist = () => {
fs.readFile(blacklistFilePath, 'utf8', (err, data) => {
if (err) {
console.error(err);
return;
}
const blacklist = JSON.parse(data);
blacklist.forEach(userId => {
const user = client.users.cache.get(userId);
if (user) {
const member = user.member;
if (member) {
guild.members.ban({ reason: 'Blacklisted' })
.then(() => console.log(Banni ${user.tag} de ${member.guild.name}))
.catch(console.error);
}
}
});
});
};
ta une erreur dans ta console ?
hi everyone, hope you are doing well. I'm actually working on a full stack app. I've used vue-router to load on all the page, the sign up component when the user click on a button, then the dashboard if the sign works well. the problem is that I have a nav bar in my dashboard, with links, but when I try to load them, the linked component is load on all the page in place of the dashboard component, instead of the main tags. how to deal with that ? thank in advance.
Hello, quelqu'un aurait une solution magique pour contourner/fixer les CORS Policy pour ma requête ? Ca fait des heures que je galère à trouver une solution 😦
C’est toujours un enfer ce truc, j’ai jamais réussi à comprendre comment le contourner 😂
Le pb c’est que c’est une truc qui est à mettre sur le serveur aussi
Donc ça va être un peu compliqué…
Télécharge l’avatar sur ton serveur ou utilise un proxy malheureusement
Sinon tu as une extension sur chrome pour « by-pass »
je vais pas télécharger les avatars de chaque utilisateurs surtout qu'ils peuvent changer 😭
j'ai essayé ça fonctionne pas :/
pour les dev de bot discord :
https://chearon.github.io/dropflow/
ça vous permet de faire du html dans un canvas.
Bonjour j'ai une probleme j'aimerais faire une command qui permet d'ajouter les gents owner du bot voici mon code
const { SlashCommandBuilder } = require("discord.js");
const fs = require("fs")
const config = require('../../../config.js');
module.exports = {
structure: new SlashCommandBuilder()
.setName("addowner")
.setDescription("Ajoute owner une personne")
.addUserOption(option =>
option
.setName("user")
.setDescription("Le membre auquel ajouter owner.")
.setRequired(true)),
options: {
developers: true,
},
run: async (client, interaction, args) => {
const userToAdd = interaction.options.getUser("user");
// Ajoute l'utilisateur mentionné en tant que propriétaire
config.users.ownerId.push(userToAdd.id);
// Écrit les modifications dans le fichier config.js de manière asynchrone
fs.readFile('./config.js', 'utf8', (err, data) => {
if (err) {
console.error(err);
return;
}
const updatedConfig = data.replace(/module\.exports\s*=\s*/, '');
const newConfig = `module.exports = ${JSON.stringify(config, null, 4)};`;
fs.writeFile('./config.js', newConfig, (err) => {
if (err) {
console.error(err);
return;
}
console.log('Le fichier config.js a été mis à jour avec succès.');
interaction.reply({ content: `${userToAdd.username} a été ajouté en tant que propriétaire.`, ephemeral: true });
});
});
}
};
Mais quand j'execute ma commande mon ficher config.js ne se met pas a jour
déjà c'est du chat gpt ?
yep je savais pas comment faire
fs.readFile('./config.js', 'utf8', (err, data) => {
c'est pas la même racine que ton require déjà
const config = require('../../../config.js');
Hello. Vous me conseillez quel framework pour un backend solide en web ?
Il y en a pleins je pense que c'est en fonction de toi, si t'es plus js,python..
Personnellement j'utilise expressjs qui est assez connu donc niveau docs et tutos c'est cool ou même niveau de l'aide ; comme bcp de gens connaissent le framework c'est plus simple d'en avoir..
Par solide, qu'entends-tu ?
Mais sinon je plussoie le message d'IceTsukasa. J'ajouterais que c'est mieux d'avoir un framework qui aide à avoir de bonnes practices (même si c'est subjectif), ce qui peut par exemple être d'utiliser le pattern modèle-vue-controleur que tu peux facilement avoir sur NestJS
ExpressJS c'est bien mais par défaut tu n'auras pas d'architecture. Donc si tu ne fais pas attention, tu peux vite te retrouver avec un fichier index.js à 1500 lignes et une application back-end qui sera difficilement scalable
C'est pour ça que je pense qu'utiliser un framework comme NestJS ou AdonisJS peut être plus simple
J'utilisais jusqu'à aujourd'hui React, mais j'ai envie de changement ^^
Adonis m'a l'air cool @strong tree
Yup, je ne l'ai pas beaucoup utilisé mais ça a l'air vachement cool !
Puis il y a un des fondateurs (Romain Lanz) qui est français et qui aime bien donner de son temps pour aider 🙂
const fs = require("fs")
const path = require("path"); // Importez le module path pour gérer les chemins d'accès
const config = require('../../../config.js');
// Utilisez path.resolve pour obtenir le chemin absolu de votre fichier config.js en se basant sur le chemin relatif
const configPath = path.resolve(__dirname, '../../../config.js');
module.exports = {
structure: new SlashCommandBuilder()
.setName("addowner")
.setDescription("Ajoute owner une personne")
.addUserOption(option =>
option
.setName("user")
.setDescription("Le membre auquel ajouter owner.")
.setRequired(true)),
options: {
developers: true,
},
run: async (client, interaction, args) => {
const userToAdd = interaction.options.getUser("user");
// Ajoute l'utilisateur mentionné en tant que propriétaire
config.users.ownerId.push(userToAdd.id);
// Écrit les modifications dans le fichier config.js de manière asynchrone
fs.readFile(configPath, 'utf8', (err, data) => {
if (err) {
console.error(err);
return;
}
const updatedConfig = data.replace(/module\.exports\s*=\s*/, '');
const newConfig = `module.exports = ${JSON.stringify(config, null, 4)};`;
fs.writeFile(configPath, newConfig, (err) => {
if (err) {
console.error(err);
return;
}
console.log('Le fichier config.js a été mis à jour avec succès.');
interaction.reply({ content: `${userToAdd.username} a été ajouté en tant que propriétaire.`, ephemeral: true });
});
});
}
};```
Oh ?
Intriguant !
Bonjour, je suis en train de retaper tout un bot musique en utilisant Lavalink et j'avais les erreurs de connexions aux serveurs lavalink quand c'était pas fonctionnel mais maintenant, j'ai que ça :
[08/04/2024] [14:54:03] [NodeDestroy.js] [SRSMusic] › ✖ error Node Vrizix destroyed with code 1006 and reason
Je sais que c'est une erreur WebSocket et quelle a été fermée de manière anormale mais la je bloque sincèrement
Fin ma question est surtout, pourquoi il me ferme ma connexion websocket comme ça sans raison ?
J'ai rien dis
Trouvé
Je crois que ça parle d'AdonisJS par ici !
Mon avis sera assez biaisé, mais il est vrai qu'AdonisJS est vraiment super cool. Si tu recherches une expérience de développement solide, utilisant des outils plus ou moins équivalents à ceux de PHP, je trouve que c'est l'idéal. Il a l'avantage d'être modulaire tout en restant très puissant. Par exemple, pour le système d'authentification, qui peut être assez fastidieux à mettre en place avec NestJS, AdonisJS le simplifie au maximum tout en offrant la possibilité au développeur d'intégrer ses propres fonctionnalités s'il le souhaite.
Alors Adonis pour le coup c'est un vrai débat de mon côté si je dois donner mon avis...
Je trouve que Adonis est beaucoup trop "opinionné", c'est-à-dire, qu'il favorise trop une manière de faire et pas une autre et c'est vachement restrictif.
Ce que je trouve dommage aussi c'est que la communauté est trop petite chez Adonis pour le moment comparé à Express ou Nest donc moins d'aide ou alors une aide mais pas approfondi.
La courbe d'apprentissage aussi, si tu ne connais pas les fonctionnalités de Laravel ça va être très très raide.
Pour être honnête, je suis partiellement d'accord avec toi, mais sur certains points, j'ai des réserves. En ce qui concerne la courbe d'apprentissage, je suis d'accord que pour certaines fonctionnalités, elle peut être plus longue. Personnellement, après avoir examiné les deux frameworks, je trouve qu'AdonisJS a légèrement l'avantage. Si on prend le temps de bien lire la documentation et qu'on évite de s'enfoncer trop dans les détails techniques, il reste relativement simple à utiliser. En revanche, avec NestJS, la mise en place d'un système d'authentification peut s'avérer assez fastidieuse, surtout si l'on se perd dans les subtilités.
Super ça ! Je pense que je vais m'y mettre
ça permet l'authentification assez simplement ?
En ayant fouillé la doc, on dirait bien 😂
Sincèrement, oui
Tu as déjà fait un site avec ?
Yep x)
Show me ?
Ah publier, non, mais j'ai déjà fait des sites avec un système d'authentification et de bdd yep
Oh okay
Tu peux te débrouiller sans trop de difficulté, genre ce guilde répond plutôt bien à la question en expliquant comment faire (et de manière général la doc est bien).
Ouais j'étais dessus x)
En soit c'est pas bien compliquée, faut juste lire, il est iindiquée que la gestion de l'authentification n'altère que la requête, mais par exemple le formulaire, tu dois le rediriger par toi-même vers un endpoint d'authentification. Fin bref, entre ce système et celui de NestJS, je trouve que c'est plus simple x)
👍
Aussi, si tu souhaite des ressources complémentaires, notamment sur des sujets qui n'ont pas de lien direct avec le framework, comme les différents types d'authentification, Romain Lanz qui est un des mainteners du projets, fait de très bonne vidéo, parfois plutôt orienté AdonisJS mais parfois très généraliste et applicable partout.
Tu as aussi Adocasts, parcontre, c'est en anglais x)
dn?
edited
Yep, je te laisse faire le choix technique, après sache qu'il prend également en charge les APIs comme un bon vieux rendu côté serveur x)
Dacc :)
quelqu'un sait a quelle moment les variable en local storage se font effacer ? autre que manuelle je parle, genre si le pc redemarre ? ou si ont attends1 mois ?
Les variables ou les données ?
Et normalement ça devrait pas s'effacer sauf si l'utilisateur supprime les données du navigateur (ou change de navigateur)
Si l'utilisateur change de navigateur ou si il efface les données de navigation
Ou qu'il va bidouiller dans le devtools
Bonjour quelqu'un pour voc, j'aurai besoin d'aide sur quelque ligne de sript qui font nimp
met ton probleme ici tu auras plus de réponses
ok thx
hey, est ce que vous sauriez pourquoi mon site ne parvient pas à charger les fichier nécéssaires ? (j'utilise next et nginx)
j'ai pourtant éxécuté la commande npm run start
c'est bizard prcq qu'il y a un dossier .next qui contient les bon fichiers mais quand j'essaye de faire une requette cela me met un not found
C’est quoi ta configuration nginx ?
user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;
events {
worker_connections 768;
# multi_accept on;
}
http {
##
# Basic Settings
##
sendfile on;
tcp_nopush on;
types_hash_max_size 2048;
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Logging Settings
##
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
##
# Gzip Settings
##
gzip on;
# gzip_vary on;
# gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
##
# Virtual Host Configs
##
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-available/*;
}
Pas celle là, le fichier de configuration de ton site 😅
et celle qui gere specifiquement ce site :
server_name nocteln.fr;
access_log /opt/nextjs/logs/access.log;
error_log /opt/nextjs/logs/error.log error;
location /_next/ {
alias /home/portfolio/client/.next/;
expires 30d;
access_log on;
}
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/nocteln.fr/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/nocteln.fr/privkey.pem; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}
server {
if ($host = nocteln.fr) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name nocteln.fr;
listen 80;
return 404; # managed by Certbot
tout ce qu'il y a sur le screen?
Yep
Tu as bien reload nginx ?
sa a chargé les images
yup
mais pas le css
Tu as des erreurs dans la console de next ?
Tu as fait npm start, donc tu as bien une console
Donc pm2 ls puis pm2 logs <id> --lines 50
je croit savoir
j'ai l'impression que c'est parcequ'il n'arrive pas à trouver la clef next auth que j'ai mise
quoique
c'est bon 🥳
merci nolhan
bon maintenant il faut que je trouve comment mettre un certificat ssl sur mon api
apt install certbot python3-certbot-nginx puis certbot --nginx -d example.com
C’est la manière la plus simple et efficace que je connaisse 😂
Enft le problème c'est que mon api tourne pas sur nginx
Je l'ai faite avec express
jsp pourquoi quand j'essaye de faire la requette sa timeout
Moi aussi personnellement et ça pose aucun problème btw
comment tu as fait du coup pour ajouter un certificat?
ah ok
est ce que tu saurait pourquoi sa fait sa?
(en local sa fonctionne)
J’avais eu le même problème, et c’est que express écoute par défaut sur l’IPv6 de ta machine. Il faut que tu remplace
app.listen(3001, () => {/* … */})
par
app.listen({ port: 3001, host: "0.0.0.0" }, () => { /* … */ })
En local, tu utilise http://localhost et localhost = ipv6

Ah
Documentation suggestion for @foggy ledge:
:interface: InteractionReplyOptions
Options for a reply to a BaseInteraction.
Option ephemeral
Ah ok c'est sa qu'il voulait
Pour Noctin, sur ta machine quand tu fais curl http://0.0.0.0:PORT, tu as une erreur ?
curl: (7) Failed to connect to 0.0.0.0 port 5050 after 0 ms: Connection refused
Ok, et tu as une erreur dans les logs de ton API ?
Parce que j’ai la même configuration express (sauf que j’utilise typescript) et nginx, mais j’ai pas de pb
Ok pg je vais regarder sa de mon côté merci pour l'aide
Yup
J'ai trouvé l'erreur en modifiant sans faire exprès j'avais rajouté une lettre || c pas pratique sur tel||
Mais dcp sa marche pas plus
Ah :/
Une nouvelle erreur ?
Et que dit netstat -tulpn | grep 5050 ?
Dans mon cas j’ai ça :
tcp 0 0 0.0.0.0:3001 0.0.0.0:* LISTEN 491/node
Nope
Sa a l'air bon
Si jamais t'essaye de faire une requête depuis ton pc sa fonctionne ?
https://nocteln.fr:5050
Ou http://nocteln.fr:5050
Sa?
Y’a pas l’API là
Ah x)
Bon maintenant objectif https
Tu sais que tu as un truc plus simple et rapide ! 🙂
nginx proxy manager
ca va te sauvé la vie je pense 😉
Si tu as docker il s'installe en 3 secondes et apres pour le configurer c'est super simple
Je vais me renseigner 👍
Hello, pourriez vous me dire comment faire ceci en discord ts s'il vous plait ? j'ai lu la doc mais sans savoir comment ceci s'appel je n'ai rien trouvé 😅
Je vous remercie bonne journée a vous !
Il s'agit de Context Menus (en l'occurence, de type User)
ohh je vois je vais regarder a sa !
c'est un nouvel handler a créer comme celui des command / event / components ?
j'ai eut ma réponse merci beaucoup !

bonjour
i have
problem
quand je veux mettre un effet ephemeral sur mon message sa morche po
if (args.length < 2) {
return message.reply({ content: 'content', ephemeral: true });
}
L'option ephemeral ne fonctionne que lorsque tu répond à une interaction 
soucis
ses un messageCreate
est non une interaction
comment faire
pas faux mai le meilleur ses quoi
Utiliser les interactions
donc je dois tous refaire
C'est clairement le mieux car :
- C'est future proof
- C'est le mieux en matière de confidentialité
- C'est intégré nativement à l'appli Discord, donc plus simple à utiliser
- C'est plus simple à mettre en place
- ça évite les erreurs bêtes d'arguments dans le cas des commandes
- c'est plus rapide que les réactions dans le cas des boutons
Et je pense que j'en ai oublié
j'ai tous changé en interactionCreate
Clairement, aujourd'hui faire un nouveau bot en commandes préfixe ne sert à rien 😉
Ah ouais rapide 
no please
Il s'agit pas juste de renommer l'évènement 
noon mais j'ai tous changé
Il faut que tu revois pleins de choses
mais j'ai tous refais
¯_(ツ)_/¯

Je t'ai pas obligé à utiliser les interactions
jamais dit sa
Seulement tu ne pourras pas envoyer des messages éphémères
snifff
help ME
agtt
@glass cargo
il faut installer une extension en plus car meme avec d'autre interactionCreate sa marche pas
Non pas du tout
Quel est le rapport ?
La réponse a été envoyé dans #bots-commands
Code + erreur 🤔
alors plutot une question
comment se nomme le truc server l'option genre comment faire
ApplicationCommandOptionType
2s
Euh jsp du tout
J'utilise pas cette façon de faire mdr
En tout cas, celui que tu as montrer et que tu as supprimés xd
Nan tu ment pas façon ami
Bonsoir !
Petite question de ma part x) Je fais des bots discord etc mais bizarrement j'me suis jamais penché vers les bots notifs. J'ai une question côté X / Twitter, est-ce qu'il y'a énormément de restrictions par rapport au fait que l'api soit payante ?
Bonsoir ! J'ai un problème avec mon bot, quand j'essaye de le lancer pour la musique tout ce passe bien mais dès qu'il Rejoins ça fait un sorte de grizillement en ralentit en même temps la musique au ralentit
De mémoire c'est 100$ / mois pour pouvoir lire 10k tweet
Oui c'est ça mais est-ce que sur des messages notifs embeded y'a une limite ?
Quand tu parles "pouvoir lire 10k tweet" est-ce que dcp les notifs que tu fais avec un bot d'un tweet pour une chaîne fin un compte twitter est compté dedans ?
rien compris 
Contexte : Je veux faire un bot notification twitch, youtube, twitter pour quelqu'un dans un channel spécifique avec les tweets, les lives qui débutent, etc...
Est-ce que ces messages embeds de notifications de tweets, etc... qui sont fait, est-ce qu'il y'a une limite
Et dcp je rebondissais "pouvoir lire 10k tweet", est-ce que ces messages de notifications qui sont embed, est-ce que c'est compté dans cette limite là
hello j'avais une question
mon bot posséde des commands
que j'aai supp mais elle reste affiché comment faire ?
Comment ça ?
je donne une photo
ses deux commande ne sont pus accésible "supp"
Jamais eu spécialement ce soucis après peut-être le cache aussi
Ta redem le bot ?
ouais 1million de fois vu que je le dev constant
passe le lien en pm je test voir si ils sont affichés pour moi stv
ok
Mais normalement ça s'enlève tout de suite
"notifications qui sont embed" ?
cad ?
Peut importe que tu envoie un embed Discord ou pas, si tu dois utiliser l'api twitter faudra payer
Montre le code avec lequel tu définit tes commandes
Tu dois sûrement utiliser add plutôt que set
Ou édit je sais plus ce que c’est exactement
en vrai il fait chier Elon avec ça
il veut réduire les bots et au final ça ne fait qu'augmenter
Hello, comment on set les contextmenus 🤔
J'ai ceci comme code:
function loadContextMenus(client) {
const fs = require("fs");
const ascii = require("ascii-table");
let contextmenus = [];
const table = new ascii().setHeading("Context Menus", "Statut du context menu");
const contextMenuFolders = fs.readdirSync("./ContextMenus");
for (const folder of contextMenuFolders) {
const contextMenuFiles = fs.readdirSync(`./ContextMenus/${folder}`).filter((file) => file.endsWith(".js"));
for (const file of contextMenuFiles) {
const contextMenu = require(`../ContextMenus/${folder}/${file}`);
if (contextMenu.data.name) {
client.contextmenus.set(contextMenu.data.name, contextMenu);
contextmenus.push(contextMenu);
table.addRow(file, "✔️");
} else {
table.addRow(file, "❌ => Manquant d'un nom ou help.name n'est pas une chaîne");
}
}
}
console.log(table.toString());
client.on("ready", async() => {
console.log(contextmenus)
await client.application.commands.set(contextmenus);
});
};
module.exports = {
loadContextMenus,
};
De la même manière que les commandes :)
Tu vas trop vite là oh xd
Relook 🙂
x)
Jte montre
J'ai ceci @glass cargo:
const { loadContextMenus } = require("./loaders/loadContextMenus.js");
["commands", "slash", "contextmenus"].forEach(x => client[x] = new Collection());
loadContextMenus(client);
c'est des codes pour faire quoi ?
Pour faire joli, pk ? Xd
Ouais mais dans le fichier d’un context menu, tu mets quoi comme options ?
Justement, c'est ça le blème xd
J'ai essayé plusieurs trucs, et sa fonctionne pas:
module.exports = {
data: {
name: "Reroll ce GiveAway",
type: 3, // 2 is for user context menus
},
async execute(interaction) {
console.log(interaction)
return;
},
};
Tu as aussi des commandes slash sur ce bot ?
ah t'es entrain de crée un site là ? je demande parce que je suis entrain d'apprendre à utiliser les codes etc la j'apprendre les codes
Aucun rapport
Lis la conversation 
Yes
Jte jure, sa lis pas les convs xd
Je pense savoir d’où vient le pb
Dit moi
On est d’accord, sur Discord même après avoir fait CTRL + R, les context menus ne s’affichent pas ?
vous me conseillez quel site pour apprendre les codes ? perso on ma recommander HTML
L’HTML n’est pas un site mais un langage de programmation 😉
Sa fais quoi CTRL + R ? Xd
ah ok merci pour l'info
Ça reload discord
Ah ok
C’est comme si tu fermais et réouvrais sans passer par le discord updater
oui moi ça ma fait ça
Ah moi je réinvitais le bot pour rafraichir les slash 🤷♀️ Xd
Normal c’est le but de la commande 
je savais même pas mdr
Ba quoi, mdr, et sinon, mon soucis initial 🤔
⏫ ?
Ah nan, j'ai pas
Dans ton code, tu utilises client.application.commands.set(contextmenus), sauf que je suppose que tu utilises la même chose pour les ChatInput. Donc je suppose que tes ChatInput remplacent les context menus
Il faudrait que tu définisse tout en une seule fois
Euh, pour les slash ouais
vous me conseillez quel site pour apprendre à codé svp
Open classroom
ok merci
Tu es dispo vocal ou pas ? @glass cargo
Jsuis pas fan des vocaux désolé :/
Cpour m'aider 2 secs 😦 Car jcomprends pas trop
@dire latch tu utilises discordjs ?
Oui
Tu devrais test https://www.sapphirejs.dev/
C'est un framework qui fonctionne avec discordjs et ca t'évitera justement de te poser des questions du genre comment load tes contextmenu
Ta déjà test ? parce que en vrai c'est grave pratique pour faire tes bots
Euh non, mais je préfère faire un truc fait par moi même
Ça apporte beaucoup de trucs par rapport à sheweny ?
Franchement ouais
Et surtout sheweny est abandonné donc y aura plus (ou presque plus) d'update alors que sapphire est encore full actif
Si tu utilises déjà sheweny t'aura facile a switch et tu vas d'office kiffer les changements
J'utilise aucun des deux
C’est plus optimisé ? Parce que quand jsuis passé à sheweny mon bot a fait x2 en conso de ram
J'ai pas comparé ca, a tester
Il est à combien là @ancient sonnet ?
Battles game est aussi très vieux 
Y’a 90 utilisateurs sur le miens 😂
Pour le moment j'ai que les 2 bots de Instant Gaming avec Sapphire
Ça recycle de saison en saison, intéressant…
Ha bah je change juste les images et textes 
Sinon, pour revenir à mon problème, comment je fait pour client.application.commands.set(slash); et client.application.commands.set(contextmenus); en même temps 🤔
Facilité ça 👀
client.application.commands.set[…slash, …contextmenus])
Ah sa existe ? Jsavais pas mdr
C’est la syntaxe de JavaScript
Ça permet de copier les clés/valeurs d’un object dans un autre ou les valeurs d’un array dans un autre
Et ca marche 
Mais ouais quand j'aurais le temps faudrait que je redev de 0 @ancient sonnet et @terse geyser
Jvois ça xd
J'avais le même sentiment au début xD
Puis jme suis lancé et je regrette pas du tout mdr
Y’a pleins de truc qu’il faut que je fixe sur ce bot en plus
Genre si tu modifie un message qui contient une mention, il considère ça comme du ghost ping, même si le nombre de mentions est le même 
Ou si un message contient des liens qui ont des embeds, pour lui l’ajout de l’embed par Discord est considéré comme l’édition d’un message
Mais j’ai la flemme de les corriger 😂
Ca c'est tout les bots mdr
Peut importe que tu utilises sheweny, sapphire ou autre mdr
Faut juste que tu check si le content est différent ou pas
Ah ouais, ta fait à la rache ton bot xd
Oui, mais c’est pour prouver à quel points j’ai la flemme
Changer le type ShewenyClient dans tous les fichiers, je t’en parle même pas
Il est privé, donc osef
pas compris 
Typescript 
Tous mes fichiers sont typés avec sheweny
Donc retirer sheweny = modifier tous les fichiers
Ok jvois, maintenant, petit soucis, comment je fais pour dire que c'est un contextmenus 🤔
Bonsoir tout le monde ! J'avais une petite question, je ne comprend pas bien l'erreur qui est annoncé dans mon useCollapse .. Si quelqu'un pouvais m'éclaircir ! J'ai déjà demander a Google et Copilot mais rien de concret.
Je viens de trouver la solution, comme par hasard après avoir mis le message ...
[UPDATE] = La solution ne fonctionne pas.
Je pourrais dire la même que chose que tu m’as dire sur sapphire, au début j’me suis dis "roh flemme" et maintenant je peux plus faire sans 😂
Tu change le type
Mdrrrr
Surement que je testerais un jour
:property: CommandInteraction#type
The interaction's type
Tu le regretteras pas je t’assure ^^

J'utilise ceci:
module.exports = {
name: "gcreate",
description: "Permet de créer un GiveAway !",
category: "Giveaway",
userPerms: ["Connect", "ViewChannel"],
botPerms: ["ViewChannel", "Connect", "Speak"],
J'ai pas de type 🤔
@glass cargohelp pls xd
Nan je faisais un test désolé x)
Ok
Rajoutes-en un
Comment ? Genre type: ContextMenuCommandBuilder() ?
Ah
Ah oui ok, j'avais pas compris mdr
Sa fonctionne nickel, merci 🙂 @glass cargo
Tu gagnes: 0.000000000000000001€
Ah nickel
Même chez total ils mettent pas autant de chiffres après la virgule 
MDRRRRRR
Ça m'arrangerait qu'ils mettent que des 0 💀
Hey ! Je débute l'apprentissage de ES6+ et j'ai découvert récemment les arrows functions et je dois avouer avoir du mal a comprendre leur intérêt. J'ai beaucoup fais de recherche mais j'ai du mal a comprendre ce qu'elle apporte vraiment de plus en comparaison a une function normale . Si quelqu'un peux éclairé ma lanterne avec des exemples concrets j'en serais ravis.
Il y a deux points important :
- Synthaxe + courte
//Fonction normale
function truc(x){
return x * x;
}
// Arrow Function
const truc = x => x * x;
- Les Arrows functions ne possède pas leurs propres
this, typiquement on les utilise très souvent quand elle doivent être passé dans des callbacks, elles prennent le this en fonction du contexte dans lequel elles sont utilisées. Et les frameworks modernes te poussent beaucoup à leurs utilisations.
Du coup à moins d'être resté en 2005 avec JQuery tu n'y échappera malheureusement pas 
En faite en soit les moments où tu devras éviter les arrows functions c'est quand tu devras faire des méthodes qui ont leurs propre contexte this ou si tu fais des méthodes qui seront utilisé comme des constructeurs
Okay je comprend mieux merci. Dans mon entreprise comme tu dis ils sont rester bloqué en 2005 avec jquery mais de mon côté je veux apprendre react et donc c'est pour ça que j'apprends es6+ et donc ça fais sens du coup
Ah je comprend mieux le petit retard, il est justifié par l'entreprise, no-problem c'est justifié du coup 😉
Yes je suis étudiant en alternance et il m'ont appris de cette manière mais j'ai pris conscience que c'était pas la meilleure manière !
Souvent en entreprise tu peux tomber sur des vieux projets qu'on ne remet pas aux gouts du jour car se serait trop coûteux pour le client 
Mais si en personnel tu as moyen d'évoluer sur les technologies du moment pour trouver une meilleure entreprise plus tard n'hésite surtout pas
Objectif freelance donc oui pas trop le choix de me former de mon côté !
Bon courage dans ce cas 👍
Merci ! Et encore merci pour les conseils sur les arrows functions !
Pas de soucis, personne ne m'a corrigé c'est que je n'ai pas dis de conneries ! 🤣
Oui ça doit être ça 😂
En se moment je dev + en Python du coup j'ai eu peur de dire une connerie mais j'ai regardais les Docs et c'est les explications que j'ai trouvé
Je compte m'intéressé aussi au python mais chaque chose en sont temps ! Trop de language existant !
Moi on va dire que je n'ai pas trop eu le choix d'en apprendre plein, là où je bosse faut être un couteau Suisse 🤣
C'est vraiment approximatif, mais en gros si je devais résumer les techs que j'utilise dans un projet :
Faut rajouter GraphQL mais sinon je crois que c'est bon 🤔
Tu bosses chez qui ?
C'est déjà pas mal ! Moi a mon taff on utilise HTML/css JavaScript/jquery et smarty mdr et a côté en perso j'ai appris PHP et la je m'intéresse à react !
Je bosse dans la startup qui fait http://re-mind.eco/
Stylé
Cool !
bonjour j'ai un probleme avec mon system de modmail
Voici mon code https://pastebin.com/t0DFQLdN
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.
quand j'envoie un message privée a mon bot absolument rien ne ce passe
Salut! !!!!! Je rencontre un problèmes qui fait crash mon bot plusieur heurs après alors voila l'erreur quand il crash:
15.04 13:01:21 [Bot] Connecté à la base de données MySQL
15.04 13:02:37 [Bot] Données de fin de service enregistrées dans la base de données
15.04 21:01:21 [Bot] node:events:491
15.04 21:01:21 [Bot] throw er; // Unhandled 'error' event
15.04 21:01:21 [Bot] ^
15.04 21:01:21 [Bot] Error: read ECONNRESET
15.04 21:01:21 [Bot] at TCP.onStreamRead (node:internal/stream_base_commons:217:20)
15.04 21:01:21 [Bot] Emitted 'error' event on Connection instance at:
15.04 21:01:21 [Bot] at Connection._handleProtocolError (/node_modules/mysql/lib/Connection.js:423:8)
15.04 21:01:21 [Bot] at Protocol.emit (node:events:513:28)
15.04 21:01:21 [Bot] at Protocol._delegateError (/node_modules/mysql/lib/protocol/Protocol.js:398:10)
15.04 21:01:21 [Bot] at Protocol.handleNetworkError (/node_modules/mysql/lib/protocol/Protocol.js:371:10)
15.04 21:01:21 [Bot] at Connection._handleNetworkError (/node_modules/mysql/lib/Connection.js:418:18)
15.04 21:01:21 [Bot] at Socket.emit (node:events:513:28)
15.04 21:01:21 [Bot] at emitErrorNT (node:internal/streams/destroy:157:8)
15.04 21:01:21 [Bot] at emitErrorCloseNT (node:internal/streams/destroy:122:3)
15.04 21:01:21 [Bot] at processTicksAndRejections (node:internal/process/task_queues:83:21) {
15.04 21:01:21 [Bot] errno: -104,
15.04 21:01:21 [Bot] code: 'ECONNRESET',
15.04 21:01:21 [Bot] syscall: 'read',
15.04 21:01:21 [Bot] fatal: true
15.04 21:01:21 [Bot] }```
Hello, petit problème @glass cargo
Tout fonctionne bien pour mon contextmenus mais j'ai ceci qui apparaît: Erreur interaction (Image 1)
Je voudrais enlever celui ci justement xd
Et voici le code de mon fichier reroll.js:
module.exports = {
name: "Reroll ce GiveAway",
category: "Giveaway",
userPerms: ["Connect", "ViewChannel"],
noUserPermsMessage: `You need the \`Connect\` and \`View Channel\` permissions to use these commands!`,
botPerms: ["ViewChannel", "Connect", "Speak"],
noBotPermsMessage: `I am missing one of the following permissions: \`Connect\`, \`View Channel\`, \`Speak\``,
type: 3,
run: async(client, interaction, args) => {
console.log(interaction)
console.log("dd")
return;
},
};
Et mon interaction:
module.exports = async(interaction, client) => {
if (interaction.isMessageContextMenuCommand()) {
if(interaction.commandName === "Reroll ce GiveAway") {
const targetId = interaction.targetId;
console.log(targetId);
// CODE
};
};
};
ça vient forcément de ton code ça, parce que si ça venait de discord, ça serait en ephemeral
Mais pas de là dcp
Ouais jsais bien mais jsp d'ou justement mdr
Moi non plus x)
On est 2, bienvenue xd
Code:
module.exports = async(interaction, client) => {
if (interaction.isMessageContextMenuCommand()) {
if(interaction.commandName === "Reroll ce GiveAway") {
const targetId = interaction.targetId;
console.log(targetId);
BDD.query('SELECT * FROM giveaways WHERE iddugiveaway = ? AND fini = "true"', [targetId], async (error, results, fields) => {
if (error) throw error;
if (results.length === 0) return interaction.reply({ content: "Impossible car ce giveaway n'est pas fini.", ephemeral: true });
});
}
}
}
J'ai juste le Impossible car ce giveaway n'est pas fini quand le message n'est pas un giveaway, sinon, si c'est un giveaway dans la bdd, sa met ce que je t'ai mis au dessus
Utilise la recherche pour essayer de voir que'est-ce qui renvoie ce message 😉
Ah oui, pas bête
Code interactionCreate.js:
const { InteractionType } = require("discord.js");
module.exports = async(interaction, client) => {
if (interaction.type !== InteractionType.ApplicationCommand) return;
const command = client.slash.get(interaction.commandName);
if (!command) return interaction.reply({ content: 'Erreur interaction' });
if (command.userPerms) {
if (!client.guilds.cache.get(interaction.guild.id).members.cache.get(interaction.member.id).permissions.has(command.userPerms || [])) {
if (command.noUserPermsMessage) {
return interaction.reply(command.noUserPermsMessage)
} else if (!command.noUserPermsMessage) {
return interaction.reply(`Vous devez avoir la permission \`${command.userPerms}\` pour exécuter cette commande !`)
}
}
}
if (command.botPerms) {
if (!client.guilds.cache.get(interaction.guild.id).members.cache.get(client.user.id).permissions.has(command.botPerms || [])) {
if (command.noBotPermsMessage) {
return interaction.reply(command.noBotPermsMessage)
} else if (!command.noBotPermsMessage) {
return interaction.reply(`Je dois avoir la permission \`${command.userPerms}\` pour exécuter cette commande !`)
}
}
}
const args = [];
for (let option of interaction.options.data) {
if (option.type === 'SUB_COMMAND') {
if (option.name) args.push(option.name);
option.options?.forEach(x => {
if (x.value) args.push(x.value);
});
} else if (option.value) args.push(option.value);
}
try {
command.run(client, interaction, args)
} catch (e) {
interaction.reply({ content: e.message });
}
};
Ducoups, je change ceci:
const command = client.slash.get(interaction.commandName);
EN
const command = client.slash.get(interaction.commandName) || client.contextmenus.get(interaction.commandName);
C'est ça 🤔
yep je suppose
probablement une erreur qui est survenue sur ta connexion TCP avec mysql
je sais pas comment tu te connecte à mysql mais normalement t'as moyen d'avoir accès à cette connection en récupérant le résultat de createConnection via un truc du genre const conn = mysql.createConnection(...)
à ce moment il te suffit de gérer les erreur dessus avec un code du style
conn.on('error', function (err) {
console.error(`[MySQL] Caught error in TCP connection: ${err}`);
});
ça devrait éviter de faire crash ton application et tu devrais voir le log qui cause l'erreur
je sais pas comment tu host ton bot mais généralement c'est des erreurs qui arrivent quand tu host ton bot sur ton pc ou un truc comme ça et que ton pc se met en veille ; à ce moment y a un timeout sur ta connexion avec mysql et ça cause des erreurs
Je vais look ça merci mais je suis sur un hébergeur mais je vais look tout ça
On peut faire stream un bot ou pas ?
de mémoire non
donc obligé de stream avec un alt ducoup

Bonsoir ! J'ai un problème avec mon bot, quand j'essaye de le lancer pour la musique tout ce passe bien mais dès qu'il Rejoins ça fait un sorte de grizillement en ralentit en même temps la musique au ralentit
quelq'un pour m'aider ?
J ai ça: 18.04 04:19:33 [Server] Startup [MySQL] Caught error in TCP connection: Error: read ECONNRESET
Apparemment par défaut la connexion se reset toutes les 8 heures
Tu peux implémenter un heartbeat pour maintenir la connexion (go https://github.com/mysqljs/mysql/issues/464#issuecomment-17418788 pour + d'infos)
Tu peux faire SELECT 1 au lieu de faire un ping vu que d'après les commentaires de l'issue ça fonctionne mieux comme ça
Tu peux mettre un timeout plus gros que 30000 ms aussi (genre 3600000ms pour 1h)
Ahhhh ok ok je vois je vais faire ça merci en tous cas te ton aide
Petit question les mec svp ? Le bot j'ai besoin quand quand il reçoi un message privé ça fait un event sur mon serveur discord c'est quoi l'event en question?
C’est l’évent de message
Quand je met ça me fait rien je vais relook si tu me dit que c'est ça
Effectivement l'event "message" ne marche pas en tous cas
messageCreate @unborn tanglesi jamais
Bonsoir, j'essais d'installer PM2 mais j'ai une erreur.
On pourrait m'aider ?
Le problèmes le messageCreate c'est que ça prend les message sur le discord pas en M P avec le bot
Sisi, sa prends tout 🙂
Bha moi la actuellement je vient de teste j'ai juste fait un console.log et quand je send sur le discord c'est good quand c'est en P rivé ca veux pas
Envoi le code 🤔
Essaye de pas lancer en debug
Vz je try
Sinon, jsp 🤔
Nop marche pas je vais attendre une autre personne
UP
Alors ouaip
C'est un truc à faire dans PowerShell
J't'envoies la commande de suite, wait
Autoriser l'exécution de scripts PowerShell
PowerShell → Mode Administrateur → Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "Unrestricted"
Désactiver l'exécution de scripts PowerShell
PowerShell → Mode Administrateur → Set-ExecutionPolicy -Scope "CurrentUser" -ExecutionPolicy "RemoteSigned"
windows dans toute sa splendeur
*Le terminal de VSCode surtout
Y'a une whitelist des commandes que tu peux utiliser je crois
Alors fun fact ça le fait aussi sur cmd et power shell
Vscode ne fait que reprendre le terminal de windows au final
Oui mais vscode a par défaut une whitelist par dessus
Ce n'est peut-être pas elle qui agit ici, mais elle existe 👀
source ? je dev sur windows sans wsl au taf (à mon grand regret) et j'ai jamais fait ce constat
Première fois que j'entend ca aussi

source quelle exist ? vraiment curieux premier fois que j'attends parler de sa
pourtant j'utilise vscode depuis 2016
yo, j'aimerais que quelqu'un m'aide car je fais un projet avec svelte kit mais je n'arrive pas a établir le protocole https sur celui ci. Quelqu'un serais il en mesure de m'aider svp.
je débute alors soyez sympas
svp
bonjour j'aurais besoin d'aide et j'ai fais un bot en java script mais dans le terminal une erreur s'affiche je n'arrive pas a le regler qi qlqu peut m'aider sa serait gentil merci bcp d'avance
at Module._resolveFilename (node:internal/modules/cjs/loader:1143:15)
at Module._load (node:internal/modules/cjs/loader:984:27)
at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:135:12)
at node:internal/main/run_main_module:28:49 {
code: 'MODULE_NOT_FOUND',
requireStack: []
}
Node.js v20.12.2```
il trouve pas un des modules que tu load
j'avais compris sa mais je le regle comment
montre ton code
ta première ligne réfère à aucun fichier
je dois mettre quoi
quand t'ouvres ton dossier node_modules il est dedans ?
si oui tu copie son relative path et tu le colles dans le require
Tu exécute la commande dans le mauvais dossier à sur toi que ton terminal sois dans le dossier ou ton fichier main.js est situé
Ou que le nom est pas bon
Parce que dans l'erreur, le fichier qui n'est pas trouvé est main. Essaie de lancer ton fichier avec node main.js @sage shoal
→ npm i discord.js
// index.js ou main.js ou bot.js \\
const Discord = require("discord.js");
const intents = new Discord.IntentsBitField(3276799);
const bot = new Discord.Client({ intents )};
const config = require("./config");
bot.login(config.token)
// config.js \\
module.exports = {
token: "Ur token, logique ?",
};
L'erreur provient juste du fait qu'il n'arrive pas à trouver ton fichier principal
Par déduction, c'est main.js
dans package.json, dans "main": tu met "main.js"
"description": "",
"main": "main.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
Puis tu fais node .
Et pouf, problème résolu
n'oublie pas d'être dans le bon dossier
Merci pour vos conseil mais je l'ai régler hier soir la ce soir j'aurais besoin de vous mon bot à un problème je vous expliquerai ce soir
Il faudrait pas mettre const config = require("./config.js") plutôt ? (Il n'y a pas l'extension .js dans l'exemple)
L'extension est facultative du moment que c'est la même que le fichier que tu appelle ^^
Oh ! Je savais pas du tout, tu viens de m'apprendre quelque chose en tout, merci ! ^^
sa dépent si tu as une architecture CommonJS modules ou ECMAScript modules
ça marche pas en commonJS ?
Ah shit
Désolé Sébastien dcp
Sébastien en a eu marre et à quitté 
Dommage pour lui 🤷♂️
Bonsoir, j'espère que quelqu'un est dispo à cette heure là xd
Je fais un bot discord rien que plus basique mais je pense qu'avec la fatigue je mongolise...
J'ai fais en sorte qu'il y ait plusieurs commandes qui renvoit un embed avec un field link et un field message qui sont modifiables via ma commande /config
J'ai une commande /help mais ça me met "Aucune configuration trouvée pour cette commande." et pareil quand je /config une de mes commandes...
index.js :
const fs = require('fs');
const { Client, GatewayIntentBits } = require('discord.js');
const configPath = './config.json';
const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
client.once('ready', () => {
console.log(`Logged in as ${client.user.tag}!`);
});
client.on('interactionCreate', async interaction => {
if (!interaction.isCommand()) return;
const interactionCreate = require('./events/interactionCreate');
interactionCreate.execute(interaction, config.commands);
});
client.login(config.token);
configUtils.js :
const fs = require('fs');
const configPath = './config.json';
const allowedFields = ['link', 'message'];
module.exports.updateConfig = function (command, field, value) {
if (command === "config" || command === "help") {
throw new Error("Cette commande ne peut pas être modifiée.");
}
if (!allowedFields.includes(field)) {
throw new Error("Le champ spécifié ne peut pas être modifié.");
}
const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
if (!config.commands) config.commands = {};
if (!config.commands[command]) config.commands[command] = {};
config.commands[command][field] = value;
fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
};
interactionCreate.js :
const { EmbedBuilder } = require('discord.js');
const { updateConfig } = require('../utils/configUtils');
module.exports = {
name: 'interactionCreate',
async execute(interaction, commandConfigs) {
if (!interaction.isCommand()) return;
const { commandName } = interaction;
const config = commandConfigs[commandName];
if (!config) {
await interaction.reply({ content: 'Aucune configuration trouvée pour cette commande.', ephemeral: true });
return;
}
let embed;
switch (commandName) {
case 'rlp':
case 'aa':
case 'av':
case 'tno':
case 'bh':
case 'hoi':
case 'ulda':
case 'nel':
embed = new EmbedBuilder()
.setColor('#0099ff')
.setTitle(`Réponse pour /${commandName}`)
.addFields(
{ name: 'Link', value: config.link },
{ name: 'Message', value: config.message }
);
await interaction.reply({ embeds: [embed] });
break;
// Gestion de la commande /help
case 'help':
embed = new EmbedBuilder()
.setColor(0x0099ff)
.setTitle('Liste des Commandes')
.setDescription('Voici une liste de toutes les commandes disponibles et leur description:')
.addFields(
Object.keys(commandConfigs).map(cmd => {
return { name: `/${cmd}`, value: commandConfigs[cmd].message, inline: true };
}).filter(field => !['config', 'help'].includes(field.name))
);
await interaction.reply({ embeds: [embed] });
break;
case 'config':
if (!interaction.member.permissions.has('ADMINISTRATOR')) {
await interaction.reply({ content: 'Vous n\'avez pas la permission de configurer les commandes.', ephemeral: true });
break;
}
const commandToConfig = interaction.options.getString('command');
const fieldToConfig = interaction.options.getString('field');
const valueToConfig = interaction.options.getString('value');
if (['config', 'help'].includes(commandToConfig)) {
await interaction.reply({ content: `La modification des commandes \`${commandToConfig}\` n'est pas autorisée.`, ephemeral: true });
break;
}
try {
updateConfig(commandToConfig, fieldToConfig, valueToConfig);
await interaction.reply({ content: `La configuration de la commande \`${commandToConfig}\` a été mise à jour avec succès pour le champ \`${fieldToConfig}\`.`, ephemeral: true });
} catch (error) {
await interaction.reply({ content: `Erreur : ${error.message}`, ephemeral: true });
}
break;
default:
await interaction.reply({ content: 'Commande non reconnue.', ephemeral: true });
break;
}
},
};
Bonjour, serais-ce possible de m'expliquer le principe d'hydratation en React/Next s'il vous plait ? De ce que j'ai compris c'est lorsque le rendu coté client n'est pas le même que le rendu côté serveur, mais je n'arrive pas a comprendre ce qui pose problème dans mon code, existe t'il un outil capable de determiner de façon claire l'endroit qui pose problème ? la stacktrace du message d'erreur ne fournis aucune information sur l'endroit de l'erreur, uniquement les balise impacté. Merci de votre aide bonne journée !
L'hydratation en React/Next consiste à synchroniser le rendu initial côté serveur avec le rendu côté client pour assurer la cohérence de l'application.
Oui sa je l'ai compris, ce sur quoi je bloque c'est comment trouver a qu'elle moment sa foire
Utilise React Developer Tools pour identifier plus facilement les erreurs et leur emplacement précis
merci beaucoup je comprend mon erreur et j'ai réussi à la corriger

hello, des gens s'y connaissent bien en api sur vercel ?
j'ai un probleme, en gros je fais un site des cours en ligne, et j'affichier les cours en json, au lieu de passer par du json direct sur le site, je souhaites créer un "api", tout marche niquel en local, mais une fois sur vercel, j'enchaine les error 404 
Ton API tourne avec quoi ?
express
Tu peux m’envoyer ton vercel.json ?
{
"version": 2,
"builds": [
{
"src": "index.js",
"use": "@now/node"
}
]
}
Alors premièrement, @now/node est déprécié, il faut utiliser @vercel/node
Et après, il faut que tu redirige tes requêtes vers ton fichier index.js
Je sais plus comment il faut faire exactement
ah ok je vais test merci
Ah voilà c’est ça : https://vercel.com/guides/using-express-with-vercel#5.-configure-your-project-for-vercel
Faut que tu rajoute le rewrites
comme ça : {
"version": 2,
"builds": [
{
"src": "index.js",
"use": "@vercel/node"
}
],
"rewrites": [
{
"source": "/(.*)",
"destination": "/api"
}
]
}
mais tu vois, ce qui est bizzare, c'est que quand je fais https://monlien/works/java.json beh ça dit que le fichier n'existe pas ( alors que en local c'est good)
banjours les amis je suis un debutant sur react et j'ai besoin de quelqu' un pour m'aider avec mon code
Expose ton problème et ton code
Bonjour !
J'ai un projet Django pour faire mon dashboard d'un futur bot discord.
Et j'aimerais faire que lorsque l'utilisateur clique sur un lien, qui a besoin des infos discord de l'utilisateur (par exemple ses serveurs), donc en gros qu'il soit connecté avec son compte, et qu'il ne l'est pas encore, une alerte s'affiche, dans laquelle il y a écrit qu'il faut d'abord se connecter
j'ai pensé à un truc que je viens de faire, c'est que lorsque l'utilisateur clique sur le lien, dans la vue, si le user n'est pas co, ça redirige vers la page où il était, en ajouter "alert": True dans le context
et dans le template, s'il y a "alert", ça ajoute une div avec le message d'alert
mais je sais pas si c'est la meilleure des manières, car cela nécessite de recharger la page pour pouvoir voir l'alert, et je sais pas non plus si c'est possible que l'alert se supprime toute seule au bout de quelques secondes
merci d'avance pour vos réponses !
Salut 👋
Tu t'es trompé de salon 👀
Bah c'est pas du js ?
Jsp, t'as commencé à parler de django 
Oui mais Django c'est en python, mais ya du js aussi
La ma question se basait sur du js du coup
Ah autant pour moi, je connaissais pas
Pour afficher l'alerte et la supprimer au bout d'un certain temps
Et j'ai pas compris ce que tu voulais faire
Tu veux faire un popup personnalisé ?
Si oui, je te conseille de regarder du côté du <dialog> : https://developer.mozilla.org/fr/docs/Web/HTML/Element/dialog
function openPopup () { // Déclarer un fonction
const dialog = document.getElementById("PopupId") // Récupérer l'élément
if (!dialog) return // Si l'élément n'est pas trouvé, retourner pour éviter de créer pleins d'erreurs
dialog.showModal() // Montrer le popup
setTimeout(() => dialog.close(), 5000) // Fermer le popup dans 5 secondes
}
Bonjour, je suis un développeur assez noob dans le JS et j'ai un petit soucis. Quand j'essaie de transformer ceci :
En cela :
Le modal ne s'ouvre plus, et je n'arrive vraiment pas à trouver la solution. Est-ce que quelqu'un pourrait m'aider ? Merci
(Problème réglé !)
Bonjour ! Je me présente rapidement. Je suis en train d'essayer de créer un bot Discord en suivant des vidéo et en utilisant une IA. Cependant, étant novice dans ce domaine, je rencontre quelques difficultés. Malgré cela, je m'efforce de persévérer, mais je crains que mon petit cerveau ne soit pas à la hauteur x)
Je me demandais s'il était possible qu'une personne maîtrisant JavaScript et Visual Studio puisse m'aider dans l'exécution du code. Dans le sens, où, des qu'il fonctionne pas ,je puisse me tourné vers cette personne pour trouver une solution, des conseils..ect. Normalement, il s'agit de commandes assez simples à mettre en place
S'il y a une petite âme charitable !
Le mieux c'est que tu essaies par toi même et tu postes ici quand tu as une erreur que tu comprends pas
J'ai déjà une erreur, je crois que c'est sur l'installation du bot
Mon but c'est d'essayer de demander le moins d'aide possible pour pas vous embêter, mais je suis un peu bloqué a la première cassé x)
Hey
tu utilise quel version de discord.js ?
Je viens de l'installer donc ça doit être la dernière
vous savez comment on fait pour mettre le https sur sveltkit ?
est-ce que vous savez s'il y a un moyen de récupérer les variables de session dans le js ?
En php vers JS ?
jsuis sur un projet Django, et j'ai pas mis de php
je connais pas encore ce langage ^^"
mais juste dans le js, c'est pas possible de récupérer la session ? c'est chiant 😢
Je ne mis connais pas assez sur Django pour te dire désolé
ah pas de soucis tkt merci quand mm
Pour des raisons de sécurité, tu ne peux accéder aux données de session côté client mais tu peux tourner autour, je m'explique
- Utiliser une API AJAX, tu crées ton api django qui retourne les données de session que t'as besoin et ensuite tu peux faire une requête AJAX depuis JS pour récupérer ces données là
- Si les données session sont stockées dans un cookie tu peux les lire directement avec
document.cookie
Mhmmm
Est ce que tu aurais un exemple très simple de code avec ajax stp ?
Ou j'pourrais regarder par moi même t'embête pas en fait
Bon bah merci beaucoup !
Hello,
Je suis en train d'essayer de relier mon systeme d'authentification à ma db. Pour ce faire, je fait un appel à mon api pour verifier si l'user existe ou non. Sauf que j'ai cette erreur qui provient du useFetch. Pouvez vous m'aider svp
<template>
<div>
<img
:src="
$auth.user?.picture
? $auth.user.picture
: 'https://cdn.pixabay.com/photo/2021/07/02/04/48/user-6380868_1280.png'
"
alt="profile picture"
/>
<h1>
{{
//@ts-expect-error
$auth.user?.name ? $auth.user?.name : "user"
}}
</h1>
<h2>{{ $auth.user?.email }}</h2>
<p>{{ $auth.user }}</p>
<button @click="main">add user</button>
</div>
</template>
<script setup lang="ts">
import { useKindeClient } from "#imports";
let userInfo;
async function loadUserProfile() {
const client = useKindeClient();
const user = await client.getUserProfile();
console.log(user);
try {
userInfo = await fetch(`/api/users/${user.id}`);
} catch (e) {
userInfo = e;
}
console.log(userInfo);
}
loadUserProfile();
definePageMeta({
middleware: ["auth-logged-in"],
});
</script>```
okay j'ai reussi en sortant le useFetch de la fonction
Bonsoir , je vous explique j'ai mon bot et j'aimerais que sa soit uniquement la personne qui a fait la commande "help" qui peux changer les catégories comment faire?
voici mes deux codes : ```js
help.js
const { MessageEmbed, MessageActionRow, MessageSelectMenu } = require('discord.js');
const { color } = require('../../config.json');
module.exports = {
name: 'help',
description: 'Affiche les commandes disponibles classées par catégorie.',
category: '📚・Utilitaires',
async execute(message) {
const { commands } = message.client;
const embed = new MessageEmbed()
.setTitle('Aide : Liste des Commandes')
.setDescription('Sélectionnez une catégorie pour voir les commandes disponibles.')
.setColor(color);
// Créer un objet Map pour catégoriser les commandes
const categories = new Map();
commands.forEach(command => {
const category = command.category || 'Autre';
if (!categories.has(category)) {
categories.set(category, []);
}
categories.get(category).push(command);
});
// Créer le menu de sélection des catégories
const selectMenu = new MessageSelectMenu()
.setCustomId('select')
.setPlaceholder('Choisissez une catégorie')
.addOptions(
Array.from(categories.keys()).map(category => {
return {
label: category,
description: `Voir les commandes de ${category}`,
value: category
};
})
);
const row = new MessageActionRow().addComponents(selectMenu);
// Envoyer le message avec le menu de sélection
await message.channel.send({ embeds: [embed], components: [row] });
}
};```
interactionCreate.js
client.on('interactionCreate', async interaction => {
if (!interaction.isSelectMenu()) return;
if (interaction.customId === 'select') {
const category = interaction.values[0];
const commands = interaction.client.commands.filter(cmd => cmd.category === category);
// Construire à nouveau le menu de sélection pour l'inclure dans la mise à jour de l'interaction
const categories = new Map();
interaction.client.commands.forEach(command => {
const category = command.category || 'Divers';
if (!categories.has(category)) {
categories.set(category, []);
}
categories.get(category).push(command);
});
const selectMenu = new MessageSelectMenu()
.setCustomId('select')
.setPlaceholder('Choisissez une catégorie')
.addOptions(
Array.from(categories.keys()).map(category => {
return {
label: category,
description: `Voir les commandes de ${category}`,
value: category
};
})
);
const row = new MessageActionRow().addComponents(selectMenu);
const prefix = config.prefix;
// Créer l'embed pour la réponse
const embed = new MessageEmbed()
.setTitle(`Commandes de la catégorie ${category}`)
.setColor(color);
if (commands.size > 0) {
commands.forEach(cmd => {
embed.addField(`${prefix}${cmd.name}`, cmd.description || 'Pas de description disponible', false);
});
} else {
embed.setDescription('Aucune commande disponible dans cette catégorie.');
}
await interaction.update({ embeds: [embed], components: [row] });
}
});```
Tu dois rendre l'interaction ephemeral, cf https://discordjs.guide/slash-commands/response-methods.html#ephemeral-responses
Merci , mais j'ai deja essayer et ça n'a pas marcher
mais , je suis pas en slash commande , en discord.js v13
je sais mais le principe est le même, cf. https://discordjs.guide/message-components/interactions.html#responding-to-component-interactions
comment tu as essayé ?
( S'il y a quelqu'un qui passe par ici
#javascript-typescript message )
Bonjour ! Je me présente rapidement. Je suis en train d'essayer de créer un bot Discord en suivant des vidéo et en utilisant une IA. Cependant, étant novice dans ce domaine, je rencontre quelques difficultés. Malgré cela, je m'efforce de persévérer, mais je crains que mon petit cerveau ne soit pas à la hauteur x)
Je me demandais s'il était possible qu'une personne maîtrisant JavaScript et Visual Studio puisse m'aider dans l'exécution du code. Dans le sens, où, des qu'il fonctionne pas ,je puisse me tourné vers cette personne pour trouver une solution, des conseils..ect. Normalement, il s'agit de commandes assez simples à mettre en place 
➜ [Voir le message original](#javascript-typescript message)
Oep ?
Tu peux utiliser les filtre et les collecteurs
Je suis qu'au début, je rencontre déjà une erreur, si vous pouvez me dire comment résoudre celle ci
La version c'est la dernière qu'on peut installer
Fait plutôt comme ça :
const intents = new Discord.IntentsBitField(3276799);
const client = new Discord.Client({ intents });