#javascript-typescript

1 messages · Page 29 of 1

cursive sail
celest cliff
#

nop, car login n'existe pas , j'ai volontairement mis une variable fausse pour que mon fallback s'active

celest cliff
#

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 ?

red torrent
# celest cliff salut , récemment je me suis remis à react et j'ai (re)appris les bases Est ce ...

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.

misty parcel
#

wtf

#

On peut mettre plusieurs message dans 1 embed ??

#

Incroyable

neat vale
#

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 ?

silent quiver
# neat vale Bonjour, j'ai eu une petite discussion au sujet des sockets qui m'a laissé perpl...

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

neat vale
# silent quiver apres ça vas etre compliquer d'expliquer comment metre tout ça en route

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

silent quiver
#

tu peu voc ? comme ça je t'explique un peu mieux

neat vale
#

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

silent quiver
neat vale
silent quiver
#

ça marche tu me ping quand t'es dispo

neat vale
#

ça marche

vocal umbra
#

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 😄

normal lichen
slim anvil
#

tu peux via ESLint par exemple, meme avec typescript tu peux facilement detecter les unused codes
mais c'est un peu de config

glass cargo
leaden prism
#

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;
slim anvil
#

tu as bien import ton fichier css dans ton main ou app js ?

#

avec ca dedans
@tailwind base;
@tailwind components;
@tailwind utilities;

leaden prism
#

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

near saddle
#

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 )

dire latch
near saddle
#

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

dire latch
#

Ba justement, tu as peut être fait quelques choses dans la code qui ne faut pas 🤷‍♀️

near saddle
#

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

slim anvil
#

j'aurai tendance a dire un soucis de cache du coup

queen ocean
slim anvil
pure tiger
near saddle
#

je ferai ça demain je suis exténué là, merci bien !

near saddle
#
        u = await guild.members.fetch('296325018923827202')
        console.log(u.nickname)```
Avec quelque chose de ce gabarit, ce serait supposé fonctionner ?
queen ocean
near saddle
#

je l'ai bien oui, pour autant je me retrouve toujours avec le même problème :/

queen ocean
#

🤔

near saddle
#
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

queen ocean
near saddle
#

Quelque chose de la classe GuildMember

queen ocean
#

Envoie un screen de la console

near saddle
#

Sans souci

#

screen décomposé mais j'ai fait au mieux xD

plucky glen
#

parce que si c'est pas le cas, nickname c'est bien null

near saddle
slim anvil
#

@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

near saddle
#

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 ?

slim anvil
#

je sais pas ce que tu veux faire mais oui sûrement du coup

near saddle
#

l’attribut globalName il est récupérable en V13 ? ou il faut que j’ update en V14?

near saddle
#

mais peut être qu’avec le nouveau système des username etc ça a modifié ça

slim anvil
#

je sais pas sorry je suis pas du tout les maj discord js

queen ocean
#

Jpensais t'avais un user avec un nickname et t'arrivais pas à le voir via le bot ?

cyan iron
#

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

queen ocean
#

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

cyan iron
#

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

queen ocean
#

Il est sur un GuildMember la, pas un User

#

nickname =/= username

cyan iron
#

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

queen ocean
#

bah oui KaPOP

cyan iron
queen ocean
#

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

cyan iron
#

Il lui manquerait peut être un intent / partial ?

queen ocean
#

Possible, j'ai pas vu comment il a créer son client

#

@near saddle 👀

plucky glen
#

Le fameux intent manquant qu’on a oublié et qui resoud tout les problèmes

near saddle
#

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é :/

near saddle
#

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à

queen ocean
queen ocean
#

Car la tu sais pas clairement voir ce que ta activer

keen narwhal
#

qui pourrais m'aider à regler le blem du ping que Mad Rage a fait

buoyant compass
keen narwhal
buoyant compass
keen narwhal
buoyant compass
#

d'acc, n'hésites pas à me ping

floral bolt
#

Eternity later

keen narwhal
# buoyant compass d'acc, n'hésites pas à me ping

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

buoyant compass
#

erreur ?

#

est ce que ton loadcommand load la commande ?

keen narwhal
keen narwhal
buoyant compass
#

ok et ton !ping renvoie rien du tout ?

keen narwhal
#

nan rien du tout

buoyant compass
#

on a encore le droit au commande avec préfixe ?

keen narwhal
#

jsp

buoyant compass
#

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

keen narwhal
#

👉 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...

▶ Play video

👉 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/...

▶ Play video
#

@buoyant compass

buoyant compass
#

ouch s a date

#

ah nan j'ai rien dit

#

ton bot se co on est d'accord ?

keen narwhal
buoyant compass
#

bon ben tu vas me faire recréer un bot discord

#

jpensais pas refaire sa un jour

#

jv regarder attends un pey

keen narwhal
#

pas de soucie merci !

buoyant compass
#

j'ui désolé faut j'aille manger j'ai pas plus e temps a passé dessus

keen narwhal
#

quelqu'un pourrait m'aider à crée un bot en js ?

buoyant compass
#

c'est étrange car il log bien ping

keen narwhal
buoyant compass
#

nn

#

c'est sa quii est bzr

keen narwhal
#

wtf

buoyant compass
#

J'ai trouvé

#

bahaha

keen narwhal
#

c'est quoi ?

#

mhh

#

probleme de syntaxe ?

#

car je vois que y'a les ...

buoyant compass
#

.length

#

pas ght

#

voilà pq il loggait pas mon name

keen narwhal
buoyant compass
#

ok ya pas que ça

keen narwhal
#

c'est ce que je pensais aussi

buoyant compass
#

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

keen narwhal
#

sur la vidéo quand il explique sauf qu'il change de ligne toute les 2s

buoyant compass
#

je tente un truc

keen narwhal
#

az redis moi

buoyant compass
#

jsp si c'est ça dans la vidéo dsl

keen narwhal
#

nan tkt pas de prblm

buoyant compass
#
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

keen narwhal
buoyant compass
#

A moins que jai foiré mon log qu'il fallait le mettre plus bas

keen narwhal
buoyant compass
#

T as encore ton pc ??

#

@keen narwhal

keen narwhal
buoyant compass
#

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

keen narwhal
#

@buoyant compass

#

marche tjr pas bg

buoyant compass
#

Jv câbler

keen narwhal
buoyant compass
#

Ya moyen c le messagecreate

keen narwhal
buoyant compass
#

Relis sq

#

Pour moi c est forcement dedans

plucky glen
#

tu fais quoi comme requete précisément

near saddle
torn fog
#

Et je pense pas que ça soit une bonne idée de laisser trainer ton token

neat vale
#

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

noble mountain
#

Adonis a un système de migration

#

btw

floral bolt
#

Doc *

neat vale
#

bas

floral bolt
#

« Ace migration:run »

neat vale
#

la migration mets pleins d'erreurs

noble mountain
noble mountain
#

node ace make:migration

#

node ace migration:run

#

Les commandes principales

neat vale
noble mountain
#

Tu as bien la configuration a ta db ?

neat vale
#

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

floral bolt
#

Si tu l’as déjà fait il n’a pas besoin de le refaire si vous été sur la même base

noble mountain
#

Si la connection ce fait pas c'est vous le problème je pense x)

neat vale
noble mountain
#

MySQL en général si un truc ce fait pas, faut relire xD

floral bolt
#

Si jamais email ne peut pas être en primary ça doit être « id »

noble mountain
#

Yep

#

Un email ne peut pas être une clé primaire

neat vale
neat vale
floral bolt
#

Ouais mais faut quand même les bonnes pratiques 😉 après pour ton problème je ne sais pas, je vais regarder ailleurs 🙂

neat vale
#

c'est possible avec du mysql

noble mountain
#

Oui c'est possible

#

Mais très mauvaise manière

floral bolt
#

« Bonne pratiques »

neat vale
#

avec des sauts d'd

#

id*

neat vale
floral bolt
#

Essaye de te connecter via un client mysql genre heidisql

neat vale
#

on va changé mais même sans ça même avec le make: users de base ça ne marchait pas

neat vale
floral bolt
#

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

floral bolt
#

Ouais c’est un phpmyadmin beaucoup plus beau

neat vale
#

le pb c pas la db

#

ducoup là je resetup Adonis

#

j'ai ai profité pour prendre l'authentification avec token

solid wedge
#

Salut j'ai un probleme avec mon bot discord une personne pourrais t'elle m'aider ?

neat vale
#
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

neat vale
#

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

pure tiger
#

J'avais pas vu que c'étais une histoire de captcha.
@queen ocean c'est legit ?

queen ocean
buoyant compass
#

Ah c'est un mec qui veut faire un autocaptcha bot là ?

#

On l'a eu sur un autre serv aussi 🤣

smoky crag
#

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)

silent quiver
smoky crag
#

c'est le code de la doc que j'utilises, y a pas de getActivePinia() . je sais vraiment plus quoi faire

silent quiver
#

alors je dirais que tu accéder au store avant de l'avoir activer

near saddle
prisma minnow
#

Fais voir ton main.js ou main.ts

smoky crag
prisma minnow
#
const app = createApp(App)

app.use(createPinia())

app.mount('#app')
#

comme ceci

smoky crag
smoky crag
# prisma minnow 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

prisma minnow
#

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)

smoky crag
prisma minnow
#

le store ?

leaden prism
#

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?

cyan iron
#

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 ?

leaden prism
#

express

cyan iron
#

Hein

leaden prism
#

ba j'ai fait mon api avec express

cyan iron
#

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

leaden prism
#

oui en local je peut l'utiliser

#

mais des que je deploy l'app (avec vercel) sa ne fonctionne plus

cyan iron
#

Ah yes pour le déploiement il faut un certif ssl

#

Ton app express est host comment ?

leaden prism
#

avec pm2

#

mais j'ai deja un site sur nocteln.fr qui tourne avec plesk

cyan iron
#

Fait correctement ta config nginx ou apache

#

T'utilise lequel ?

leaden prism
#

j'ai pas de config nginx / apache vu que je suis sur plesk

#

fin je crois 👀

cyan iron
#

Tu viens de me dire que t'avais utilisé pm2 👀

leaden prism
#

euuu oui

cyan iron
#

J'ai jamais utilise plesk je t'avoue je vais pas pouvoir t'aider là dessus

leaden prism
#

pour mon app express

cyan iron
#

En tout cas trouve un moyen de mettre un certificat sinon tu pourras pas faire de requêtes en http

leaden prism
autumn tendon
#

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 😉

leaden prism
crisp dune
keen narwhal
#

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

Eventbrite

Découvrir les nombreuses opportunités que l'IA offre aux développeur·se·s web !

noble mountain
#

@queen ocean je sais pas si t'accepte ça ou non

queen ocean
grizzled agate
#

Il spam son message sur tous les servs de dev je suis mort

queen ocean
grizzled agate
#

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

queen ocean
#

rip

autumn tendon
autumn tendon
#

vzy je check ça

queen ocean
#

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é

autumn tendon
#

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

queen ocean
#

customId et pas CustomId

#

@autumn tendon

autumn tendon
ruby idol
#

hehehe

autumn tendon
#

même, je ne comprends pas

autumn tendon
queen ocean
#

sans voir le reste du code je peux pas t'aider

autumn tendon
#
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

queen ocean
#

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 ?

autumn tendon
#

y'a tout mes const au dessus avec le nom de la commande, sa description ect

queen ocean
autumn tendon
queen ocean
#

bah c'est dans cette event que tu dois faire ta condition avec le customId

autumn tendon
#

ah d'accord

autumn tendon
queen ocean
#

Le meilleur moyen de savoir c'est de tester 💪

autumn tendon
#

ok finalement, j'ai réussi ! merci pour ton aide

queen ocean
#

👌

autumn tendon
#

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

wary urchin
#

Bonsoir! Est-ce normal que mon bot se lance comme prévu mais sans l'activité que je lui ai indiqué?

autumn tendon
#

c'est ça dans les nouvelles version normalement

autumn tendon
#

c'est le but du serveur

stark spoke
#

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);
}
}
});
});
};

autumn tendon
smoky crag
#

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.

plush lava
#

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 😦

glass cargo
#

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é…

violet knot
floral bolt
#

Sinon tu as une extension sur chrome pour « by-pass »

plush lava
plush lava
pure tiger
keen narwhal
#

@terse geyser

#

a

#

test

solid wedge
#

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

solid wedge
crisp dune
#

fs.readFile('./config.js', 'utf8', (err, data) => {

#

c'est pas la même racine que ton require déjà

#

const config = require('../../../config.js');

lilac shoal
#

Hello. Vous me conseillez quel framework pour un backend solide en web ?

celest cliff
#

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..

strong tree
# lilac shoal Hello. Vous me conseillez quel framework pour un backend solide en web ?

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

lilac shoal
#

J'utilisais jusqu'à aujourd'hui React, mais j'ai envie de changement ^^

lilac shoal
#

Adonis m'a l'air cool @strong tree

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 🙂

keen narwhal
#
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 });
            });
        });

    }
};```
noble mountain
#

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é

keen narwhal
keen narwhal
# lilac shoal Adonis m'a l'air cool <@1005342905340264488>

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.

noble mountain
#

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.

keen narwhal
# noble mountain Alors Adonis pour le coup c'est un vrai débat de mon côté si je dois donner mon ...

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.

lilac shoal
#

ça permet l'authentification assez simplement ?

#

En ayant fouillé la doc, on dirait bien 😂

keen narwhal
lilac shoal
#

Tu as déjà fait un site avec ?

keen narwhal
lilac shoal
#

Show me ?

keen narwhal
#

Ah publier, non, mais j'ai déjà fait des sites avec un système d'authentification et de bdd yep

lilac shoal
#

Oh okay

keen narwhal
lilac shoal
#

Ouais j'étais dessus x)

keen narwhal
# lilac shoal 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)

lilac shoal
#

👍

keen narwhal
#

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)

lilac shoal
#

Nice

#

J'aimerais faire un site dans pas longtemps, je testerais

keen narwhal
#

dn?

lilac shoal
#

edited

keen narwhal
lilac shoal
#

yeh

#

@keen narwhal Ajoute moi x)

keen narwhal
#

Dacc :)

woven cosmos
#

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 ?

plush lava
#

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)

glass cargo
#

Ou qu'il va bidouiller dans le devtools

gleaming girder
#

Bonjour quelqu'un pour voc, j'aurai besoin d'aide sur quelque ligne de sript qui font nimp

noble mountain
leaden prism
#

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

glass cargo
leaden prism
#
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/*;
}
glass cargo
#

Pas celle là, le fichier de configuration de ton site 😅

leaden prism
#

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
glass cargo
#

Enlève ça

#

C’est le serveur next qui va gérer ça ^^

leaden prism
#

tout ce qu'il y a sur le screen?

glass cargo
#

Yep

leaden prism
#

sa ne fonctionne toujours pas

#

ah

glass cargo
#

Tu as bien reload nginx ?

leaden prism
#

sa a chargé les images

leaden prism
leaden prism
glass cargo
#

Tu as des erreurs dans la console de next ?

leaden prism
#

la console de next?

glass cargo
#

Tu as fait npm start, donc tu as bien une console

leaden prism
#

j'utilise pm2

#

jsp ou elle est la console dcp

glass cargo
#

Donc pm2 ls puis pm2 logs <id> --lines 50

leaden prism
#

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

glass cargo
#

C’est la manière la plus simple et efficace que je connaisse 😂

leaden prism
#

Je l'ai faite avec express

#

jsp pourquoi quand j'essaye de faire la requette sa timeout

noble mountain
leaden prism
#

comment tu as fait du coup pour ajouter un certificat?

noble mountain
#

J’utilise nginx juste pour les conf

#

Bah comme il a dit

leaden prism
#

ah ok

leaden prism
#

(en local sa fonctionne)

glass cargo
#

En local, tu utilise http://localhost et localhost = ipv6

leaden prism
#

Ah ok j'essaie sa dès que j'ai accès à mon pc

#

Merci

glass cargo
leaden prism
#

C'est bien comme sa

#

Prcq sa ne fonctionne pas

foggy ledge
#

bonsoir

#

question

#

comment faire que un message soit en mode ghost ?

leaden prism
#

C'est a dire?

#

||comme sa ?||

glass cargo
desert riverBOT
glass cargo
#

Option ephemeral

leaden prism
#

Ah ok c'est sa qu'il voulait

glass cargo
#

Pour Noctin, sur ta machine quand tu fais curl http://0.0.0.0:PORT, tu as une erreur ?

leaden prism
#

curl: (7) Failed to connect to 0.0.0.0 port 5050 after 0 ms: Connection refused

glass cargo
#

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

leaden prism
#

Je viens de voir ya une erreur que j'avais pas avant

glass cargo
#

Oulà

#

Alors là j’ai aucune idée d’où ça peut venir sue

leaden prism
#

Ok pg je vais regarder sa de mon côté merci pour l'aide

glass cargo
#

De rien

#

Tiens moi au courant si t’arrive à trouver l’origine du problème myman

leaden prism
#

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

glass cargo
#

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
leaden prism
#

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

glass cargo
#

Nop ça timeout

#

C’est quoi ta configuration nginx ?

glass cargo
#

Y’a pas l’API là

leaden prism
#

C'était un prblm de firewall

glass cargo
#

Ah x)

leaden prism
#

Bon maintenant objectif https

floral bolt
#

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

leaden prism
#

Je vais me renseigner 👍

normal lichen
#

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 !

glass cargo
#

Il s'agit de Context Menus (en l'occurence, de type User)

normal lichen
#

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 !

glass cargo
foggy ledge
#

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 });
  }
glass cargo
foggy ledge
#

ses un messageCreate

#

est non une interaction

glass cargo
#

Oui j'avais remarqué

#

Donc ton message ne peut pas être ephémère 😉

foggy ledge
glass cargo
foggy ledge
#

pas faux mai le meilleur ses quoi

glass cargo
#

Utiliser les interactions

foggy ledge
glass cargo
#

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é

foggy ledge
#

j'ai tous changé en interactionCreate

glass cargo
#

Clairement, aujourd'hui faire un nouveau bot en commandes préfixe ne sert à rien 😉

glass cargo
foggy ledge
#

mainteant

#

problème

#

commande pu fonctionne l

glass cargo
foggy ledge
#

no please

glass cargo
#

Il s'agit pas juste de renommer l'évènement kapp

foggy ledge
#

noon mais j'ai tous changé

glass cargo
#

Il faut que tu revois pleins de choses

foggy ledge
glass cargo
#

¯_(ツ)_/¯

foggy ledge
glass cargo
#

Je t'ai pas obligé à utiliser les interactions

foggy ledge
glass cargo
#

Seulement tu ne pourras pas envoyer des messages éphémères

foggy ledge
#

help ME

#

agtt

#

@glass cargo

#

il faut installer une extension en plus car meme avec d'autre interactionCreate sa marche pas

glass cargo
#

Non pas du tout

foggy ledge
#

j'utilise GatewayIntentBits

#

pour le client

glass cargo
#

Quel est le rapport ?

foggy ledge
#

jsp

#

mais sa me souel

ancient sonnetBOT
#

La réponse a été envoyé dans #bots-commands

foggy ledge
#

bonsoir

#

i have problem

dire latch
foggy ledge
#

alors plutot une question

#

comment se nomme le truc server l'option genre comment faire

dire latch
foggy ledge
#

2s

dire latch
#

Euh jsp du tout

foggy ledge
#

ok je test

#

merci 🙂

dire latch
#

J'utilise pas cette façon de faire mdr

#

En tout cas, celui que tu as montrer et que tu as supprimés xd

foggy ledge
#

reussi

#

je t'aime (façon ami pbien sur je suis pas humhum)

dire latch
#

Mdrr

#

Np

cursive sail
noble mountain
#

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 ?

keen narwhal
#

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

queen ocean
noble mountain
#

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 ?

noble mountain
#

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

noble mountain
foggy ledge
#

hello j'avais une question

#

mon bot posséde des commands

#

que j'aai supp mais elle reste affiché comment faire ?

noble mountain
#

Comment ça ?

foggy ledge
#

ses deux commande ne sont pus accésible "supp"

noble mountain
#

Jamais eu spécialement ce soucis après peut-être le cache aussi

foggy ledge
#

je peux pas

#

puisque il existe pas

noble mountain
#

Ta redem le bot ?

foggy ledge
noble mountain
#

passe le lien en pm je test voir si ils sont affichés pour moi stv

foggy ledge
#

ok

noble mountain
#

Mais normalement ça s'enlève tout de suite

queen ocean
#

cad ?

noble mountain
#

@queen ocean

#

ça en gros

#

J'ai mis le nom scuse moi je supprime après stv

queen ocean
glass cargo
#

Tu dois sûrement utiliser add plutôt que set

#

Ou édit je sais plus ce que c’est exactement

grizzled agate
dire latch
#

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,
};
glass cargo
dire latch
#

Relook 🙂

glass cargo
#

x)

dire latch
#

C'est bien comme ça ducoups ? Xd

#

@glass cargo

#

Eh jvous vois ceux qui réagisse 👀 😂

glass cargo
#

Yep

#

Fin à voir dans tes fichiers

dire latch
#

Jte montre

#

J'ai ceci @glass cargo:

const { loadContextMenus } = require("./loaders/loadContextMenus.js");
["commands", "slash", "contextmenus"].forEach(x => client[x] = new Collection());
loadContextMenus(client);
near timber
dire latch
glass cargo
dire latch
#

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;
    },
};
glass cargo
#

Tu as aussi des commandes slash sur ce bot ?

near timber
glass cargo
#

Lis la conversation myman

near timber
#

ah ...

#

j'ai pas vu deso

dire latch
#

Jte jure, sa lis pas les convs xd

glass cargo
#

Je pense savoir d’où vient le pb

dire latch
glass cargo
#

On est d’accord, sur Discord même après avoir fait CTRL + R, les context menus ne s’affichent pas ?

near timber
#

vous me conseillez quel site pour apprendre les codes ? perso on ma recommander HTML

glass cargo
near timber
glass cargo
dire latch
glass cargo
#

C’est comme si tu fermais et réouvrais sans passer par le discord updater

dire latch
glass cargo
#

😂

#

Oh le bordel

glass cargo
near timber
#

je savais même pas mdr

dire latch
dire latch
glass cargo
#

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

dire latch
#

Euh, pour les slash ouais

near timber
#

vous me conseillez quel site pour apprendre à codé svp

glass cargo
near timber
#

ok merci

dire latch
#

Tu es dispo vocal ou pas ? @glass cargo

glass cargo
dire latch
queen ocean
#

@dire latch tu utilises discordjs ?

queen ocean
dire latch
#

Oui mais j'ai pas envie moi 😦 Xd

#

Pour ça que je demande de l'aide

queen ocean
dire latch
#

Euh non, mais je préfère faire un truc fait par moi même

glass cargo
queen ocean
#

Si tu utilises déjà sheweny t'aura facile a switch et tu vas d'office kiffer les changements

dire latch
#

J'utilise aucun des deux

glass cargo
#

C’est plus optimisé ? Parce que quand jsuis passé à sheweny mon bot a fait x2 en conso de ram

glass cargo
#

Il est à combien là @ancient sonnet ?

queen ocean
#

Il est encore sur sheweny lui KaPOP

#

Ca fais très longtemps que je l'ai pas update

glass cargo
#

Avec battles games je peux pas vraiment comparer XD

queen ocean
#

Battles game est aussi très vieux KaPOP

glass cargo
#

Y’a 90 utilisateurs sur le miens 😂

queen ocean
#

Pour le moment j'ai que les 2 bots de Instant Gaming avec Sapphire

glass cargo
queen ocean
dire latch
#

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 🤔

glass cargo
dire latch
glass cargo
#

Ça permet de copier les clés/valeurs d’un object dans un autre ou les valeurs d’un array dans un autre

queen ocean
#

Mais ouais quand j'aurais le temps faudrait que je redev de 0 @ancient sonnet et @terse geyser

dire latch
glass cargo
#

Je vais me pencher sur sapphire 👀

#

Même si j’ai un peu la flemme

queen ocean
glass cargo
#

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 kapp

#

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 😂

queen ocean
dire latch
#

Ah ouais, ta fait à la rache ton bot xd

glass cargo
#

Changer le type ShewenyClient dans tous les fichiers, je t’en parle même pas

glass cargo
glass cargo
#

Typescript myman

#

Tous mes fichiers sont typés avec sheweny

#

Donc retirer sheweny = modifier tous les fichiers

queen ocean
#

haaaa okok

#

Je fais pas de TS perso donc osef KaPOP

dire latch
vocal obsidian
#

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.

glass cargo
queen ocean
#

Surement que je testerais un jour

desert riverBOT
glass cargo
queen ocean
dire latch
# glass cargo Tu change le type

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 🤔

dire latch
#

@glass cargohelp pls xd

desert riverBOT
dire latch
#

?

#

@proven craneCpour moi que tu as mis ça ?

proven crane
#

Nan je faisais un test désolé x)

dire latch
#

Ok

dire latch
glass cargo
#

?

#

Nan

#

C’est un nombre le type

dire latch
#

Ah

glass cargo
dire latch
#

Ah oui ok, j'avais pas compris mdr

#

Sa fonctionne nickel, merci 🙂 @glass cargo

#

Tu gagnes: 0.000000000000000001€

glass cargo
#

Ah nickel

glass cargo
foggy ledge
#

bonsoir

#

ducoup pour la réponse

#

nolhan j'ai réussi

#

j'ai juste réinvite le bot

cyan iron
steep gulch
#

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.

rocky oar
# steep gulch Hey ! Je débute l'apprentissage de ES6+ et j'ai découvert récemment les arrows f...

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 KappaCringe

rocky oar
#

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

steep gulch
rocky oar
steep gulch
rocky oar
steep gulch
#

Objectif freelance donc oui pas trop le choix de me former de mon côté !

rocky oar
#

Bon courage dans ce cas 👍

steep gulch
rocky oar
rocky oar
#

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é

steep gulch
rocky oar
#

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 🤔

floral bolt
#

Tu bosses chez qui ?

steep gulch
rocky oar
steep gulch
#

Stylé

floral bolt
#

Cool !

solid wedge
#

bonjour j'ai un probleme avec mon system de modmail

#

quand j'envoie un message privée a mon bot absolument rien ne ce passe

unborn tangle
#

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] }```
dire latch
#

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
        };
    };
};
glass cargo
#

Mais pas de là dcp

dire latch
glass cargo
#

Moi non plus x)

dire latch
#

On est 2, bienvenue xd

dire latch
# glass cargo ça vient forcément de ton code ça, parce que si ça venait de discord, ça serait ...

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

glass cargo
#

Utilise la recherche pour essayer de voir que'est-ce qui renvoie ce message 😉

dire latch
#

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 🤔

glass cargo
#

yep je suppose

dire latch
#

Pas ça xd @glass cargo 😦

#

Mtn j'ai:

#

Ah ba c'est bon xd

timid loom
# unborn tangle Salut! !!!!! Je rencontre un problèmes qui fait crash mon bot plusieur heurs apr...

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

unborn tangle
autumn tendon
#

On peut faire stream un bot ou pas ?

queen ocean
autumn tendon
queen ocean
keen narwhal
#

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

foggy ledge
#

quelq'un pour m'aider ?

buoyant terrace
#

bonjour, quelqu'un pour m'aider à faire un système de logs multi-guilds

#

please

unborn tangle
timid loom
timid loom
#

Tu peux mettre un timeout plus gros que 30000 ms aussi (genre 3600000ms pour 1h)

unborn tangle
#

Ahhhh ok ok je vois je vais faire ça merci en tous cas te ton aide

unborn tangle
#

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?

unborn tangle
unborn tangle
dire latch
#

messageCreate @unborn tanglesi jamais

north lintel
#

Bonsoir, j'essais d'installer PM2 mais j'ai une erreur.
On pourrait m'aider ?

unborn tangle
#

Le problèmes le messageCreate c'est que ça prend les message sur le discord pas en M P avec le bot

unborn tangle
#

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

unborn tangle
dire latch
#

Essaye de pas lancer en debug

unborn tangle
#

Vz je try

dire latch
#

Sinon, jsp 🤔

unborn tangle
cursive sail
#

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"

plush lava
glass cargo
#

Y'a une whitelist des commandes que tu peux utiliser je crois

plush lava
#

Alors fun fact ça le fait aussi sur cmd et power shell

#

Vscode ne fait que reprendre le terminal de windows au final

glass cargo
#

Oui mais vscode a par défaut une whitelist par dessus

#

Ce n'est peut-être pas elle qui agit ici, mais elle existe 👀

timid loom
queen ocean
#

Première fois que j'entend ca aussi

glass cargo
#

Ah

#

Peut-être que je confond alors

queen ocean
violet knot
#

pourtant j'utilise vscode depuis 2016

keen narwhal
#

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

sage shoal
#

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```
hidden hinge
sage shoal
hidden hinge
#

montre ton code

sage shoal
#

alors ? @hidden hinge

hidden hinge
sage shoal
#

je dois mettre quoi

hidden hinge
#

quand t'ouvres ton dossier node_modules il est dedans ?

#

si oui tu copie son relative path et tu le colles dans le require

sage shoal
#

je dois chosir quoi je suis dans le folder la

#

@hidden hinge

violet knot
#

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é

glass cargo
#

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

cursive sail
# 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 ?",
};
cursive sail
#

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

sage shoal
#

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

next juniper
glass cargo
next juniper
glass cargo
#

Mais le problème vainait du fait qu'il a du faire node main au lieu de node main.js

merry inlet
glass cargo
#

Ah shit

#

Désolé Sébastien dcp

plush lava
#

Sébastien en a eu marre et à quitté kapp

glass cargo
noble mountain
#

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;
        }
    },
};
normal lichen
#

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 !

velvet iron
normal lichen
velvet iron
#

Utilise React Developer Tools pour identifier plus facilement les erreurs et leur emplacement précis

normal lichen
#

merci beaucoup je comprend mon erreur et j'ai réussi à la corriger

velvet iron
echo oxide
#

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 pepecry

echo oxide
glass cargo
#

Tu peux m’envoyer ton vercel.json ?

echo oxide
glass cargo
#

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

echo oxide
#

ah ok je vais test merci

glass cargo
#

Faut que tu rajoute le rewrites

echo oxide
#

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)

amber plinth
#

banjours les amis je suis un debutant sur react et j'ai besoin de quelqu' un pour m'aider avec mon code

normal lichen
quasi river
#

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 !

glass cargo
quasi river
glass cargo
quasi river
#

Oui mais Django c'est en python, mais ya du js aussi

#

La ma question se basait sur du js du coup

glass cargo
#

Ah autant pour moi, je connaissais pas

quasi river
#

Pour afficher l'alerte et la supprimer au bout d'un certain temps

glass cargo
#

Et j'ai pas compris ce que tu voulais faire

#

Tu veux faire un popup personnalisé ?

#
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 
}
bright dawn
#

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

bright dawn
#

(Problème réglé !)

hollow wolf
#

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 !

queen ocean
hollow wolf
#

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)

pale jackal
#

tu utilise quel version de discord.js ?

hollow wolf
#

Je viens de l'installer donc ça doit être la dernière

keen narwhal
#

vous savez comment on fait pour mettre le https sur sveltkit ?

quasi river
#

est-ce que vous savez s'il y a un moyen de récupérer les variables de session dans le js ?

steep gulch
#

En php vers JS ?

quasi river
#

je connais pas encore ce langage ^^"

#

mais juste dans le js, c'est pas possible de récupérer la session ? c'est chiant 😢

steep gulch
#

Je ne mis connais pas assez sur Django pour te dire désolé

quasi river
#

ah pas de soucis tkt merci quand mm

noble mountain
# quasi river est-ce que vous savez s'il y a un moyen de récupérer les variables de session da...

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
quasi river
#

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 !

leaden prism
#

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>```
leaden prism
#

okay j'ai reussi en sortant le useFetch de la fonction

keen narwhal
#

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] });
  }
});```
timid loom
keen narwhal
keen narwhal
timid loom
timid loom
hollow wolf
ancient sonnetBOT
#
Citation du message de mots_encres#0 posté dans #javascript-typescript

quoteStart 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 quoteEnd

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

cursive sail
hollow wolf
# cursive sail Oep ?

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

cursive sail