#javascript-typescript
1 messages · Page 26 of 1
ah, et on fait ça comment ? J'ai déjà créer un fichier tsconfig.json
et typescript fonctionne, c'est juste l'utilisation de MongoDB avec l'importation depuis un fichier TypeScript qui fonctionne pas
oui j'avais fait tout ça avant
@left relic Bah là jsp du coup
je vais tester ligne par ligne pour voir où est-ce que l'erreur ce situe, mais déjà sans le code en rapport avec MongoDB ça fonctionne
@torn fog bon bah ce fut rapide, c'est quand je fais javascript import { MongoClient, ServerApiVersion } from 'mongodb'; que ça plante
Salut @slim anvil merci beaucoup de m'avoir parler de pinia, ça m'a complètement sauver la vie ! J'ai fais tout ce que je voulais faire avec et c'est super pratique comme tu l'avais dis !
Je suis à la toute dernière, mais étape ou je bloque :
Quand l'utilisateur valide le formulaire d'inscription, un mail est envoyé à la personne pour confirmer son inscription
Donc ça me force à quitter le page pour aller sur une nouvelle page, mais le soucis c'est qu'à cause de ça, le store se vide
De base je voulais faire une requête comme ça :
const { error } = await db.from('users').update({is_registered: true}).eq('email', emails.value);
Mais le problème c'est que du coup emails.value est undefined
Est ce que y'a un moyen de garder la value dans un store même en quittant et revenant sur le site ? 
Oui ça s’appelle du persistent store c’est à toi de le mettre en place via ton local storage ou autre
ok, c'est toujours avec pinia ?
ah euh
alors oui et non tu dois intégrer ton propre système à ton store en gros

tu vas juste venir checker si tu as un storage et si oui tu set un default value
Un peu comme ça ?
oui, peut être qu’il a intégré un persistent depuis donc encore plus facile
pas utilisé depuis facilement 2 ans et +
deja pour sauvegarder tes values, sois tu watch sois tu subscribe
C'est quoi la diff entre les deux ?
ok
Est-ce vous savez pourquoi quand je fais "ts-node src/mongo_import" ça exécute mon fichier "mongo_import.ts" sans prendre en compte les modifications que j'ai fait dessus (et que j'ai enregistré) ? J'ai recharché VsCode, le terminal et j'ai toujours le même problème
et j'ai essayé de renommé mon fichier mais ça fonctionne plus du tout dans ce cas
hey @queen ocean comment vas tu ? Je sais que tu utilises Sapphire depuis un petit moment, je viens de m'y mettre y'a 1h et j'aimerais savoir comment faire des options à une slash command, je comprends pas trop comment faire avec ça : options: ['size'] (je me suis pencher sur la doc)
De plus y'a absolument rien en tutoriel sur Sapphrire sur Ytb, triste tout ça
Tu parles de ces options la ?
Ta utilisé la function registerApplicationCommands pour créer la slash commande déjà ?
tqt
mmh j'ai fais ça :
import { Command } from '@sapphire/framework';
export class PingCommand extends Command {
public constructor(context: Command.Context, options: Command.Options) {
super(context, {
...options,
name: 'ping',
aliases: ['pong'],
description: 'ping pong',
});
}
}
J'ai naïvement voulu faire options: [{...}] x)
check cette page https://www.sapphirejs.dev/docs/Guide/commands/application-commands/application-command-registry/registering-chat-input-commands
Ah ok je vois mais ça du coup c'est un code à mettre préférablement dans l'index ?
🤷♂️
aaaaa
Ah oui ok je vois
Non mais je savais hein
ça à l'air pas mal quand même
Euh juste @queen ocean Le this.description correspond à ça M :
Jpense ouais, perso je met pas de description dans le constructor, je met direct dans le register
Ok je vois merci
Bonsoir 
Quand je lance mon code en local tout marche mais une fois que je l'hébergé sur PufferPanel (un panel comme Ptérodactyle) j'ai une erreur et je ne sais pas comment la régler quelqu'un peut m'aider ?
const DiscordRPC = require('discord-rpc');
const config = require('../config.json');
const clientId = config.clientId;
DiscordRPC.register(clientId);
const rpc = new DiscordRPC.Client({ transport: 'ipc' });
rpc.on('ready', () => {
console.log('Connecté au client RPC Discord!');
rpc.setActivity({
details: config.details,
state: config.state,
largeImageKey: config.largeImageKey,
//largeImageText: config.largeImageText,
//smallImageKey: config.smallImageKey,
//smallImageText: config.smallImageText,
startTimestamp: new Date(),
instance: config.instance,
buttons: [
{
label: config.buttons[0].label,
url: config.buttons[0].url,
},
],
});
});
rpc.login({ clientId }).catch(console.error);
Erreur :
Error: Could not connect
at Socket.onerror (/var/lib/pufferpanel/servers/60ecc723/node_modules/discord-rpc/src/transports/ipc.js:32:16)
at Object.onceWrapper (node:events:629:26)
at Socket.emit (node:events:514:28)
at emitErrorNT (node:internal/streams/destroy:151:8)
at emitErrorCloseNT (node:internal/streams/destroy:116:3)
at process.processTicksAndRejections (node:internal/process/task_queues:82:21)
Bonsoir, est-ce que quelqu'un aurait un exemple de petit projet react qui utilise mongoose ? J'aimerais juste avoir un exemple fonctionnel pour mettre/récupérer des données dans ma bdd MongoDB avec mongoose
Normal, tu utilise DiscordRPC, mais Discord n'est pas lancé sur la machine qui host le pterodactyl x)
Ah c’est pour ça ! Merci je ne savais pas (même si ça parait logique mdrrr) encore merci 🙏
Heyyy 🙂 J'essaie d'utiliser la librairie moveable, ce qui fonctionne bien, néanmoins quand j'essaie de lui mettre une limite (un container, dans lequel l'objet peut être utilisé et pas sur toute la page), déjà ça ne change rien je peux le mettre ou je veux et en plus il freeze des fois et bloque à certains endroits randoms ...
On est d'accord que c'est cette option que je dois utiliser ?
Et spécifier le div dans lequel je veux travailler ?
Salut j'ai ça comme problème dans ma console de mon bot discord qui peux m'aider
DiscordAPIError[50035]: Invalid Form Body application_id[NUMBER_TYPE_COERCE]: Value "undefined" is not snowflake. at handleErrors (/home/container/node_modules/@discordjs/rest/dist/index.js:640:13) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async SequentialHandler.runRequest (/home/container/node_modules/@discordjs/rest/dist/index.js:1021:23) at async SequentialHandler.queueRequest (/home/container/node_modules/@discordjs/rest/dist/index.js:862:14) at async REST.request (/home/container/node_modules/@discordjs/rest/dist/index.js:1387:22) at async /home/container/main.js:53:16 { requestBody: { files: undefined, json: [ [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object], [Object] ] }, rawError: { message: 'Invalid Form Body', code: 50035, errors: { application_id: [Object] } }, code: 50035, status: 400, method: 'PUT', url: 'https://discord.com/api/v10/applications/undefined/commands' }
Svp urgent
Tu essyes d'enregistrer des commandes pour une app qui n'existe pas, en l'occurrence l'id fourni dans le code quelque part est undefined, donc tu as du te tromper dans une variable qq part (cf: 'https://discord.com/api/v10/applications/undefined/commands')
j'ai la même erreur c'est a dire?
?
@queen ocean tu t’y connais en js
?
@queen ocean
Car pourtant je précisais bien correctement le bot de mon côté
Sans code on pourras pas t'aider :/
J’le mettrais ce soir alors :/
Ta quoi dans ton main.js ?
J'ai ça
const fs = require('node:fs');
const path = require('node:path');
const { REST, Routes } = require('discord.js');
const { Client, Collection, Events, IntentsBitField } = require('discord.js');
const { Player } = require('discord-player');
require('dotenv').config();
const intents = new IntentsBitField(3276799)
const client = new Client({ intents })
client.commands = new Collection();
client.player = new Player(client, {
leaveOnEnd: true,
leaveOnEmpty: true,
initialVolume: 60,
ytdlOptions: {
quality: "highestaudio",
highWaterMark: 1 << 25
},
})
const commands = [];
// Grab all the command files from the commands directory you created earlier
const foldersPath = path.join(__dirname, 'commands');
const commandFolders = fs.readdirSync(foldersPath);
for (const folder of commandFolders) {
// Grab all the command files from the commands directory you created earlier
const commandsPath = path.join(foldersPath, folder);
const commandFiles = fs.readdirSync(commandsPath).filter(file => file.endsWith('.js'));
// Grab the SlashCommandBuilder#toJSON() output of each command's data for deployment
for (const file of commandFiles) {
const filePath = path.join(commandsPath, file);
const command = require(filePath);
if ('data' in command && 'execute' in command) {
client.commands.set(command.data.name, command);
commands.push(command.data.toJSON());
} else {
console.log([WARNING] The command at ${filePath} is missing a required "data" or "execute" property.);
}
}
}
// Construct and prepare an instance of the REST module
const rest = new REST().setToken(process.env.TOKEN);
// and deploy your commands!
(async () => {
try {
console.log(`Started refreshing ${commands.length} application (/) commands.`);
// The put method is used to fully refresh all commands in the guild with the current set
const data = await rest.put(
Routes.applicationCommands(process.env.clientId),
{ body: commands },
);
console.log(`Successfully reloaded ${data.length} application (/) commands.`);
} catch (error) {
// And of course, make sure you catch and log any errors!
console.error(error);
}
})();
const eventsPath = path.join(__dirname, 'events');
const eventFiles = fs.readdirSync(eventsPath).filter(file => file.endsWith('.js'));
for (const file of eventFiles) {
const filePath = path.join(eventsPath, file);
const event = require(filePath);
if (event.once) {
client.once(event.name, (...args) => event.execute(...args));
} else {
client.on(event.name, (...args) => event.execute(...args));
}
}
client.login(process.env.TOKEN);
/*
process.on("unhandledRejection", (reason, p) => {
console.log(" [AntiCrash] :: Unhandled Rejection/Catch");
console.log(reason, p);
});
process.on("uncaughtException", (err, origin) => {
console.log(" [AntiCrash] :: Uncaught Exception/Catch");
console.log(err, origin);
});
process.on("uncaughtExceptionMonitor", (err, origin) => {
console.log(" [AntiCrash] :: Uncaught Exception/Catch (MONITOR)");
console.log(err, origin);
});
process.on("multipleResolves", (type, promise, reason) => {
console.log(" [AntiCrash] :: Multiple Resolves");
console.log(type, promise, reason);
});
*/
Envoie en code block stp
Pour envoyer du code sur Discord c'est très simple !
||Il vous faut d'abord du code... Et deux cubes de Kubor !
||
En vrai, il faut utiliser les blocs de code de Discord :
Pour cela entoure ton code de ceci : ```
Par exemple :
```js
console.log("Salut Creators Area !")
```
Le résultat sera le suivant :
console.log("Salut Creators Area !")
```*Si tu es sur téléphone, tu ne verras pas le bloc de code*
> *TIPS: Si ton code est trop long, tu peux le coller sur [pastebin.com](https://pastebin.com/) et envoyer le lien par message.*
const fs = require('node:fs');
const path = require('node:path');
const { REST, Routes } = require('discord.js');
const { Client, Collection, Events, IntentsBitField } = require('discord.js');
const { Player } = require('discord-player');
require('dotenv').config();
const intents = new IntentsBitField(3276799)
const client = new Client({ intents })
client.commands = new Collection();
client.player = new Player(client, {
leaveOnEnd: true,
leaveOnEmpty: true,
initialVolume: 60,
ytdlOptions: {
quality: "highestaudio",
highWaterMark: 1 << 25
},
})
const commands = [];
// Grab all the command files from the commands directory you created earlier
const foldersPath = path.join(__dirname, 'commands');
const commandFolders = fs.readdirSync(foldersPath);
for (const folder of commandFolders) {
// Grab all the command files from the commands directory you created earlier
const commandsPath = path.join(foldersPath, folder);
const commandFiles = fs.readdirSync(commandsPath).filter(file => file.endsWith('.js'));
// Grab the SlashCommandBuilder#toJSON() output of each command's data for deployment
for (const file of commandFiles) {
const filePath = path.join(commandsPath, file);
const command = require(filePath);
if ('data' in command && 'execute' in command) {
client.commands.set(command.data.name, command);
commands.push(command.data.toJSON());
} else {
console.log(`[WARNING] The command at ${filePath} is missing a required "data" or "execute" property.`);
}
}
}
// Construct and prepare an instance of the REST module
const rest = new REST().setToken(process.env.TOKEN);
// and deploy your commands!
(async () => {
try {
console.log(`Started refreshing ${commands.length} application (/) commands.`);
// The put method is used to fully refresh all commands in the guild with the current set
const data = await rest.put(
Routes.applicationCommands(process.env.clientId),
{ body: commands },
);
console.log(`Successfully reloaded ${data.length} application (/) commands.`);
} catch (error) {
// And of course, make sure you catch and log any errors!
console.error(error);
}
})();
const eventsPath = path.join(__dirname, 'events');
const eventFiles = fs.readdirSync(eventsPath).filter(file => file.endsWith('.js'));
for (const file of eventFiles) {
const filePath = path.join(eventsPath, file);
const event = require(filePath);
if (event.once) {
client.once(event.name, (...args) => event.execute(...args));
} else {
client.on(event.name, (...args) => event.execute(...args));
}
}
client.login(process.env.TOKEN);
/*
process.on("unhandledRejection", (reason, p) => {
console.log(" [AntiCrash] :: Unhandled Rejection/Catch");
console.log(reason, p);
});
process.on("uncaughtException", (err, origin) => {
console.log(" [AntiCrash] :: Uncaught Exception/Catch");
console.log(err, origin);
});
process.on("uncaughtExceptionMonitor", (err, origin) => {
console.log(" [AntiCrash] :: Uncaught Exception/Catch (MONITOR)");
console.log(err, origin);
});
process.on("multipleResolves", (type, promise, reason) => {
console.log(" [AntiCrash] :: Multiple Resolves");
console.log(type, promise, reason);
});
*/
Voila
Ta bien défini la variable clientId dans ton fichier .env ?
Oui
ajoute un console.log pour vérif
ligne 8
const client = new Client({ intents: intents });
Sa m'as ghostping 👀
Oui excuse moi c'est moi je penser que ça fonctionner mais toujours pas
Sa t'as changer l'erreur, où toujours la même ?
toujours pareil
Essaye de faire un
console.log(process.env.TOKEN)
Est-ce que tu as tenté de log process.env.clientId comme t'a demandé Zaros ?
Au pire je peux pas te donner les accès a ma machine et tu regarde ?
Hey, quelle est le problème ?
Bonjour, je viens de me lancer dans l'apprentissage de Sequelize et j'ai cette erreur que je ne comprend pas : code: 'ER_ACCESS_DENIED_ERROR', errno: 1045, sqlState: '28000', sqlMessage: "Access denied for user ''@'localhost' (using password: YES)", sql: undefined }, original: Error: Access denied for user ''@'localhost' (using password: YES) Sauriez vous à quoi elle est dûe ? Merci d'avance pour votre réponse.
t'as pas mis d'utilisateur pour ta db
Normalement si tout est bon
fs.readdirSync("./src/handlers").forEach((handler) => {
require(`./handlers/${handler}`)(client);
});```
Quelqu'un sait comment je pourrais réécrire ça en ESModules?
Il me semble que déjà, je dois changer le require en import.
fs.readdirSync("./src/handlers").forEach((handler) => {
import(`./handlers/${handler}`)(client);
});```
Ensuite, je pense que (handler) et (client) ne peuvent pas être utilisés en ESModules mais je ne sais pas par quoi les changer.
Oublie pas ton .default si tu export default
Ça va prendre la classe par défaut de ton fichier
Salut ici
J'ai un petit soucis avec mon cmd
dès que je fais node index ça close le cmd sans mettre d'erreur
De base c'est un truc pour on un bot discord de musique mais ça veut pas marcher
ça marchait puis ça a arrêté de marcher
quelqu'un peut m'aider ?
met dans le terminal de vs code au pire
En gros pour plus d'explication j'utilise un res.redirect et après un res.send mais j'aimerai à la fin de mon code faire un res.cookie
const path = require('path');
require("dotenv").config({ path: path.join(__dirname, '.env')});
const express = require('express');
const router = express.Router();
const axios = require("axios");
const { MongoClient } = require('mongodb');
const mongoClient = new MongoClient(process.env.MONGODB_CALENDAR);
const {sign} = require("jsonwebtoken");
router.get('/', async function(req, res, next) {
if(!req.query.code) return res.redirect(process.env.DISCORD)
res.sendFile(path.join(__dirname + '/projet/index.html'));
const {code} = req.query;
const params = new URLSearchParams({
client_id: process.env.DISCORD_CLIENT_ID,
client_secret: process.env.DISCORD_CLIENT_SECRET,
grant_type: "authorization_code",
code,
redirect_uri: process.env.DISCORD_REDIRECT_URI
})
const headers = {
"Content-Type": "application/x-www-form-urlencoded",
"Accept-Encoding": "application/x-www-form-urlencoded"
};
try {
const response = await axios.post("https://discord.com/api/oauth2/token",params, {headers});
console.log(response);
if(!response) return res.redirect(process.env.DISCORD)
const userResponse = await axios.get("https://discord.com/api/users/@me", {
headers: {
Authorization: `Bearer ${response.data.access_token}`,
...headers
}
});
const {id, username} = userResponse.data;
if(!id) return res.redirect(process.env.DISCORD)
console.log(userResponse.data);
await mongoClient.connect();
const db = mongoClient.db("killerjumperbot");
const collection = db.collection("calendrier");
const filteredDocs = await collection.find({ userId: id }).toArray();
if(filteredDocs[0]){
await collection.updateOne({ userId: id }, {
$set: {
username: username
}
});
}
else {
await collection.insertMany([{userId: id, username: username}]);
}
const token = await sign({sub: id}, process.env.JWT_SECRET, {
expiresIn: "7d"
});
res.cookie('token', token).send('cookie set');
res.redirect("https://www.killerjumper.fr/projet/");
} catch(err){
console.log(err);
res.redirect(400, "https://www.killerjumper.fr/projet/",{Error:'block'});
}
});
module.exports = router;
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
Réglé 😉
Bonsoir, je rencontre un nouveau problème.
En faites j'aimerai faire un système de connexion avec Discord donc Oauth2, je l'ai fini mais j'arrive pas à passer de ce que j'ai fait en js à html.
En gros, j'ai un fichier qui vérifie si la personne a un code dans le l'adresse url.
J'ai voulu faire un système de token en cookie pour mémoriser les données sur 7 jours. Mais je rencontre un problème à cet endroit.
J'ai réussi à créer le cookie et à la récupérer mais une fois avoir récupérer le cookie, j'ai accès à mon userId mais comment rentrer dans ma base de donnée mongo DB tout en étant sécurisé et en même temps dans un fichier html. je n'arrive pas à trouver de solution à cela.
Merci de votre aide.
Salut ! Je me posais la question de comment on peut faire ce genre de chose ? (C'est juste un exemple mais je voudrait bien pouvoir crée ce gerne de catégorie avec mes commandes slash).
PS : Je sais crée une commande slash classique mais pas avec une catégorie comme target / amount etc...
:class: SlashCommandUserOption (extends ApplicationCommandOptionBase)
Salut ! Je suis supra nul en node JS, et pour l'école je dois faire un projet qui combine
- Vue.JS (avec Vite)
- Typescript
- Express
J'ai passé toute la matinée à chercher des tutos pour savoir comment faire, mais ça me rend fou ! Il y a 3000 différentes manière de faire la même chose, et les tutos semblent tous se contredire ! Un coup c'est le front qui est en Typescript, un coup c'est le back, mais jamais tout... 
Est-ce que quelqu'un aurait un tutoriel qui répondrait à mon besoin ? Ou un projet template sur lequel je pourrais travailler ?
Je connais un peu TS, je développe les scripts de mon site avec, mais c'est sur Laravel (c'est donc bcp plus simple). En cours on a simplement vu comment faire un site avec express, mais très rapidement.
Merci d'avance pour votre aide !
Quand tu lances l’installation de vite il te demande ce que tu préfères 🙂
Et pour express n’importe quel tuto de 2010 sera bien 🙂
oui mais il n'y avait pas que ça
j'ai fusionné un ancien tp avec le projet vite et c'est bon x)
Pour la prochaine fois tu as juste à chercher sur internet quel frame work fait quoi. La dans ton cas (bon je connais pas vuejs) mais en ayant cherché j'ai vu que c'était utilisé pour le front. Dans la majeure partie des cas express est utilisé pour le back, et ensuite tu découpe ton projet avec ce que tu dois faire.
et typescript c'est juste du js typé compatible avec a peu près tout (vuejs je ne sais pas mais je suppose que oui).
Donc tu vois pas si compliqué que ça
c'est facile à dire quand tu sais comment utiliser node js et son environement
ça n'est pas la même chose quand t'es dev php et que le js que tu fais est cantonné aux balises scripts (même si c'est de moins en moins le cas) :3
j'ai fini par faire ce que tu viens de dire https://github.com/SofianeLasri/metacafe
oui je comprends, tu peux procéder pareil pour trouver ce dont quoi tu as besoin. l’avantage c’est que node js est bien fournit en terme de documentation
php c nuul 
Ok snox 
😄
Bonjour, je viens de me lancer dans l'apprentissage de Sequelize et j'ai cette erreur que je ne comprend pas : code: 'ER_ACCESS_DENIED_ERROR', errno: 1045, sqlState: '28000', sqlMessage: "Access denied for user ''@'localhost' (using password: YES)", sql: undefined }, original: Error: Access denied for user ''@'localhost' (using password: YES) Sauriez vous à quoi elle est dûe ? Merci d'avance pour votre réponse.
Mon utilisateur est bien renseigné
C'est au moment d'acceder aux données que ça me pose problème
Rien n'avoir avec ton Sequelize pour le coup, c'est ton serveur SQL qui n'accepte pas ton utilisateur ou ton mot de passe
Pourtant le mot de passe est bon
Ah oui ton utilisateur n'est pas bien marqué
La ça essayé de se connecter avec un utilisateur vide
Donc ""
Tu sais comment régler le problème ?
Bah avec le code je peux peut être aider
const sequelize = new Sequelize(config.database, config.username, config.password, {
host: 'localhost',
dialect: 'mysql',
port: 3306
});
``` Ca c'est la connexion
Toutes les infos sont bonnes
const news = await News.findAll();
``` La je récupère les news
import { Sequelize, DataTypes } from 'sequelize';
const sequelize = new Sequelize('mysql::memory:')
// Modèles
export const News = sequelize.define('news', {
title: {
type: DataTypes.STRING,
allowNull: false,
},
content: {
type: DataTypes.TEXT,
allowNull: false,
},
});
``` Qui correspondent à ca
Et si tu essaye de console log le config.username
Je parie qu'il est vide
C'est où que t'établie t'a connexion
Car là c'est juste la variable qui contient les infos de connexion
sequelize
.authenticate()
``` Là
Je comprend rien à cette erreur
Ca fait un mois que j'essaie
@grave bronze je t'ai trouvé ce petit tuto https://www.digitalocean.com/community/tutorials/how-to-use-sequelize-with-node-js-and-mysql
Met bien une promise pour la gestion d'erreur etc
Un .then ?
Et la récupération se fait dans un try/catch
Je regarde ton tuto merci
@grave bronze et du coup ça a marché ?
Il faut que je regarde un peu plus en détail
J’avais pas le temps hier
Mais de ce que j’ai vu ça ressemble vachement à ce que j’ai fait
Coucou, j'aimerais avoir votre avis sur le meilleur affichage et la meilleure utilisation ;
En gros j'ai un bot Discord qui check toutes les 30s si le serveur de jeu est en ligne (grâce à gamedig). Si ce n'est pas le cas ou qu'il ne trouve pas le serveur ça renvoie une erreur (via catch()). J'aimerais savoir si pour vous c'est une erreur ou un simple avertissement, sachant que c'est la fonction principale du bot mais que cela ne lui empêche pas d'executer le reste du code, c'est juste l'API qui renvoie aucune données en gros.
TL;DR : Vous préférez au niveau de l'affichage :
- Message d'erreur (en rouge)
- Message d'avertissement (en jaune)
(Debug est juste un test il n'est pas affiché par défaut)
Le mieux serait de pouvoir différencier le timeout d'une erreur
Mais dans tous les cas pour moi il faut le mettre en rouge, c'est une erreur
une erreur cause pas toujours un crash donc je suis d'accord avec wailrone
Je souhaite garder un truc simple à faire et surtout à lire dans le code source. J'essaye d'utiliser un style général pour l'affichage des logs dans la console pour éviter de trop surcharger. Je voulais juste savoir si c'était une erreur ou un avertissement.
Je tiens à préciser qu'en effet, lorsque cette erreur apparait le reste de la fonction n'est pas executé (c'est à dire l'envoi du message dans le salon). Cependant le reste du code indépendant de la fonction continue.
D'ailleurs j'ai fait des fonctions pour chaque type de logs pour appliquer le style correspondant, tu en pense quoi ? Est-ce que c'est une bonne pratique ?
Pour moi c'est une erreur, que le code crash ou pas, donc tu devrais partir sur une ErrorLog
Et sinon les fonctions oui bien sûr c'est une bonne pratique pour uniformiser tes logs c'est le mieux à faire
Après pour moi il manque des choses dans tes logs ( Date, fichier, ligne )
D'après ce que je vois c'est du JS, mais si c'est du Typescript, il vaudrait mieux faire une enum pour les différents niveaux de logs
yes d'acc merci et oui pour les logs là c'est des tests je vais sûrement en rajouter/supprimer. Le code est en JS en effet, TS ce sera peut-être l'année prochaine 🥲
Okay, et hésite pas à faire des fichiers de log aussi
Sépare les fatal / error du reste
Fin c'est ce que je te conseille en tout cas, ça permet de mieux s'y retrouver
Tu veux dire séparer les fonctions de logs dans un autre fichier ?
du style functions.js ou logger.js ?
Non non ! Mettre des logs dans un fichier log
Ah mettre la sortie des logs dans un fichier ?
Moi perso je les trie par dates
Ah oui d'accord
Bon c'est une petite app donc voilà
Là c'est juste un bot de test pour l'instant, je voulais le mettre en open source une fois que je l'aurais retapé mais oui pourquoi pas
Après c'est juste un petit bot donc je sais pas si ça sert 🤔 Peut-être je l'inclurais dans le mode debug (qui est une valeur dans config.json)
Non pour un bot pas besoin de garder les logs
A la limite garde les erreurs dans un fichier et ça suffit
Après si t'utilise pm2 il le fait tout seul 
La dernière fois que j'ai entendu parler d'un bot qui gardait toutes les logs ça a fini à faire un fichier de log qui faisait plusieurs GO 👀
Ah et j'avais pas vu pardon, pour les erreurs fait un console.error
Débiles ils ont tout gardé en un seul fichier
Faut faire plusieurs fichiers comme ça tu peux mettre une limite
Au bout de 100 fichiers ça supprime les plus anciens par exemple, tu vois ? Sinon ton serveur se suicide 
Oui je me doute bien, mais comme je t'ai dit je vois pas trop l'intérêt là pour un bot qui fonctionne uniquement sur un seul fichier index 🥲
ah et c'est quoi la différence ?
entre console log et error?
Alors sur du web ça met une erreur dans la console ( genre comme ça )
Et pour une application Nodejs c'est surtout pour mieux gérer tes erreurs niveau logs toujours pareil
Si t'utilise pm2 par exemple il va différencier les deux il me semble 👀
Mais c'est plus une bonne pratique qu'autre chose
Tout est dit
Ok je vois merci !
@queen ocean Bon j'ai bien avancer sur sapphire c'est assez cool ce machin mais juste, comment on fait pour gérer les intéractions avec des menus/boutons/modals ? Faut créer un dossier interaction comme avec sheweny ou bien ?
🙂
Yep tu dois créer un dossier interaction-handlers au même niveau que ton fichier où tu as créé le client donc si tu créé le client dans src/index.js alors tu dois créer le dossier src/interaction-handlers
Dedans tu peux créer des sous-dossier genre modals, buttons etc si tu veux mais attention tous les fichier du dossier interaction-handlers doivent avoir des noms différents même si ils sont dans 2 sous-dossier différents
Si tu veux renommer le dossier interaction-handlers en interactions :
const { getRootData } = require('@sapphire/pieces')
client.stores.get('interaction-handlers').registerPath(join(getRootData().root, 'interactions'))
🫂
tu m'nargues la
Oui 
Emoji de riche ça
C'est l'argent de CA qui lui paye 
:sad:
Bonjour, j'aimerai savoir comment faire message context menu (voir photo) j'ai suivi un tuto mais cela ne s'affiche pas.
Tu as tegarder le guide de discord.js https://discordjs.guide/interactions/context-menus.html#extracting-data-from-context-menus
Oui j'ai déja fait ca :
mais rien pas d'erreur, ni le context menu
Ton data est grisé il est donc jamais push a l’api de Discord…
Bonjour, comment puis je m'y prendre pour mettre un rôle à tout mon serveur grâce à une commande ? je ne sais pas quelle syntaxe utiliser :)
Loop sur tout les membres et tu leur donne le role
Bonjour
Je me demandais a propos de mon site en react
Esque si j'ai un setInterval qui tourne constamment avec 1ms d'intervalle, mais qui ne fais que vérifier un if sans rien faire, esque ça impacte les performances
Toutes les 1ms ?? Tu fais quoi pour avoir besoin de vérifier tous les 1ms ?
Dans tous les cas à mon avis c'est une erreur de conception 
Mais oui il y aura un impact dans tous les cas, minime ou pas ça dépend de ce que tu vérifies
Je vérifie si une véritable est true ou false
Pour quelle raison ? Donne un peu plus de contexte
enft
verifieFirst a besoin d'un autre composant react mais celui se charge après celui de mon script
donc il marche pas tant que l'autre n'est pas chargé
quand il marche la variable yaUnpremerChap devient true
mais ça affecte l'affichage du site donc je veux que ça marche le plus vite possible pour pas qu'on vois un truc pop d'un coups
Bon je ne connais pas ton projet et je n'ai jamais utilisé React mais je te conseille de régler ton problème plutôt que de le contourner avec un setInterval 
Tu peux soit faire en sorte de charger le composant au bon moment, soit faire en sorte d'envoyer une info à ton composant via par exemple un EventEmitter ( angular, je connais pas l'équivalent avec react )
SInon si t'as la flemme, fait au moins en sorte d'arrêter ton setInterval une fois que la condition est validée
Avec clearInterval()
👍
qu'est-ce que tu veux vérifier toute les 1ms ? Wailrone dit vrai, si tu as tjr le soucis dis moi ^^
Bonjour, j'espère que vous allez bien je viens ici pour demander de l'aide, je suis entrain de créer une sorte de bot indépendant qui quand on lui donne un fichier html il annalyse le code et recupère tout le contenu des balises script, ayant pas la capacité j'ai demandé à ChatGPT mais ça a pas l'air de fonctionner :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Analyseur de Code JavaScript</title>
</head>
<body>
<h1>Analyseur de Code JavaScript</h1>
<input type="file" id="fileInput" accept=".html" />
<button onclick="analyserCode()">Analyser le Code</button>
<div id="resultat"></div>
<script>
function analyserCode() {
var fileInput = document.getElementById('fileInput');
var resultatDiv = document.getElementById('resultat');
var file = fileInput.files[0];
if (file) {
var reader = new FileReader();
reader.onload = function(e) {
var contenuFichier = e.target.result;
var analyse = extraireContenuScript(contenuFichier);
resultatDiv.innerHTML = '<h2>Contenu des balises script :</h2>' + analyse.join('<br>');
};
reader.readAsText(file);
} else {
resultatDiv.innerHTML = '<p>Veuillez sélectionner un fichier HTML.</p>';
}
}
function extraireContenuScript(html) {
var regex = /<script\b[^>]*>([\s\S]*?)<\/script>/g;
var resultats = [];
var match;
while ((match = regex.exec(html)) !== null) {
resultats.push(match[1].replace(/\s+/g, ' ')); // Supprime les retours à la ligne et espaces multiples
}
return resultats;
}
</script>
</body>
</html>
console.log(file); avant ton reader.onload
voir si le fichier est correctement selectionné
J'ai essayé de mon côté ça fonctionne plutôt pas mal
Coucou tout le monde,
Je suis passé du package discord.js 12.5.1 au 14.14.1
Je n'ai pas d'erreur, mais mon code ne fonctionne plus du tout 🥨
Est-ce que, mis a pars la doc, il y aurait un moyen de verifié le why du pourquoi le code ne fonctionne po ?
Btw, voici le code
ainsi que la console
Logged in as 7Time#4078!
index.js:40
CheckAndAssignRole fonctionne
index.js:176
Role assignment check completed.
index.js:58
SendLogsMessage fonctionne
J'ai remarqué que a partir de client.on(presenceupdate), il ne passe pas
il y a eu beaucoup de modification du 12 jusqu'au 14. Je vais y jeter un oeil mais honnêtement vaut mieux tout détruire pour recommencer sur les nouvelles bases ^^
AHhaha effectivement, j'ai peut etre un peu forcé le truc...
Regarde ce que tu peux faire, dans le pire des cas je run mon bot en 1.12 en attendant et je consturit un nouveau en 14.14.1 tout en me jettant par la fenêtre
yeup je suis dessus j'te tiens au jus ^^
Thanks ^^
pour ça je pense que tu n'as pas mi ça:
GatewayIntentBits.GuildPresences,
Dans ton intents.
Et a ne pas oublier de l'activer dans les paramètre du bots:
{
"prefix": "!",
"roleId": "1178671019876167742",
"message": "Pour pas me faire retimeout",
"logs": "1178841062471647254",
"specialMessageChannel": "1178841062471647254",
"TOKEN": "Sans le token",
"allowedUser": "1144291056444260412"
}
thx
Vu que je suis une brêle, j'avais mis le lien d'invitation
je vais check
C'était activé
il fonctionne:
Logged in as ...
CheckAndAssignRole fonctionne
CheckAndAssignRole fonctionne
CheckAndAssignRole fonctionne
CheckAndAssignRole fonctionne
Role assignment check completed.
Le salon de logs n'existe pas.
PresenceUpdate fonctionne
J'avais pas mis le guildpresences, maintenant il check en tout cas j'ai le print
that's right
il y avait quoi d'autres ?
à vérifier
Le client.on message
et le
Sendmessagelog
ok ok
J'ai essayé de mettre le status,
j'ai eu ça dans la console
joana_15_ - Ancien statut: dnd, Nouveau statut: dnd
index.js:92
Statut trouvé: Oui
index.js:95
Statut trouvé. Ajout du rôle...
index.js:98
CheckAndAssignRole fonctionne
index.js:180
PresenceUpdate fonctionne
mais je n'ai pas reçu le role et le message ne c'était pas envoyé dans le discord
C'est good
pardon j'ai eu une réu, bref le soucis étant le channel
si tu ne met pas une guild il ne va pas reconnaitre le channel
c a dire
Ta pas besoins de t'excuser mdrrrr d'est dja super cool de m'aider
const guildId = 'xx';
const logsChannelId = 'xx';
const guild = client.guilds.cache.get(guildId);
const logsChannel = guild.channels.cache.get(logsChannelId);
if (!logsChannel) {
console.error("Le salon de logs n'existe pas.");
return;
}
Pour récupéré le channel je suis passé par la guild et là ça fonctionne sans soucis
ton embed ne fonctionne pas non plus parce qu'il y a eu des modifications apportés à son fonctionnement donc n'hésite pas à check ça:
https://discordjs.guide/popular-topics/embeds.html#using-the-embed-constructor
(le code que j'ai envoyé c'est pour expliquer hein, y'a moyen de faire bien plus propre que ça, je tiens à préciser)
comment ça mettre le status ?
en gros, si je met xx en statut, c'est censé envoyé un message + me mettre un role
je vais regardé
les xx faut les remplacer par ce que tu as fais
euuuh par tes id pardon
celui de ta guild et de ton channel
np, tu avais d'autres soucis ?
pas pour le moment
bon courage, si tu as besoin hésite pas à ping
Bonjour/Bonsoir, je suis actuellement sur un projet qui consiste à créer une carte du monde avec leaflet le tout sur electronjs. Cette carte est composée de toutes les provinces du monde avec un geojson. Maintenant ce n'est pas très beau puisque cela fait énormément de frontières (en plus de ne pas être opti). Ce que je voudrais faire c'est plutot que d'afficher toutes les frontieres de chaque provinces, afficher uniquement les frontières entre les pays. Chaque provinces dans le json possède une propriété avec l'iso du pays (par exemple "FRA" pour la France etc.). Et grâce à ça, je souhaite créer une frontière entre toutes les provinces qui ne possèdent pas le même iso. Par exemple si une province avec l'iso FRA et une autre collée à celle-ci possédant DEU comme iso, une ligne doit être tracée. Et pour cela je teste les voisins de chaque provinces pour détecter des collisions et déterminer les points de contacts (et ainsi tracer des lignes à partir des coordonnées récoltées. Cependant ça marche à moitié, seul quelques frontières sont dessinées + des problèmes de traçages (plusieurs traits sur un etc). Auriez-vous une idée de pourquoi ça fait ça ? Merci d'avance
https://pastebin.com/dK81Xah9
Résultat que j'obtiens :
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
Bonsoir, j'ai un problème avec mon site.
J'ai fait un calendrier de l'avent et en faites quelques personnes sur Apple ont un bug. Ils peuvent ouvrir certaines cases en avance. Je ne comprends pas trop pourquoi, ce bug persiste que sur une plateforme.
Je suis en train de voir pour le résoudre j'ai situé d'où vient le problème.
comment voir qu'un client a fermer l'onglet de ton site en js
Tu ouvres un ws lorsqu’il arrive sur la page, et quand le ws est fermé, ton serveur peut en déduire que l’utilisateur a fermé l’onglet. C’est pas très fiable, mais c’est la seule solution que je vois 🤔
c'est quoi ws
WebSocket
ok mrc
Bonsoir, j'essaye de faire un systeme qui give de la monnaie virtuelle si l'user répond à un message spécifiqiue, mais j'arrive à get que le mesesage envoyer par l'utilisateur
j'ai essaye de fetch mais egalement il fetch que le message envoyer par l'user et pas le contenu du message répondu
il existe un moyen ou pas du tout ?
@keen narwhal tu utilises discordjs ?
oui
sur ton msg tu as un .reference qui est le msg auquel le mec répond
Oh parfait, merci !
Hello !
Je rencontre un petit soucis avec une interaction (Context Menu)
J'utilise le framework SapphireJS et je dev en CommonJS. Et je suis également débutant dans ce langage.
Dans le but d'un apprentissage, je suis entrain de créer un bot discord qui peut créer des salons (Publique et privé). Sauf que lorsque j'essaie de faire une commande (Avec un context menu, càd que lorsque je fais clique droit sur un joueur), le interaction.member.voice.channel me renvoie null hors que je suis dans le salon vocal 🤔 .
Si vous avez besoin de code, dites moi quelle partie, il y a aucun problème 😉
Le code de mon interaction (pour ajouter un membre au Salon Privé)
const { Command } = require('@sapphire/framework')
const { ApplicationCommandType, PermissionFlagsBits } = require('discord.js');
module.exports = class addUserToPrivate extends Command {
constructor(ctx, options) {
super(ctx, {
...options,
description: "Ajouter au S.P",
});
}
registerApplicationCommands(registry) {
registry.registerContextMenuCommand((builder) =>
builder
.setName(this.description)
.setType(ApplicationCommandType.User)
);
}
contextMenuRun(interaction) {
const voiceChannel = interaction.member.voice.channel
console.log(voiceChannel) // Me renvoie null
}
}
Ta activer l’intent GuildVoiceStates sur ton bot ?
Hey mec comment tu vas ? ça va ou quoi ? Moi je vais bien
|| Le boulet que je suis ||
Mdrr tranquille la ça work fort ?
Azy on va work mec
" J'espère avoir été clair* "
Merci pour ton aide
Pas sûr que ce sois ce genre de message que on attend sur un discord d’entraide
Désole pour la faute, j'ai écrit rapidement ^^
C’est pas à toi de t’excuser ahah
Bonjour à tous ! Je suis un nouveau développeur et je me suis lancé sur Vue.js et je ne comprend pas certaines choses, quelqu'un pourrait-il m'aider ?
Envoie direct ta question 😉
En vérité je pense qu'une vocal serait plus simple pour expliquer si possible 🙂
T'aura plus de chance de trouver de l'aide par écris :/
Aie très bien, mes components ne fonctionnent plus et j'ai le message d'erreur suivant "[Vue warn]: Failed to resolve component: Header
If this is a native custom element, make sure to exclude it from component resolution via compilerOptions.isCustomElement.
at <App>" J'ai pourtant suivi la doc jusqu'ici
Sans code on peut pas t'aider 😉 @long pumice
Mais en gros vérifie que ton Header tu l'as bien import etc
Que ta pas fait d'erreurs d'orthographes aussi ça peut aider
Je viens de trouver par moi même finalement aha...
App.js
export default {
name: 'App',
components: {
Header,
Footer,
}
}
J'ai trouvé sur Youtube après 100vidéos qui expliquaient autrement...
Salut ! Je me demandais, quel est le flag ou comment se nomme cette permission lorsque je veux permissionOverwrites sur un voiceChannel : (DiscordJS)
ManageChannels
Merci, j'avais mis ça mais ça n'avait pas fonctionné 🤔 ptete que j'avais pas refresh (là c'est bon)
Bonjour tout le monde, j'ai une petite question à propos de React et NextJS. Actuellement, je commence tout juste React et j'entends beaucoup parler qu'il faut apprendre un framework à côté tel que NextJS ou Remix. Et comme j'ai un gros projet sur React qui commence très bientôt, vous me conseillez de créer ce projet sur Next quitte à faire que du React pour l'instant ? Ou Créer le projet sur React seulement et le migrer plus tard sur Next quand j'aurais les compétences ? Merci 🙂
Va direct sur next, ça reste énormément similaire à React
Cool ! Merci ! Et j’ai une autre petite question mais je sais pas si tu sauras y répondre, je compte utiliser Hostinger pour mon projet Next, tu penses qu’un hébergement web simple suffit ou il faudrait plutôt prendre un VPS ?
Prend plutot un vps ca sera plus simple a mettre en place
Ça marche, merci beaucoup 😊
enfaite apres ca marche comme ca ```js
// next.config.js
module.exports = {
exportPathMap: async function () {
return {
'/': { page: '/' },
'/about': { page: '/about' },
// ... Ajoute d'autres pages ici
};
},
};
C'est long a faire et t'es pas sur que ca marche bien
L'hébergement Web chez Hostinger ne permet pas l'hébergement de projets NodeJS.
Ah 🤔 Hereusement que j'ai vu ce message
Tu en connais qui peuvent héberger du Node ?
Oui c’est ce que j’ai remarqué malheureusement.. mais un VPS permet de le faire non ?
Je vais passer sur un VPS ça sera plus simple je pense 😂
Et désolé si je réponds tard je n’avais pas vu le message 🙂
Un VPS oui.
Hetzner
Ok je vais aller voir ça merci man
Contabo
Je te conseil aussi je suis chez eux depuis quelques années et j'adore
Ok
Si vous prenez un vos je vous conseil coolify
Un truc que tu install sur ton vps pour gérer t’es projets
Quelle un peux m'aider à faire sa stp
Bot.commands n’existe pas
Ces quoi alors
Clear ton cache, ca c’est l’ancienne version du site ^^
J'aime bien leur nouvelle doc
Bonjour, je fait un projet qui a un fron en next ts et un back en nest, j'aimerais faire une auth par discord, j'ai créer mes routes et autres, lorsque je fait localhost:9000/auth/callback j'arrive sur la page de connexion avec discord, mais lorsque depuis mon projet next (localhost:3000) je clique sur le bouton connexion avec discord, la console me dit
localhost/:1 Access to fetch at 'https://discord.com/oauth2/authorize?response_type=code&redirect_uri=http%3A%2F%2Flocalhost%3A9000%2Fauth%2Fcallback&scope=identify%20email&client_id=1184073182068609044' (redirected from 'http://localhost:9000/auth/callback') from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
j'ai ce code pour mon fetch coté front
export default function Home() {
const [isLoading, setIsLoading] = useState(false);
const handleLogin = async () => {
setIsLoading(true);
try {
// Effectuer une requête POST vers votre backend Nest.js pour démarrer le processus d'authentification
const response = await fetch('http://localhost:9000/auth/callback', {
method: 'GET', // Pour inclure les cookies lors de la requête
mode: 'cors',
credentials: 'include',
});
// Rediriger l'utilisateur vers l'URL d'authentification Discord
console.log(await response);
// window.location.href = await response.json().redirectUrl;
} catch (error) {
console.error('Erreur lors de l\'authentification', error);
} finally {
setIsLoading(false);
}
};
return (
<div>
{isLoading ? (
<p>Chargement en cours...</p>
) : (
<button onClick={handleLogin}>Se connecter avec Discord</button>
)}
</div>
);
};
et ce code coté back dans le main.ts
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.use(cors({
origin: 'http://localhost:3000', // Remplacez cela par l'URL de votre frontend
credentials: true,
}));
await app.listen(9000);
}
Le soucis vien de cors mais je ne comprend pas quoi exactement 😅
Je trouve pas
tu cherche quoi ?
A faire un guildCreate et guild delete en JavaScript v14.6.0
ok et tu veut faire quoi dans ces events ?
Avoir un message quand le bot join et leave avec les informations du serveur fondateur stats etc..
montre ton code
J ai pas de code justement
ah et ta même pas essayer de faire un code ?
le problème c'est que sans connaitre la structure de ton bot et la gestion des interaction je peut pas trop t'aider :/
Avec un basse de mon bot tu pourras m'aider ou pas
oui
mais apres le principe n'est pas qu'on fassent le travail a ta place, plutot qu'on t'aide lorsque tu a un soucis
Ok je t'envoie sa en message
La même 👀
salut quelqu'un pourrai m'aidez a déployer un projet adonis ?
Quel est ton problème ?
Ces bon merci j’ai reussi à le mettre sur un serveur node j’avais un problème avec host et port
Ok ok 👍
Bonsoir, quelqu'un saurait me dire comment recuperer les cookies du client avec react car j'utilise universal-cookieet quand je les logs ils sont null alors que j ai bien une valeur de presente dans mes cookies j ai essayé avec safari et chrome j ai exactement le meme probleme
voila la methode que j'utilise pour les recuperer
const cookies = new Cookies();
console.log(cookies.get('token'))
Ou si vous connaissais un autre moyen de verifier que la personne est bien login en oauth, et donc de bloquer les routes react si il ne l'es pas
Y’a jscookie c’est mieux je penses
deja essayé j ai aussi essayé react-cookies
Ta bien set ton cookie etc?
T'a pas fait d'erreurs ni rien vérifie bien aussi
tout est bon
mais t inquiete je vais faire autrement
hello je suis entrain de realiser un projet en next avec un back nest, et j'aimerais faire une connexion via discord, j'ai créer mes controller et ma logique coté back (lorsque je tape l'url de mon back qui est localhost:9000/auth/callback j'arrive sur la page de connexion via discord et tout fonctionne), j'essaye de fetch mon back depuis mon front mais cors me dit :
Access to fetch at 'https://discord.com/oauth2/authorize?...' (redirected from 'http://localhost:9000/auth/callback') from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled
Savez vous si il est possible de faire comme j'essaye en mettant la logique de connexion coté nest ou si je doit mettre directement l'auth discord dans le projet next ? Cela m'arrangerais beaucoup d'avoir la logique de connexion coté back
merci beaucoup
Regarde ici peut-être que ça peut régler ton problème
yes j'ai déja regarder
le problème étant que tout mes autres appels fonctionne, la connexion discord est vraiment le seul qui passe pas 😅
j'ai bien authoriser les credentials et autre dans ma requete
tu as bien inclus les entêtes cors ?
c'est a dire ?
tu as bien import cors ?
de mon coté back j'ai bien authoriser les appels depuis mon domaine
oui et config pour autorise rles appels depuis mon projets next
app.use(cors({
origin: 'http://localhost:3000',
credentials: true,
}));
Essaye de regarder sur la doc de discord peut-être qu'ils précisent certaines choses. ça peut être vachement stricte
je vais regarder
je sais que discord est stricte niveau authorization de domaine, je pense que cela peut venir de la car j'autorise le port 9000 mais aps le port 3000, de plus dans le network ma requete passe bien en status 200
mais dans le header Access-Control-Allow-Origin est null
Merci je vais regarder coté discord
j'viens de voir ça :
" Discord doesn't allow connecting to the API as a bot from a browser. You have to run your bot on your server (or use a CORS proxy). "
Est-ce le cas pour toi ?
bah du coup je dirais que non
car mon appel part de next est envoyer est traiter par nest qui demande a discord la connexion
je pense que sa vien du fait que sa rout par nest qui pose problèmes, je vais essayer de mettre directement dans next l'auth, merci beaucoup
C'est possible que tu puisses pas passer par nest
tu devrais essayer de passer par ton front end pour le coup
yes c'est ce que je vais voir, merci beaucoup ^^
Tu me tiens au courant, j'suis curieux ^^
yes, j'ai jamais fait en next alors je t'avoue sa va peut etre me prendre un peu de temps je suis entrain de regarder un peu des exemple sur git et autre x)
J'ai regardé vite fais
ça passe avec next-auth et tu fais tes configurations next-auth etc
on est d'accord sur les ancienne version de next le _app.tsx c'est désormais layout.tsx non ?
j'ai pas connu le next d'avant mdrr
Non ça reste toujours le _app.tsx j'crois bien hein
après j'crois j'viens de m'informer le layout est mieux
Sincèrement, c'est une question auquelle je ne serais pas répondre ^^
Bonjour j'aurais une question par rapport a ping des membre dans un modal es que c'est possible avec disocrd js?
Hello, vous savez comment on peut update les permissions d’un channel en discord.js ? J’aimerais faire une commande de /add pour ajouter une personne a un ticket, le soucis étant que avec permissionOverwrite sa ecrase les anciennes permissions pour mettre les nouvelles, et j’ai pas forcément envie de passer par une base de données alors je voulais savoir si vous avez une autre alternative 😅
Tu peux passer par permissionOverwrite sans perdre les autres perm
Discord.js is a powerful node.js module that allows you to interact with the Discord API very easily. It takes a much more object-oriented approach than most other JS Discord libraries, making your bot's code significantly tidier and easier to comprehend.
D'accord merci je suis trop con j'avais pas vue, j'utiliser juste permissionOverwrite je savais pas qu'on pouvais mettre autre chose apres mdrr 😅
Bonsoir comment je dois faire pour return en entier mon string avec une fonction asynchrone?
ça me retourne ""
map + join au lieu de foreach
ok merci j'ai déjà trouver une alternative
Tu met return après ton string. Mais return arrête le code tu es conscient ?
A la position actuelle ça fonctionne pas car ton return est trop loin.
C’est comme si tu es sur une autoroute au km nº100 et qu’il a un panneau au km nº120 pour te dire qu’au km nº100 il y a des travaux, du coup ça crée une « erreur » puisque bah du coup, tu es trop loin.
||Je dis « erreur » car la il doit pas en avoir puisque ton code en soit est bon.||
yoo bonjour
ici j'ai deux event listener qui appelle une certaine fonction
le problème c'est que dans le cas de l'event click, la fonction s'envoi et se déroule sans problème, alors que dans le cas de l'event touche du clavier, l'event s'envoi, la fonction a bien lieu, j'ai aucune erreur, mais ça ne fait pas ce qu'elle est sensé faire
j'aimerais savoir si vous avez une piste
car moi j'en ai pas
(le click n'est pas un event listener, oui, mais ducoups qu'est ce que ça cause comme prblm quand j'appelle ma fonction previousImage en eventlistener?)
la déclaration de tes fonctions ne sont pas logique
tu devrais plutot les déclarer avec const <name> = () => {...}
ici du let ça n'a pas de sens surtout que tu ne devrais pas re déclarer tes fonctions derrières
ensuite ton let lecteur il devrait prendre la valeur retourné par ta fonction ou directement ton selecteur et il devrait être en const a priori
enfin tu appelle ou handleKeysHandler ?
pour les events
lis ça aussi pour comprendre les scoop d'une fonction : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions
(ensuite regarde les scoop de let,var,const)
Generally speaking, a function is a "subprogram" that can be called by code external (or internal, in the case of recursion) to the function. Like the program itself, a function is composed of a sequence of statements called the function body. Values can be passed to a function as parameters, and the function will return a value.
ok
j'ai changé la syntaxe comme tu l'a dis
mmh
j'ai pas encore lu toute la docu que t'a envoyé
'fin, tout marche mais
pourquoi ya une difference de comportement entre les deux fonction nextImage ??
alors qu'elles viennent du même endroit
comment ça se peut
au final je suis passé par un onkeydown sur ma div plutot qu'un eventlistener et ça marche
jsp quelle était le prblm mais bon
J’ai trouver pleins d’alternatives différentes mais oui ça me va comme explication on va dire que j’expérimente les fonctions asynchrones
T’inquiète on est tous passer par là, bonne chance pour ta découverte et ton apprentissage.
salut tout le monde j'avais une petite question quand faire un serveur component ou client components ?
Pour tout ceux qui utilisent var ou function :
Bonjour ! J'ai un problème avec mon code discordjs (v14)
const { SlashCommandBuilder, EmbedBuilder } = require('discord.js');
module.exports = {
data: new SlashCommandBuilder()
.setName('send-leaks')
.setDescription('Envoyer votre leak !')
.addStringOption(option =>
option.setName('type')
.setDescription(`Le type de votre leak ("battle pass, nouveau mode de jeu.")`))
// Option
.addStringOption(option =>
option.setName('date')
.setDescription('La date de sortie de votre leak.')),
async execute(interaction) {
await interaction.reply({ content: ':incoming_envelope: Votre leak a bien été envoyé.', ephemeral: true });
const recu = client.channels.cache.get('1186379582438396035');
// Utilisez interaction.options.getString("type")() pour obtenir la valeur réelle
let type = interaction.options.getString("type")();
let date = interaction.options.getString("date")();
const leak_embed = new EmbedBuilder()
.setColor('Green')
.setTitle(":bell: **Nouveau leak reçu** :bell:")
.addFields(
{ name: ':question: Type du leak :', value: `\`${type}\`` },
{ name: ':clock1: Date de sortie du leak', value: `\`${date}\`` }
)
recu.send({ embeds: [leak_embed] });
},
};
et seulement quand j'éxécute
la commande
ça me met cet erreur :
ReferenceError: client is not defined
at Object.execute (c:\Users\Andsley\Desktop\AndsleyLeaks\commands\utility\send-leaks.js:16:16)
at process.processTicksAndRejections (c:\Users\Andsley\Desktop\AndsleyLeaks\lib\internal\process\task_queues.js:95:5)
at async Object.execute (C:\Users\Andsley\Desktop\AndsleyLeaks\events\interactionCreate.js:16:4) {stack: 'ReferenceError: client is not defined
at …ndsleyLeaks\events\interactionCreate.js:16:4)', message: 'client is not defined'}
J'ai bien compris l'erreur
mais je ne comprends pas ou définir client
Pas besoin de le définir, tu peux y accéder via interaction.client
j'essaye
donc si j'ai bien compris.. je change mon code en ça ?
const { SlashCommandBuilder, EmbedBuilder } = require('discord.js');
module.exports = {
data: new SlashCommandBuilder()
.setName('send-leaks')
.setDescription('Envoyer votre leak !')
.addStringOption(option =>
option.setName('type')
.setDescription(`Le type de votre leak ("battle pass, nouveau mode de jeu.")`))
// Option
.addStringOption(option =>
option.setName('date')
.setDescription('La date de sortie de votre leak.')),
async execute(interaction) {
await interaction.reply({ content: ':incoming_envelope: Votre leak a bien été envoyé.', ephemeral: true });
const recu = interaction.client.channels.cache.get('1186379582438396035');
let type = interaction.client.options.getString("type")();
let date = interaction.client.options.getString("date")();
const leak_embed = new EmbedBuilder()
.setColor('Green')
.setTitle(":bell: **Nouveau leak reçu** :bell:")
.addFields(
{ name: ':question: Type du leak :', value: `\`${type}\`` },
{ name: ':clock1: Date de sortie du leak', value: `\`${date}\`` }
)
recu.send({ embeds: [leak_embed] });
},
};
Pourquoi ta mit interaction.client.options ? tu faisais pas client.options avant
bah si, mais tu m'a dis de changer en interaction.client
Avant tu faisais interaction.options, laisse comme ca
En gros tu dois juste changer client en interaction.client
le reste pas besoin de modif
donc c'est bon ce que j'ai fais
j'ai changé
client
en interaction.client
j'ai mis ça
et j'ai une autre erreur
TypeError: Cannot read properties of undefined (reading 'getString')
at Object.execute (c:\Users\Andsley\Desktop\AndsleyLeaks\commands\utility\send-leaks.js:19:40)
at process.processTicksAndRejections (c:\Users\Andsley\Desktop\AndsleyLeaks\lib\internal\process\task_queues.js:95:5)
at async Object.execute (C:\Users\Andsley\Desktop\AndsleyLeaks\events\interactionCreate.js:16:4) {stack: 'TypeError: Cannot read properties of undefine…ndsleyLeaks\events\interactionCreate.js:16:4)', message: 'Cannot read properties of undefined (reading 'getString')'}
renvoie tout ton code modifié
const { SlashCommandBuilder, EmbedBuilder } = require('discord.js');
module.exports = {
data: new SlashCommandBuilder()
.setName('send-leaks')
.setDescription('Envoyer votre leak !')
.addStringOption(option =>
option.setName('type')
.setDescription(`Le type de votre leak ("battle pass, nouveau mode de jeu.")`))
// Option
.addStringOption(option =>
option.setName('date')
.setDescription('La date de sortie de votre leak.')),
async execute(interaction) {
await interaction.reply({ content: ':incoming_envelope: Votre leak a bien été envoyé.', ephemeral: true });
const recu = interaction.client.channels.cache.get('1186379582438396035');
let type = interaction.client.option.getString("type")();
let date = interaction.client.option.getString("date")();
const leak_embed = new EmbedBuilder()
.setColor('Green')
.setTitle(":bell: **Nouveau leak reçu** :bell:")
.addFields(
{ name: ':question: Type du leak :', value: `\`${type}\`` },
{ name: ':clock1: Date de sortie du leak', value: `\`${date}\`` }
)
recu.send({ embeds: [leak_embed] });
},
};
Ta pas lu ce que je t'ai dit
mais si
je fais
TypeError: Cannot read properties of undefined (reading 'getString')
at Object.execute (c:\Users\Andsley\Desktop\AndsleyLeaks\commands\utility\send-leaks.js:19:33)
at process.processTicksAndRejections (c:\Users\Andsley\Desktop\AndsleyLeaks\lib\internal\process\task_queues.js:95:5)
at async Object.execute (C:\Users\Andsley\Desktop\AndsleyLeaks\events\interactionCreate.js:16:4) {stack: 'TypeError: Cannot read properties of undefine…ndsleyLeaks\events\interactionCreate.js:16:4)', message: 'Cannot read properties of undefined (reading 'getString')'}
🤔

const { SlashCommandBuilder, EmbedBuilder } = require('discord.js');
module.exports = {
data: new SlashCommandBuilder()
.setName('send-leaks')
.setDescription('Envoyer votre leak !')
.addStringOption(option =>
option.setName('type')
.setDescription(`Le type de votre leak ("battle pass, nouveau mode de jeu.")`))
// Option
.addStringOption(option =>
option.setName('date')
.setDescription('La date de sortie de votre leak.')),
async execute(interaction) {
await interaction.reply({ content: ':incoming_envelope: Votre leak a bien été envoyé.', ephemeral: true });
const recu = interaction.client.channels.cache.get('1186379582438396035');
let type = interaction.option.getString("type");
let date = interaction.option.getString("date");
const leak_embed = new EmbedBuilder()
.setColor('Green')
.setTitle(":bell: **Nouveau leak reçu** :bell:")
.addFields(
{ name: ':question: Type du leak :', value: `\`${type}\`` },
{ name: ':clock1: Date de sortie du leak', value: `\`${date}\`` }
)
recu.send({ embeds: [leak_embed] });
},
};
voilà 😄
Bonne soirée !
C'est moi avec mes jumelles en train de surveiller le prochain qui va mettre son code avec un var ou un function
var randomVariable = "Salut, je suis une variable utilisant var";
randomVariable = undefined;```
Je suis tilté j'ai besoin de bol
je suis sur qu'il utilise var 
c'est sûr
salut, j'ai un probleme avec des affichages et non affichage si j'ose dire de div.
j'aimerai enfaite faire en sorte que quand j'appuie sur le lien il m'affiche la div et quand je clique sur fermer il la ferme mais ici ca m'affiche bien la div mais ne veux plus me la refermé
document.addEventListener("DOMContentLoaded", function () {
// Récupérer les liens avec la classe "name"
const links = document.querySelectorAll(".name");
// Récupérer le lien pour fermer la div "mid"
const lienFermerMid = document.querySelector(".fermer");
// Récupérer la div "mid"
const divMid = document.querySelector(".popup");
// Ajouter un gestionnaire d'événement à chaque lien avec la classe "name"
links.forEach(function (link) {
link.addEventListener("click", function (event) {
event.preventDefault();
// Appliquer les styles à la div "mid"
divMid.style.transform = "scale(1) translate(-50%, -50%)";
// Retirer la classe "tournaments-details-hidden" pour afficher la div "mid"
divMid.classList.remove("tournaments-details-hidden");
});
});
// Ajouter un gestionnaire d'événement au lien "fermer"
lienFermerMid.addEventListener("click", function (event) {
event.preventDefault();
console.log(divMid);
// Appliquer les styles à la div "mid" pour la fermer
divMid.style.transform = "scale(0) translate(-50%, -50%)";
// Ajouter la classe "tournaments-details-hidden" pour masquer la div "mid"
divMid.classList.add("tournaments-details-hidden");
});
});
php/html
<a href="/tournaments/register/<?= $tournament->id ?>" class="name">S'inscrire au tournois</a>
<div class="tournaments-details-register tournaments-details-hidden popup" <?php
if (has_flash('error_create') || has_flash('error_join')) {
?>
style="transform: scale(1) translate(-50%, -50%);" <?php
}
?>>
<a href="#" style="margin-left: calc(100% - 20px); transform: translateX(-100%);margin-top: 10px;position: absolute;" class="fermer">X</a>
<div>
......
Tu as une erreur quelque part ?
Envoie ton css aussi
euh quel parti t'interresse ? car mon css est un peu mélangé je t'avoue
tournaments-details-hidden
.tournaments-details-register {
width: 90%;
height: 90vh;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background-image: linear-gradient(to bottom right, rgb(0, 0, 0) 0%, rgb(0, 0, 0) 30%, rgb(0, 87, 100) 100%);
;
border-radius: 30px;
box-shadow: rgb(64, 64, 64) 0px 0px 40px;
transition: 0.3s;
}
.tournaments-details-register iframe {
width: 100%;
height: 100%;
border: none;
}
.tournaments-details-hidden {
transform: scale(0) translate(-50%, -50%);
}
```(le prob c'est que quand j'appuie sur fermer il ne se remet plus aussi)
document.addEventListener("DOMContentLoaded", function () {
// Récupérer les liens avec la classe "name"
const links = document.querySelectorAll(".name");
// Récupérer le lien pour fermer la div "mid"
const lienFermerMid = document.querySelector(".fermer");
// Récupérer la div "mid"
const divMid = document.querySelector(".popup");
console.log("1");
// Ajouter un gestionnaire d'événement à chaque lien avec la classe "name"
links.forEach(function (link) {
link.addEventListener("click", function (event) {
event.preventDefault();
console.log("2");
// Appliquer les styles à la div "mid"
divMid.style.transform = "scale(1) translate(-50%, -50%)";
// Retirer la classe "tournaments-details-hidden" pour afficher la div "mid"
divMid.classList.remove("tournaments-details-hidden");
});
});
// Ajouter un gestionnaire d'événement au lien "fermer"
lienFermerMid.addEventListener("click", function (event) {
event.preventDefault();
console.log("3");
// Appliquer les styles à la div "mid" pour la fermer
divMid.style.transform = "scale(0) translate(-50%, -50%)";
// Ajouter la classe "tournaments-details-hidden" pour masquer la div "mid"
divMid.classList.add("tournaments-details-hidden");
});
});
j'ai pas d'erreur, l'erreur est que je ne peux jamais cliqué sur le lien (quand je clique ca fait rien )
dans ta console navigateur ta rien ?
y a 1, 2 quand je clique mais pas le 3
console.log(lienFermerMid); ou tu sélectionnes ton élément
ça t'affiche ça avec le console log ?
oui
et quand je clique sur le bouton
ça veut dire que c'est bon dcp
le ferme selectionné dans le sens ca m'affiche le bon dans le log ? si c'est ca oui
mais quand je clique dessus rien ne se passe
console.log("Clic sur fermer détecté"); la ligne juste en dessous de ton lienFermerMid.addEventListener
rien
rien s'affiche
Vérifie si y'a pas un pb de positionnement des trucs comme ça déjà
ben normalement non car sinon j'aurai pas le :hover qui fonctionnerai sur le a
T'a raison
^^
tes z-index sont corrects ?
il devrais pas etre mauvais car y en a pas pour cette endroit normalement
Tu as pas d'autres scripts qui peuvent interférer avec lui ?
possible mais je pense pas
voici tout la page du scrpit
function showUser() {
var userSection = document.getElementById("userSection");
if (userSection.style.display === "none") {
userSection.style.display = "block";
} else {
userSection.style.display = "none";
}
}
function hiddenInfo() {
const divMid2 = document.querySelector(".popup2");
divMid2.style.transform = "scale(0)";
divMid2.classList.add("tournaments-details-hidden");
}
document.addEventListener("DOMContentLoaded", function () {
// Récupérer tous les éléments avec la classe "elementclick"
const links = document.querySelectorAll(".elementclick");
// Ajouter un gestionnaire d'événement à chaque élément avec la classe "elementclick"
links.forEach(function (link) {
link.addEventListener("click", function (event) {
event.preventDefault();
// Extraire l'ID de l'élément "elementclick" cliqué
const elementId = link.id; // Supposons que l'ID soit de la forme "elementclick0", "elementclick1", etc.
console.log(elementId);
// Construire le sélecteur pour l'élément "elementcache" correspondant
const cacheElementSelector = `.elementcache${elementId}`;
// Récupérer l'élément "elementcache" correspondant
const cacheElement = document.querySelector(cacheElementSelector);
// Vérifier si l'élément "elementcache" est actuellement visible ou caché
const isVisible = cacheElement.classList.contains("tournaments-team-visible");
// Si l'élément "elementcache" est visible, le masquer ; sinon, l'afficher
if (isVisible) {
cacheElement.classList.remove("tournaments-team-visible");
} else {
cacheElement.classList.add("tournaments-team-visible");
}
});
});
});
document.addEventListener("DOMContentLoaded", function () {
// Récupérer les liens avec la classe "name"
const links = document.querySelectorAll(".name");
// Récupérer le lien pour fermer la div "mid"
const lienFermerMid = document.querySelector(".fermer");
// Récupérer la div "mid"
const divMid = document.querySelector(".popup");
console.log("1");
console.log(lienFermerMid);
// Ajouter un gestionnaire d'événement à chaque lien avec la classe "name"
links.forEach(function (link) {
link.addEventListener("click", function (event) {
event.preventDefault();
console.log("2");
// Appliquer les styles à la div "mid"
divMid.style.transform = "scale(1) translate(-50%, -50%)";
// Retirer la classe "tournaments-details-hidden" pour afficher la div "mid"
divMid.classList.remove("tournaments-details-hidden");
});
});
// Ajouter un gestionnaire d'événement au lien "fermer"
lienFermerMid.addEventListener("click", function (event) {
console.log("Clic sur fermer détecté");
event.preventDefault();
console.log("3");
// Appliquer les styles à la div "mid" pour la fermer
divMid.style.transform = "scale(0) translate(-50%, -50%)";
// Ajouter la classe "tournaments-details-hidden" pour masquer la div "mid"
divMid.classList.add("tournaments-details-hidden");
});
});
appele tes showUser() ou hiddenInfo() directement depuis la console du navigateur pour voir si elles exécutent les actions correctement
PS : n'utilise pas var et function 😉
hello c’est quoi les soucis ?
" j'aimerai enfaite faire en sorte que quand j'appuie sur le lien il m'affiche la div et quand je clique sur fermer il la ferme mais ici ca m'affiche bien la div mais ne veux plus me la refermé "
J'me dis qu'il y'a un truc qui interfère, mais quoi
k, si t’as moyen de me donner le code actuel, je te file un codepen demain du fix, si j’oublie pas
sans la partir php derrier
je te fais ça demain matin quand je serai au bureau
Yep je pense ce sera mieux à 1h30 du matin perso j'suis plus qu'inapte je me tord la tête plus qu'autre chose xd
mdr ok ok
Mais du coup ça a déjà été discuté ici
mais
Function et var faut oublier par rapport aux scoops
const et let à la place
Tkt c'est Lartaxx 😉
Il va trouver le problème il est bien bien bien plus compétent que moi et de loin xd
Bonne nuit et j'espère que tu auras ton bonheur demain ! x)
de meme
j'aurai sans doute d'autre demande par apres
mais la je vais dodo
a une prochaien
yop, je vais commencer à look ton soucis
j'ai trouvé en remplace fermer par fermer2 et le rename dans mon html
et ca fon,ctionne
mais merci quand meme
par contre j'aurai sans doute d'autre question un peu plus tard
ok ça marche
tu es bon en php?
car si c'est le cas alors oui j'aurai besoin de toi bientot mdr
c'est mon boulot donc dis moi
ok
je te recommandes fortement de ne pas utiliser function dans ton js pour déclarer tes fonction
on me la deja dit mais merci de me le redire ^^
prevenir*
C’est ce que je lui ai dis ^^



















** **
perfect
Pas bien cadré 
Prend exemple sur Merlin
React-js + tailwind
let couleur = "#FFFFFF"
let isPath = useLocation().pathname === '/earth'; //Check si le chemin est /earth
let classColor = isPath ? `fill-[${couleur}] hover:fill-[${couleur}]` : `fill-[#000000] hover:fill-[${couleur}]`;
console.log("chemin : " + isPath)
console.log("couleur : " + classColor)
return (
<svg
id='earth-btn'
className={classColor}```
Voila le code d'un icone svg de la terre qui se trouve dans une barre de navigation, qui doit devenire blanc si on passe la souris dessu, ou si le chemin est /earth
Sauf que je ne comprend vraiment rien... un coup sa marche, je relance mon serveur et sa ne marche plus, j'ai l'impression que c'est principalement le hover qui ne fonctionne pas tout le temps.
Des foix je change la couleur et sa remarche comme par magie etc... alors que dans mon console log j'ai bien les information voulut, avec les bonne couleur a la place des variable
Et sourtous, si je remplace les variable par des couleur statique (directement #FFFFFF) sa marche tres bien, du coup je presume que sa doit venire d'une particularité de react en therme de fonctionnement
Merci d'avance 🙂
Tu dois mettre ispath doit être un usestate et il doit être init dans un useeffect
et qu'est-ce que cela changera ?
Ça mettra à jour ton composants à chaque changement d’état de ton site
Donc changement de lien ect
en plus j'utilise des link donc sa ne recharge pas la page...
c'est a dire init dans un useeffect ?
Regarde comment marche le useeffect
est-ce que tu pensse que sa pourait marcher
c'est que sa m'etonne enormement, meme si je recharge la page a la main cela ne change rien, et pourtant mes element sons bien stylisé
du fait que j'utilise des variable ?
C’est assez simple à comprendre ApplicationCommands n’existe pas
Bonjour ^^
Petit soucis avec ma src je l’ai transféré à mon nouveau vps et depuis plein de soucis au niveau des nodes modules
root@VM7247117:/home/vshell/Mint# node app.js
/home/vshell/Mint/node_modules/mongoose/lib/helpers/model/applyHooks.js:29
const alreadyHookedFunctions = new Set(applyHooks.middlewareFunctions.flatMap(fn => ([fn, `$__${fn}`])));
^
TypeError: applyHooks.middlewareFunctions.flatMap is not a function
at Object.<anonymous> (/home/vshell/Mint/node_modules/mongoose/lib/helpers/model/applyHooks.js:29:71)
at Module._compile (internal/modules/cjs/loader.js:778:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
at Module.load (internal/modules/cjs/loader.js:653:32)
at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
at Function.Module._load (internal/modules/cjs/loader.js:585:3)
at Module.require (internal/modules/cjs/loader.js:692:17)
at require (internal/modules/cjs/helpers.js:25:18)
at Object.<anonymous> (/home/vshell/Mint/node_modules/mongoose/lib/schema.js:31:23)
at Module._compile (internal/modules/cjs/loader.js:778:30)
Voilà la petite erreur bien chiante
🙂
Ta bien les même version de node et de tes modules que là où tu étais avant ?
Probablement tu a raison je vais regarder cela
Vu le nom du dossier j'imagine que tu vois un tuto youtube, vérifie ta du mal copier une partie
non je les fais 4fois et sa marche pas
tu peux pas me donner un code pour que jai les slashcommand car ces important pour moi
Je fais pas mes bots de la même manière donc tu pourras pas utiliser ce que je fais moi
Soit tu recopies le tuto correctement soit tu devras trouver un dev (surement payant) pour faire le bot a ta place
Du coup recommence le tuto et trouve ton erreur 👌
Pk poster ici alors ? 💀
Car ya ecrit javascript
pas de ?
derreur
bah tu as besoin d'aide pour quoi si tu as pas d'erreur ? 
non engros jai pas mal ecrit un truc
Effectivement, mais pk poster si t'a pas d'erreur, c'est la ma question 👀
ah att

T'exportes une méthode (function) dans ton loadSlashCommands ?
T'aurais moyen d'envoyer ton loadSlashCommand en entier ici (formaté de préf)
const discord = require("discord.js")
const { REST } = require('@discordjs/rest')
const { ROUTES } = require("discord.js")
module.exports = async bot => {
let commands = [];
bot.commands.forEach(async command => {
let slashcommand = new discord.SlashCommandBuilder()
.setName(command.name)
.setDescription(command.description)
.setDMPermission(command.dm)
.setDefaultMemberPermissions(command.permission ==="Aucune" ? null: command.permission)
if (command.options?.length >= 1) {
for(let i =0; i < command.options.length; i++) {
slashcommand[`add${command.option[i].type.slice(0, 1).TolowerCase() + command.options[i].type.slice(1, command.options[i].type.length)}Option`](option => option.setName(command.options[i].name).setDescription(command.options[i].description).setRequired(command.options[i].required))
}
}
await commands.push(slashcommand)
})
const rest = new REST({ version: '10' }).setToken(bot.token)
await rest.put(ROUTES.applicationCommands(bot.user.id), {body: commands})
console.log("les slashcommands ont bien été enregistrées")
}
Regarde le screen (correspondant à ton code) et regarde ce que j'ai envoyé
ta envoyer quoi tolower case
Regarde les deux, celui en bas avec le T majuscule c'est ton code
En haut c'est la bonne
toujour lerreur
Ton code ?
comme je fais
tu fais trois ` comme ça
tu met js en minuscule et ton code
voici un screenshot d'exemple :
Tu met ton code dans la partie où j'ai mis "code"
const discord = require("discord.js")
module.exports = async bot => {
await loadSlashCommands(bot)
console.log(`${bot.user.tag} est bien connecté !`)
}
bah jai suis le tuto mes ducoup tu sais le faire
Tu as suivi le tuto de "Mad Rage" ?
yes
Il manque pas un petit truc dans le console.log?
je suis une merde
Non mais pas besoin pour ton loader c'est bon
@barren glacier
toujour L' Erreur Parcontre
haha
Non mais tu peux laisser async bot
c'était bon
Oui, parce qu'il y a plusieurs erreurs.
erreur de ma part en regardant son tuto
je garde bot
et ducoup je dois faire quoi pour la definir
Ce qui est fait dans le tuto de "Mad Rage"
ce que je fais plus de 4fois
Tu recopies avec ton clavier et tes doigts
Ensuite tu redémarre et tu screen les potentiels erreurs
Il a regardé 12 frames il en a eu marre faut croire
loadSlashCommands
Le message il fait 6 screens hahaha
Ok merci, t'aurais pu ouvrir le menu en bas à gauche pour l'avoir et la copié, fin bref
T'as redémarré le bot là ?
Et t'as eu l'erreur dans la console qu'est apparu ?
oui applicationCommands
Non mais t'abuses
tu as la vidéo et tu arrives à faire des erreurs en recopiant
C'est pas grave, il commence il y connait rien de base j'imagine
Oui et tant mieux qu'il rencontre ces erreurs
On va essayer de comprendre ensemble d'où vient le soucis
comme ça il pourra les régler tout seul la prochaine fois
Même si je suis fatigué
je sais juste allumer un bot
😢
desoler du derangement
Tu m'as jamais solliciter de toi-même après, je suis venu à toi de moi-même
Donc tu me déranges pas 😂
Bon tu pourrais voc ?
yes jai pas mon micro parcontre je tentend
Hey, j'ai un petit soucis avec mon select menu
lorsque j'utilise mon option search ça fonctionne nickel il désélectionne mon option mais dès que c'est pour mon list ça ne fonctionne pas du tout
voici l'erreur complet
Error [InteractionNotReplied]: The reply to this interaction has not been sent or deferred.
at StringSelectMenuInteraction.editReply (D:\Bot_discord_v14\node_modules\discord.js\src\structures\interfaces\InteractionResponses.js:157:48)
at Object.run (D:\Bot_discord_v14\Src\Interactions\SelectMenus\menujeuxSelectmenu.js:213:31)
at Object.run (D:\Bot_discord_v14\Src\Events\InteractionCreate.js:15:73)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
code: 'InteractionNotReplied'
}
slt y a t'il quelqu'un pour me help en vc
Par curiosité ceux que bossent avec des bots Youtube
Vous utilisez quoi pour check les nouvelles vidéos d'une chaine ?
Je demande car j'ai l'impression que 4 ans après c'est toujours la galère.
Perso je suis sur PubSubHubbub mais très peu complet
Maybe @slim anvil qui a peut-être l'expérience Mee6 ?
Pourquoi tu passes pas par l'API de youtube ?
Me semble que c'est trop cher
Ca fait 1h que j'essaie de cherche les infos sur leur UX nul 😂
demande a Claude
C’est gratuit ??
Juste limité en nombre de requêtes 👀
Bon, je m’en suis juste servis pour utiliser la recherche x)
Et leur doc est vraiment infernale 🤣
ou passe par le site directement mais c'est plus chiant tu peux utiliser Selenium et tu vérifies juste la dernière balise de la chaine en question
Salut le mec je me suis lancer dans un bot discord et la je voulez use les SlashCommand mais elle n'apparaise pas quand je veux les use voila la code :
module.exports = async (bot) => {
let commands = [];
bot.commands.forEach(async command => {
let slashCommand = new Discord.SlashCommandBuilder()
.setName(command.name)
.setDescription(command.description)
.setDMPermission(command.dm)
.setDefaultMemberPermissions(command.permissions === "Aucune" ? null : command.permissions)
if (command.options?.length >= 1) {
for(let i = 0; i < command.options.length; i++) {
slashCommand[`add${command.options[i].type.slice(0, 1).toLowerCase() + command.options[i].type.slice(1, command.options[i].type.length)}Option`](option => option.setName(command.options[i].name).setDescription(command.options[i].description).setRequired(command.options[i].description).setRequired(command.options[i].required))
}
}
console.log(slashCommand)
commands.push(slashCommand)
})
const rest = new REST({ version: '10' }).setToken(bot.token)
await rest.put(Routes.applicationCommands(bot.user.id), { body: commands });
console.log('Slash commands loaded!');
}```
Mes logs:
salut @unborn tangle , alors j'avoue que je n'utilise pas du tout cette methode la pour crée mes slash command, j'aurais bien du male a t'aider sur se code la, mais je peut te partager comment je fait.
const shop = {
"options":
[
{
"choices": [
{
"name": "Atout",
"value": 0
},
{
"name": "Cosmétique",
"value": 1
}
],
"type": 4,
"name": "type",
"description": "🌐 Sélectionnez le royaume concerné.",
"required": true
},
{
"type": 3,
"name": "ressource",
"description": "📦 Quelle ressource souhaite-t-iel acheter ?",
"required": true
},
],
"name": "shop",
"description": "shop"
}
guild.commands.create(shop);
client.login(secure.token);
alors oui se sons des json directement, mais franchement c'est plus facil a gere a mon avis.
3 string ; 4 integer ; 10 number ; 5 boolean ; 6 user et tien pour les "type" c'est simple, je me les suis mis dans mon code et sinon tu a chatgpt ou la docu
et si jamais pour suprimé toute tes command :
js guild.commands.fetch() .then(commands => { console.log("tout command supr") commands.forEach(command => command.delete()); }) .catch(error => { console.error("Une erreur s'est produite :", error); });
Pour reprendre le message de @glass cargo
Oui c'est gratuit mais tu as 10 000 unités par jour
https://developers.google.com/youtube/v3/determine_quota_cost?hl=fr
Soit 100 appels par jour
Sachant que la route /search prend 100 unités
Ca fais un call toute les 15min, c'est correct de fou pour annoncer la sortie d'une vidéo youtube
J'ai deux chaînes à check ! Et peut-être bientôt 3
Tu joues avec 2 api key au pire
Ça à l'air un peu chiant cette histoire. L'objectif c'est quand même de remplacer Pubsubhubbub qui est déjà chiant à utiliser. Donc au final, si c'est pour que ça soit aussi chiant, ou plus chiant ..
Utiliser 1 api key par chaine ca n'a rien de chiant hein, c'est juste changer une variable 
Oui mais qui s'accumule à d'autres points négatifs. Genre avoir une latence de max 15 minutes
Alors que Pubsub c'est quelques secondes mais chiant à maintenir + te donnent peu d'infos. Donc obligé de scrap
En étant externe au projet, avec ce que tu me dit la ca me semble évidant que le mieux à faire c'est quitter Pubsub et passer par youtube direct même si ce sera pas à la seconde près
Après tu peux techniquement te rapprocher de la seconde près si les vidéos sont posté à des heures +/- fix
et tu as pas besoin de search ?
c'est pas compliqué tu renforce tes call api pendant les heures pleine et tu les espaces pendant les heures creuses tu devrais te retrouver avec quelque chose qui ressemble a une sinusoïdale et avec ce truc la en fonction des heures tu test plus ou moins si il y a des vidéos
C'est quelle route alors ?
C'est une très bonne idée ! Mais malheureusement les sorties sont assez random
Je sais pas c'était une question
Oui mais les heures d'affluence non. Tu as juste besoin de prévenir l'utilisateur qui utilise son téléphone si il est pas dessus c'est useless
Après une petite étude de la doc, ça à l'air d'être le plus pertinent justement !
Oui je vois ce que vous voulez dire
Mais finalement le seul avantage que ça apporte, c'est une donnée + structurée. Trop de désavantages par rapport à la méthode Pubsub
j'ai definie le run ? nn
où ?
.
Fait un console.log de command
a mon avis tu récup mal le nom de la command
je le fait a quelle ligne
17
non là tu appelles la fonction run, tu l'as pas défini dans ce fichier
apres
bah test ta commande pour voir ce que tu as de log
je peux te faire un live shair ?
definie la moi
Tu as suivi un tuto sur youtube ?
oui
@ashen rapids utilise sélénium au pire
.
Enft non pourquoi tu veux utiliser la route search ton idée est pas ouf là
Pourquoi tu n'utilises tout simplement pas ça ? https://developers.google.com/youtube/v3/docs/channels/list?hl=fr#http-request
Dès que le nombre de vidéos changent, tu utilises la requête search pour avoir la vidéo.
Avec cette technique ta une limite de 100 chaînes environ et si tu veux vraiment le call le plus rapide tu peux gérer facilement 3 chaînes si il poste une vidéo par jour (si ça te convient pas tu utilises Sélénium où t'aura plus cette limite)
Théoriquement, si tu fais un appel par heure tu peux gérer 99 chaînes maximun, si tu fais un call par minute tu peux gérer maximum 85 chaines
Il vérifie pas genre?
Jamais eu ce besoin donc jamais tester
Hello, j'ai un problème assez étrange avec Discord (discord.js, v14)
Mon bot rajoute un rôle via une commande (interaction) et pourtant le rôle ne s'ajoute pas à l'utilisateur mais est marqué dans les logs. Vous savez d'où ça pourrait venir ?
peut tu nous envoyer le code si il te plait ?
Quand mon pc sera chargé oui 🙏
d'acc
bon finalement un autre problème vient de surgir : les commandes ne s'executent plus alors que j'ai pas modifié ma codebase, j'utilise la dernière version de sheweny et discord.js v14. Je n'avais pas ce problème pas plus tard que l'année dernière (Kappa)
Plus sérieusement, l'interaction de chaque commande est print dans la console alors que je n'ai pas fait de log pour ça?? Surtout je rappel que j'ai rien modif depuis cet aprem
est-ce que tu pourait envoyer un screen de tes fichier pour comprendre comment tu les a construit et le contenu de celui/ceux en question ?
J'ai résolu le problème entre temps, désolé de pas t'avoir répondu plus tôt. C'était un problème avec l'intégration de git qui ne synchronisait pas les fichiers et du coup certains prenait la place d'autres. D'où le fait que chaque commande étaient print, car c'était un fichier remplacé (un ancien fichier sur le repository)
oui
Bonsoir, je voudrais savoir j'ai un component header et je voudrais savoir comment je peux faire pour lui mettre un serversideprops avec nextJs voici mon code
en gros je souhaiterais pouvoir fetch mon api sauf que je ne sais pas comment faire dans un component
car de ce que j'ai vu on peut uniquement en mettre dans les pages
et le probleme est que mon component header et uniquement appelé dans mon layout donc je voudrais savoir si quelqu'un aurait un solution
Merci :)
Bonjour, je m'excuse de couper la demande précédente, mais je pense que mon problème est simple.
Alors voila, je ne m'y connais pas du tout en js pour le web et j'ai voulu faire une animation, j'ai cette partie la qui gère l'animation :
(envoyé apres, pas assez de place)
Le problème est que c'est très lent, sur firefox, ca passe mais sur chrome ca fonctionne au ralenti, j'ai essayer plusieurs codes comme calculer les positions directements en js et pas en css mais j'ai l'impression que le lag vient de la modification de style, or je ne vois pas comment faire autrement et j'ai vu des animations qui avaient l'air beaucoup plus complexes et qui fonctionne sur chrome sans lag.
setInterval(function () {
for (let index in lights) {
let light = lights[index]
if (typeof light.elem == "undefined" || light.elem == null) {
light.elem = document.createElement("div")
light.elem.id = "light-" + light.id
light.elem.classList.add("light")
backgroundContainer.insertAdjacentElement("beforeend", light.elem)
light.prevElem = document.createElement("div")
light.prevElem.classList.add("prev-light-part")
light.elem.insertAdjacentElement("beforeend", light.prevElem)
light.currentElem = document.createElement("div")
light.currentElem.classList.add("current-light-part")
light.elem.insertAdjacentElement("beforeend", light.currentElem)
}
light.progress += 1
if (light.progress > 100) {
light.prev = light.from;
light.from = light.target;
light.target = getNextNode(light.from, light.prev)
light.progress = 1
light.elem.style.setProperty("--bg--prev-i", light.prev.i)
light.elem.style.setProperty("--bg--prev-j", light.prev.j)
light.elem.style.setProperty("--bg--from-i", light.from.i)
light.elem.style.setProperty("--bg--from-j", light.from.j)
light.elem.style.setProperty("--bg--target-i", light.target.i)
light.elem.style.setProperty("--bg--target-j", light.target.j)
}
light.elem.style.setProperty("--bg--progress", light.progress)
}
}, 10)```
j'ai regardé et tu peux regarder le nombre de vidéo upload par une chaine pour un crédit donc tu enregistre le nombre de vidéo et tu vérifie si c'est le même a n+1 si non alors la tu fais ta requête pour récupérer la vidéo (utilise deux clé d'api comme ça si il te reste moins de 100 crédits sur la clé qui calcul ton delta tu peux toujours récupérer ta vidéo avec l'autre)
vous aimez trop me snober 
Ingénieux, bravo !
Mais finalement je suis resté sur la solution de base. Et pour savoir si c'est un short, je fais un call sur une URL et si j'ai un redirect, c'est que c'est pas un short
Avec la technique Pubsub, j'use aucun crédit et c'est instant !
ma technique aussi peut etre instant
et au moins c'est directement en raccord avec l'api youtube
Yep probablement mais en attendant, j'avais déjà un code pour le système Pubsub de Youtube. Il me restait plus qu'à gérer les shorts. C'est chiant à config mais une fois que c'est fait, tu y touches plus
après tu fais ce que tu veux les deux techniques se valent meme si, j'aurais pris sélénium pour alternative à l'api youtube
ça ce tient après faut voir ce que tu priorise :
- le côté opérationnel : avec pubsub tu pourras le mettre en place plus facilement et rapidement
- la maintenabilité : avec l'API de Youtube et ou tu as plus besoin d'un tier
Après tu peux aussi correctement tout interfacer avec une API et des end point propres puis tu commence avec pubSub et une fois en prod quand tu as du temps tu repasse sur l'API de youtube
EBot Dashboard, fait totalement en TS avec NextJS et React un avis un conseil de choses a changer ? (side bar de demo avec tout mes components)
Alors en point 1 dans ton summary tu as deux fois quasi la meme couleur c'est normal ?
Sinon tu as aussi un problème de contraste
tu proposes de créer un compte a un compte (après si c'est la démo autant pour moi)
et décole peut être la pagination en bas pour une navigation plus simple
demo effectivement c'est pour avoir un acces rapide aux pages de login
Sinon L'ui est propre j'en ai marre de ce violet mais c'est une question de gout personnel
je dois changer pour un jaune/orange comme sur mon logo j'attendais juse de le recevoir
après comme je l'ai dis ce point c'est personnel moi ce qui me choque c'est surtout la pagination
et augmente la border bottom de ton Thead
JOYEUUUUUUUX ANNIIIVERSSAIIIIIRE MON BICHOUNET D'AMOUR A LA CRÈME
(j'en ai fait un peu trop je crois)
Merci beaucoup mdrrr
Bon anniversaire !!
Merci
bon annif :p
Ça me rappelle un YouTubeur qui avait utiliser ça pour essayer de commenter en premier une vidéo de mR beast
C'est pas impossible vu que c'est la méthode la plus simple et opti de faire
L'année dernière, MrBeast avait annoncé que le premier commentaire sur sa prochaine vidéo allait gagner 10.000$ ! J'ai donc décidé de programmer un bot qui commente "first" pour essayer de remporter ce prix.
Dans cette vidéo, je t'explique comment je m'y suis pris pour coder tout ça avec le langage de programmation Python. J'espère que la vidéo...
Super intéressante d’ailleurs
Hi guys, I need help creating JavaScript code for a game called Gota.io. Help me to make a script with which my second tab of this game will follow the mouse coordinates in the first tab. That is, I am sitting on the first tab but my player in the second tab can move around the mouse coordinates without going to the second tab. That is, move in the direction of the mouse without going to the second tab.
personne ne saurait m'aider ?
Salut @prime leaf je viens de regarder ton codage est de que tu seraient disponible pour faire un appelle dans la journée pour que nous regardions tous cela
Salut, malheureusement je suis chez de la famille aujourd'hui donc je pourrais soit très tard ce soir soit demain si tu peux
Comment on crée un database-bot mongodb
??
Bonjour, j'ai un problème avec une commande d'un bot discord, cette commande sert a sortir un classement avec 15 noms, un bouton "suivant" en dessous permet d'effacer le message et d'afficher un nouveau message avec la suite du classement 16 à 30, puis 31 à 45, et ceci jusqu'à la fin de la liste. Cette commande fonctionnait parfaitement jusqu'au 26 décembre mais depuis j'ai une erreur à chaque fois que je clique sur le bouton, le message s'efface bien mais la suite ne s'affiche plus et le bot crash, il n'y a eu aucun changement dans le code.
at handleErrors (/home/container/node_modules/@discordjs/rest/src/lib/handlers/Shared.ts:148:10)
at processTicksAndRejections (node:internal/process/task_queues:95:5)
at async SequentialHandler.runRequest (/home/container/node_modules/@discordjs/rest/src/lib/handlers/SequentialHandler.ts:406:20)
at async SequentialHandler.queueRequest (/home/container/node_modules/@discordjs/rest/src/lib/handlers/SequentialHandler.ts:168:11)
at async _REST.request (/home/container/node_modules/@discordjs/rest/src/lib/REST.ts:211:20)
at async GuildMessageManager.delete (/home/container/node_modules/discord.js/src/managers/MessageManager.js:266:5)
at async Message.delete (/home/container/node_modules/discord.js/src/structures/Message.js:829:5)
at async InteractionCollector.<anonymous> (/home/container/commands/utils/request.js:127:9) {
requestBody: { files: undefined, json: undefined },
rawError: { message: 'Unknown Message', code: 10008 },
code: 10008,
status: 404,
method: 'DELETE',
url: 'https://discord.com/api/v10/channels/ xxxx /messages/ xxxx '
}
si vous pouviez m'éclairer ou si vous avez besoin de plus de précision faites le moi savoir
Je ne arrive pas à créé un database avec mongodb
Ah ok
Tu utilise atlas je suppose ?
Un tuto que j’avais fait y’a longtemps mais qui est encore d’actualité ^^
Salut j'essaye de faire revivre l'application jsplacement dont l'auteur a connu quelques mésaventures.
je code tout de mon côté, je ne récupère pas le code d'origine. vous pouvez télécharger mon application sur github.
bon weekend...
https://github.com/remib74/yaja-another-jsplacement-attempt
Ça sers a quoi ?
ça sert à générer des diffuse et height map pour du displacement dans blender par exemple
exemple
attention le script ne fonctionne que sous firefox pour le moment
C’est cool
merci le script est corrigé et fonctionne sous chrome, edge et firefox bon weekend
Petit tips pour ceux qui veulent l'utiliser pour du three js favorisez au max les normal aux displacements
Salut merci pour ta réponse, j'ai réussi à régler le problème, apparemment depuis la dernière mise à jour de discord.js il n'est plus possible de delete un message pour écrire la suite de mon classement dans un New embed, j'ai donc utilisé la fonction éditer et tout refonctionne.
salut, quelqu'un s'y connait en discord.js ?
oui
salut, enfaite en ce moment j'apprends le javascript, et j'avoue que j'aimerai bien essayer de faire mon premier bot, la docu m'aide mais je la trouve pas assez précise dans les commentaires, aurais-tu d'autres sources s'il te plaît?
https://creatorsarea.fr/tutoriels?category=development
https://discord.js.org/#/
https://discordjs.guide/#before-you-begin
https://developer.mozilla.org/fr/
The MDN Web Docs site provides information about Open Web technologies including HTML, CSS, and APIs for both Web sites and progressive web apps.
n'utilise pas les vidéos c'est de la merde vu que 3/4 des personnes vont juste copier betement
les 3 derniers je connais, la base
avec tout ça c'est suffisant
si tu ne comprends pas une partie souvent une recherche google suffit
ouai, mais des fois c'est genre une ligne que je comprends pas, et donc ducoup ça me gave de pas comprendre
pose la question ici
on est fait pour y répondre
j'vais essayer de me remettre la tête dedans à fond
merci
après discord.js est rempli de classes, fonctions et autre
tu peux très bien utiliser une autre librairie plus légere pour comprendre
A little help to use the discord api.
Handle connection to the gateway and provide a fast way to make requests to discord.
This package is not finished, it is still in development.. Latest version: 1.2.8, last published: 5 months ago. Start using pioucord in your project by running npm i pioucord. There are no other projects in the npm registr...
oui mais si c'est pour avoir une librairie plus légère mais avec laquelle tu fais - de chose c'est nul j'trouve
non tout ce que tu peux faire avec discord.js tu peux le faire avec un module plus leger
- rapidement?
discord.js c'est vraiment opti?
bof
en soit discord.js c'est très bien pour commencer mais c'est rempli
après tu peux commencer avec discord.js vu que t'aura plus de tuto pour ce module
un module plus leger bouffe moins de perf
niveau vitesse c'est similaire les deux exécutent la même requête après en théorie un module plus leger sera + rapide vu que discord.js a pleins de conditions avant de faire la requete
Faut aussi penser que discordjs met énormément de choses en cache à la différences d’autres librairie et est mis à jour très régulièrement 👀
le cache bouffe à max
Yep mais ça évite quand même pas mal de requêtes ^^
cv si ta une maj à faire sur pioucord on m'appele je la fais mdrr
Oui c’est sûr x)
pioucord aussi à un cache
il fonctionne pareil que discord.js à un point different
c'est que tu peux le configurer
Chaipa, je viens de découvrir XD
si tu veux que un event tu peux décider
Pioucord c’est à toi ? Fin j’veux dire ça t’appartient ?
non je suis juste un collaborateur
mais je ne suis pas le créateur
C’est à dire ?
si il a un bug je peux le régler, si il faut ajouter une fonctionnalité je peux le faire
pioucord est + intuitif?
tu sais ce que tu fais au moins
mais si tu debutes vraiment et ta besoin de tuto utilise discord.js
oui c'est ça, j'ai quelques bases très rapides en js, mais j'ai toujours du mal avec certaines choses
et certaines choses sont basiques, mais juste je les oublies des fois
ducoup, pour discord js je recommence avec la doc?
le guide
la doc est complementaire en vrai
j'ai utilisé interaction.editReply ca fonctionne nickel et c'est plus simple que ce que j'avais
non
ah ouii
we scuse
tu me conseilles pas trop le guide de creators area ducoup?
après ce que je trouve dommage c'est que parce exemple en tant que débutant, " instancier un bot " j'sais pas trop à quoi ça correspond exactement
je vois
non sur un embed, j'ai 2 boutons pour passer d'une page a l'autre sur un classement
@ocean bluff t'en penses quoi du framework shaweny pour commencer ? 
c'est utile pour faciliter la creation de son handler
Parce que c’est le framework utilisé sur le guide de CA, mais ça m’fait une erreur
Je chercherai demain
Moi je te conseillerais de commencer par faire ton propre handler
avant de prendre celui d'un framework, ça fait comprendre pas mal de choses
Tu penses ?
Oui
J’suis perdu mdrr jsp quoi faire
Les bgs, je voudrais vos avis d'experts
Pour apprendre JS, est ce que les vidéos pakistanaises de 8h suffisent ou le mieux c de se prendre une petite formation (payante ou pas) ?
Et si vous avez des formation ou des créateurs de contenus à conseiller je PRENDS
Bah perso je me suis contenté de la doc, de décortiquer des projets sur github etc
et ça m'a suffit
Ouais mais pour mettre en pratique tout ce que tu lis tu te fais des petits projets ?
Tu partages du contenu public sur ton GitHub? Si t'es d'accord je peux vérifier ?
c'est ce que je faisais oui
nope, mon github n'a rien de public pour le coup x)
Je sais pas trop quoi faire comme petits projets mdr c ça le problème
Tu peux te lancer sur des commandes bénévoles en précisant que tu débutes dans #demande-de-dev ou bien tenter de te lancer sur d'autres projets que tu aurais en tête
Par exemple, rentrer des infos dans un json et les ressortir via 2 commandes
La j'ai fait un site en HTML/CSS par exemple. J'aimerais bien ajouter du JS parce que c'est pour mon PF et je veux le montrer pour trouver une alternance. À part des addEventListener jsp pas trop quoi faire
C lourd de fou ça
Oula
bah, ça rend content quelqu'un, et toi ça te fait apprendre
tu feras peut-être pas un truc clean mais ce sera fonctionnel pour l'utilisateur, et toi tu y gagnes de l'exp
Je pense qu'il me faut aussi un bon bagage technique, je débute mais y a des notions fondamentales qui m'échappent un peu
Oue je vais faire ça je pense
Je voulais faire un peu ça sur Fiverr, en mettant des prix dérisoire genre 0,50centimes le projet mais même comme ça c dur de trouver mdr
essaye demande de dev en gratuit
Yes je vais faire ça. Tu penses qu'utiliser une IA pour commencer est contre productive pour l'apprentissage d'un langage ou ça aide bien ?
ça dépend l'usage que tu en fais à vrai dire
Ouais, c'est sur que si je lui dit "ouais, je veux que ma balise apparaissent à tel endroit code le moi" c flingué je trouve
même, des fois chatgpt te sors des trucs deprecated en fonction des langages, des trucs pas opti etc
C'est vrai. Tu as GPT4 ?
Nope
mon avis de debutant c'est que, si tu ne t'en sert pas pour faire de A a Z ton code, et que tu l'utilise comme un professeur personnelle, c'est une enorme aide (en tout cas quand tu apprend de nouvelle chose) sa m'a permis de gagnée des dizaine et dizaine d'heurs de recherche de documentation, quand tu cherche qu'elleque chose de precis
je l'utilise principalement pour poser des question sur la theorie, comprendre mieux proceder, chercher la bonne fonction qui permet de faire ca, les bonne biblio etc.
Vu comme ça ça peut être lourd c'est vrai. Est ce que la version payante est bien plus intéressante dans ce sens où tu utilises la gratuite ?
j'utilise la 3.5 gratuite, je n'ai jamais test la 4 mais oui elle doit etre vachement mieux, de tout facon a l'avenire on sera a minma toujour equipe d'ia mieux que 3.5 pour nous aider, autans apprendre maintenant
J'ai la 4 et elle est vachement mieux personnellement
C'est plus détaillé et approfondi
Après pour de l'apprentissage pur je déconseille de le payer
Je l'utilise pour du texte souvent et d'autres idées ce qui m'aide énormément et un gain de temps énorme
Après ça reste dans les bases, à toi d'approfondir et si tu veux faire vérifier ton code quand il est avancé, comme il le dit lui-même, vaux mieux faire vérifier par un développeur expérimenté
Après @hallow niche pas obligé d'utiliser énormément de JS sur ton PF, à toi de ton côté de faire des petits projets des trucs comme ça en JS pour montrer ton niveau
J'ai eu la 4 et mon abonnement est résilié, j'ai littéralement l'impression d'être tout nu. GPT 4 est exceptionnel mais je l'utilisais pas pour dev donc j'ai pas conscience de son niveau la dedans.
Merci pour les infos
Je peux le faire vérifier ici ou c'est un peu mal venu ?
Ouais je sais, mais vu que je veux faire une alternance dans le web, faut que je montre que je sais utiliser quelques aspects du JS pour pas passer pour un gros nooby
