#javascript-typescript
1 messages · Page 35 of 1
en code tu peux fonctionner avec des opérations binaires
un peu comme les permissions discord
et ca me servirait à quoi ?
faire un système de permissions simple 🤷♂️
Je voulais savoir comment modifier un graphe en ligne. J’ai une courbe sur un site et je cherche comment la modifier, un peu comme quand on fait “Inspecter” et qu’on modifie du texte simple. Sauf que là, je veux modifier le graphe directement. Je suis conscient que ça ne sera visible que chez moi.
Bonsoir , des personnes on déjà fait un système d'oauth discord ? si oui j'aurais besoin de votre aide
Pose directement ta question au lieu d’attendre de savoir qui pourra te répondre 😉
L’oauth2 de discord est certes très simple, mais c’est un sujet assez vaste, donc on gagnera du temps si tu donnes directement la partie concernée par ton problème
Tu veux monter ta moyenne ?
Modifie les valeurs d’entrée de ton graph
bien le bonjour, est-ce que quelqu'un pourrait m'aider ? j'ai une rreur sur vsc Uncaught Error Error: ENOENT: no such file or directory, scandir elle renvoie a ça fs.readdirSync(handlersPath).forEach((file) => { la partie en entière : ````fs.readdirSync(handlersPath).forEach((file) => {
require(path.join(handlersPath, file))(client); // Utilise path.join pour inclure chaque fichier//-
if (file.endsWith('.js')) {//+
const handler = require(path.join(handlersPath, file));//+
if (typeof handler === 'function') {//+
handler(client);//+
} else {//+
console.error(Le fichier ${file} n'exporte pas une fonction.);//+
}//+
}//+
});```
(j'ai bien un dossier qui s'apelle handlers)
j'ai éssayé avec dirname ca me dit que jai pas de dossier qui s'apelle handlers...
deux trois questions, pourquoi utiliser //+ à la fin de tes lignes, pourquoi tu importes deux fois ton fichier require(path.join(handlersPath, file))(client); et const handler = require(path.join(handlersPath, file)); ligne 2 et 4?
en deux : ton path.join donne dirname/file ce qui ne peut être importé; je te conseille un path.resolve qui te sors le chemin absolue de ton fichier C:\\le\chemin\tres\long\de\ton\dossier\dirname\file ce qui est importable
Ou alternative, tu ajoutes __dirname à ton path.join
l'alternative s'écrit path.join(__dirname, handlersPath, file); je précise car des gens m'ont déjà mis path.join(premierarg, narg)__dirname
Hello, petite question, on ne peut pas savoir les permissions d'un threads 🤔
Le //+ et //- je pense c'est git
Mentionner moi si vous avez une réponse 🙂
un thread n'est pas un channel aux yeux de l'api ?
la propriété habituelle pour récupérer les permissions n'est pas présent ?
et après pour savoir si un membre est dans le thread, tu peux taper par là
Je pose une question pour avoir une réponse et tu me réponds par une question 🤔
je te donnes des pistes pour essayer, je n'ai rien sous la main pour le faire, si tu poses la question c'est que toi si 😉
C'est pas idiot dans l'absolu comme façon de faire, ça t'ouvre d'autres recherches à faire ahah
ce sera plus rapide si tu essaye directement, qu'attendre que j'ai le temps de faire un bot de test, et essayer
J'ai dis le contraire ? Mais si on pose une question, c'est pour avoir des réponses, pas d'autres questions 👍
si tu n'as pas réponse à ma question, alors c'est que tu n'as pas essayé de chercher 🤓 *
c'est la première chose qu'on regarde quand on veut savoir si un channel a des permissions
bon courage, et désolé
aigri 
et aussi si tu tapes sur /channels/{channel.id}/thread-members/{user.id} tu peux recup un objet guild member, apparement il y a une propriété pour les permissions, si tu veux les permissions d'un membre sur un thread
en fait peut-être pas certain de cette affaire
mais à tester
Aucunement aigris, juste la réalité
un peu quand même je te trouve vachement mauvais avec lui mais bon, il prend de son temps pour te lire et t'écrire déjà..
Je ne vois toujours pas le rapport mais bon mdr
Revois ton comportement envers les gens plus simplement, il te donne des pistes pour t'aider à résoudre ton problème, tu es sans doute brute de décroffrage et j'entends bien mais essaie de faire attention à ça, tu demandes une aide pour rappel, les gens te répondent de bonne foi rien ne les y force. De plus, il t'a même envoyé des liens comportant des ressources. De la même manière, je vais te filer une piste moi aussi, comme preuve de bonté malgré le ton désagréable que tu emploies :
const thread = message.channel; // S'il s'agit bien d'un thread, attrape un message pour ton action et choppe son channel, ça devrait ressortir le thread normalement
const userPermissions = thread.permissionsFor(message.member);
console.log(userPermissions.toArray());
Je ne suis en aucun cas désagréable et je te conseil de revoir mes messages pour le coups 🤷♀️
T'es définitivement dans le déni dans ce cas, je semble pas être le seul à te le dire mais bref on va pas flood. Ton problème est résolu ?
Si tu le dis 😂
vrm dans le deni c une folie, deja faut pas croire qu'on puisse te donner une réponse clair et net si ca arrive tant mieux sinon comme toute vrai discussion on peux te proposer des pistes, commence a remercier avant de critiquer la réponse d'un gars qui essaye de t'aider, mais bon je pense qu'on est sur une cause perdue...
Au pire passons à autre chose 🤓
J’ai clear, passez à autre chose les gars
Bonjour, une personne qui connait bien next js est disponible pour un problème de typage concernant les metadatas en dynamique ? L'erreur : Type error: Type '{ searchParams: { type: string; }; }' does not satisfy the constraint 'PageProps'.
Types of property 'searchParams' are incompatible.
Type '{ type: string; }' is missing the following properties from type 'Promise<any>': then, catch, finally, [Symbol.toStringTag]
32 |
33 | // Check the prop type of the entry function
34 | checkFields<Diff<PageProps, FirstArg<TEntry['default']>, 'default'>>()
| ^
35 |
36 | // Check the arguments and return type of the generateMetadata function
37 | if ('generateMetadata' in entry) {
Quelqu'un conseillait ca en ligne pour next 15 alors j'ai tester (pas d'erreur particulière) sinon il ressemblait à ca initialement :
pardon si tu parles du fait que c'est une promesse j'ai juste suivi la doc et les recommandations en ligne
Type '{ searchParams: { type: string; }; }' does not satisfy the constraint 'PageProps'.
si tu regardes bien, ton typage n'est pas le même que celui de la doc
il faut que searchParams aie le même typage que dans la doc
enfin props
Le truc c'est que dans ma page je n'ai pas besoin d'utiliser searchParams c'est pour ça que je l'ai retiré des Props, de base je voulais le rendre optionnel avec searchParams? mais même en le supprimant, supprimant le cache il me sort une erreur avec searchParams
c'est une erreur qui sort lors du build
Il me semble pas que ca soit obligatoire et j'ai essayer différente manière, en le mettant sans l'utiliser mais ca me sort toujours cette erreur de typage
typescript est stricte sur le typage, s'il attends un typage particulier le transpiler crachera une erreur si ce typage n'est pas respecté
ou alors je n'ai pas bien cerné le problème, mais de ce que je vois il faut tout mettre :/
et tu mettrais quoi sur la page pour utiliser le searchParams car je n'en ai pas besoin ?
honnêtement j'en sais rien, je sais pas comment Next fonctionne
tu appelles où cette fonction ?
Je déclare seulement generateMetadata au dessus de la fonction pour ma page le reste est gérer par next
Il faudrait que ce soit générer via une fonction générique mais bon pas le temps de tout casser 
Le truc c'est que je vois pas comment déclarer searchParams si il est vraiment obligatoire j'ai essayé avec sans la jsuis au bout du rouleau
Et vu que y'a l'air d'avoir eu des changements plutôt récents par rapport à ça y'a pleins d'info obselète
si tu suis l'exemple
il le type mais ne l'utilise pas
tu type comme lui et tu test
export async function generateMetadata({ params, searchParams }: Props, parent: ResolvingMetadata): Promise<Metadata> {
par contre jsp si y'a vrm besoin du parent, a voir si il peut dégager
Non le parent pas nécessaire et j'ai déja essayer de déclare searchParams sans l'utiliser après peut être que le export default a la fin a son importance mais en soi j'ai déja eu des erreurs sur params a peu près la même que searchParams au final de cette manière ca semblait valide vu que maintenant j'ai cette erreur
La je l'ai déclarer sans l'utiliser comme sur l'exemple, j'ai toujours l'erreur + eslint :
Yo le souci c'est que searchParams n'a pas la structure que PageProps attend regarde dans la définition de PageProps (fichier types) pour voir ce qui est attendu par exemple si c'est une promesse tu peux faire : const searchParams = Promise.resolve({ type: 'string' }); sinon adapte directement searchParams pour inclure toutes les propriétés nécessaires une fois que tu auras aligné les types l'erreur devrait disparaître
Yo j'ai pas le temps de régler le problème de suite mais je te tiens au courant dès que je peux, tu aurais une heure après 18h30 de dispo sinon?
Yes pas de soucis, après je n'ai pas la possibilité de voc mais je suis disponible à tout heure sinon x)
C’est déjà ca pas de soucis 
Hello, quelqu’un pourrait m’expliquer comment faire pour qu’û bot discord puisse avoir un statut personnalisé ?
Comme @terse geyser
toute la documentation est la :)
Thanks!
Je trouvais pas ca m’enervais j’ai tapé mon bureau
J'ai essayer ton approche mais ca ne semble pas être ça
Salut tout le monde !
J'ai fais une commande ban, mais j'aimerais envoyé un mess au ban à l'aide de mon bot sauf que ça ne fonctionne pas :
guild.members.ban(member, { reason: `✅ Cette personne a été exclue définitivement pour la raison suivante : ${raison}.` });
const kickedEmbed = new EmbedBuilder()
.setTitle("Un membre à été banni !")
.setDescription(`${member} a bien été banni du serveur par **${interaction.user}** pour la raison suivante : **${interaction.options.getString('raison') || 'Aucune raison fournie.'}**`)
.setFooter({ text: 'Aucun débannisement ne sera effectué automatiquement, il devra être fait manuellement.' });
interaction.reply({ embeds: [kickedEmbed] });
const resultbanpermEmbed = new EmbedBuilder()
.setTitle("Vous avez été banni !")
.setDescription(`Vous avez été banni définitivement par ${interaction.user} pour la raison suivante : **${interaction.options.getString('raison') || 'Aucune raison fournie.'}**`)
.setFooter({ text: "**Vous ne serez pas** débanni tant que votre bannisement ne sera pas révoquer par l'équipe staff de ce serveur."});
// send ban result to the banned member
const msg = client.users.send({ id: `${member}`, embeds: [resultbanpermEmbed]});
console.log("ban result envoyé :" + msg)
Je précise que c'est pas le code entier, la commande ban marche de base, c'est à cause mon ajout qu'il ne fonctionne plus donc normal qu'il n'y pas les accolades de la fin.
erreur :
ReferenceError: client is not defined
at Object.execute (C:\Users\andsl\Documents\ctOS\commands\moderation\ban.js:95:25)
at Client.<anonymous> (C:\Users\andsl\Documents\ctOS\index.js:40:17)
at Client.emit (node:events:524:28)
at InteractionCreateAction.handle (C:\Users\andsl\Documents\ctOS\node_modules\discord.js\src\client\actions\InteractionCreate.js:97:12)
at module.exports [as INTERACTION_CREATE] (C:\Users\andsl\Documents\ctOS\node_modules\discord.js\src\client\websocket\handlers\INTERACTION_CREATE.js:4:36)
at WebSocketManager.handlePacket (C:\Users\andsl\Documents\ctOS\node_modules\discord.js\src\client\websocket\WebSocketManager.js:348:31)
at WebSocketManager.<anonymous> (C:\Users\andsl\Documents\ctOS\node_modules\discord.js\src\client\websocket\WebSocketManager.js:232:12)
at WebSocketManager.emit (C:\Users\andsl\Documents\ctOS\node_modules\@vladfrangu\async_event_emitter\dist\index.cjs:287:31)
at WebSocketShard.<anonymous> (C:\Users\andsl\Documents\ctOS\node_modules\@discordjs\ws\dist\index.js:1190:51)
at WebSocketShard.emit (C:\Users\andsl\Documents\ctOS\node_modules\@vladfrangu\async_event_emitter\dist\index.cjs:287:31)
(node:16100) Warning: Supplying "ephemeral" for interaction response options is deprecated. Utilize flags instead.
(Use `node --trace-warnings ...` to show where the warning was created)
node:events:502
throw er; // Unhandled 'error' event
A première vue, il ne trouve juste pas ta variable client, avant-dernière ligne du bout de code. Elle est définie où cette variable ? Et si elle est dans un autre fichier, est-ce que tu l'as importée ?
je crois c'est moi mdr
j'ai mis client
a la place de member
Le problème a disparu du coup ?
Envoie si tu veux
TypeError: Cannot read properties of undefined (reading 'send')
pourtant j'ai ça :
const member = interaction.options.getMember('utilisateur');
Tu le ban avant de lui envoyer un message ?
yes
faut que je fasse l'inverse ducoup?
Je pense, essaye
j'essaye
Récupère le membre, envoie lui un message et ban le dans la foulée
toujours pas
TypeError: Cannot read properties of undefined (reading 'send')
at Object.execute (C:\Users\andsl\Documents\ctOS\commands\moderation\ban.js:84:42)
at Client.<anonymous> (C:\Users\andsl\Documents\ctOS\index.js:40:17)
at Client.emit (node:events:524:28)
at InteractionCreateAction.handle (C:\Users\andsl\Documents\ctOS\node_modules\discord.js\src\client\actions\InteractionCreate.js:97:12)
at module.exports [as INTERACTION_CREATE] (C:\Users\andsl\Documents\ctOS\node_modules\discord.js\src\client\websocket\handlers\INTERACTION_CREATE.js:4:36)
at WebSocketManager.handlePacket (C:\Users\andsl\Documents\ctOS\node_modules\discord.js\src\client\websocket\WebSocketManager.js:348:31)
at WebSocketManager.<anonymous> (C:\Users\andsl\Documents\ctOS\node_modules\discord.js\src\client\websocket\WebSocketManager.js:232:12)
at WebSocketManager.emit (C:\Users\andsl\Documents\ctOS\node_modules\@vladfrangu\async_event_emitter\dist\index.cjs:287:31)
at WebSocketShard.<anonymous> (C:\Users\andsl\Documents\ctOS\node_modules\@discordjs\ws\dist\index.js:1190:51)
at WebSocketShard.emit (C:\Users\andsl\Documents\ctOS\node_modules\@vladfrangu\async_event_emitter\dist\index.cjs:287:31)
(node:7132) Warning: Supplying "ephemeral" for interaction response options is deprecated. Utilize flags instead.
(Use `node --trace-warnings ...` to show where the warning was created)
Si tu passes par client.users.send(...), de mémoire il te faut un paramètre user et non id
Après comme on vois pas tout ton code c'est compliqué de te donne une solution précise 
sur le wiki discord c'est id
tu utilises discord.js ?
oui
quelle version ?
👀
je regardais la dernière version comme un golmon
C'est pareil dans la dernière version 
envoie le lien de la page 🤔
tjs vérif sur la doc, le guide n'est pas 100% a jour 
d'acc
merci
si quelqu'un peut test le système de bannisement svp
car jpp voir si ça send un message
Bon j'ai fais un tour sur l'ensemble des searchParams et params en les retypant le mieux que je pouvais le probleme a l'air régler c'est probable que ce soit un autre searchParams qui rentrait en compte j'en avais un sur une autre page 🤌
Ah tant mieux si c'est corrigé x)
Tu t'y connais bien en next de manière générale ? en terme d'optimisation/cache ce genre de petit trucs
avec next pas vraiment mais du cache en général oui je ne touche pas assez à next
Okok car je viens de tester lightnhouse et je suis a 70 de score de perf et bonnes pratiques, a cause des images, les chargements tout ça pour l'instant j'ai pas de question immédiate mais je sent que des problèmes vont se poser alors sait on jamais aha
Est ce que vous conseiller vercel pour heberger un site web en prenant un abonnement ?
Je vais y placer mon projet next contenant mon dossier api, je vais mettre la db postgresql sur vercel si utilisation
Personnellement j’ai fais mon premier projet next js (loin d’être un expert) mais je l’ai mis sur vercel étant donné que ca leur appartient ca me semblait logique. En soi ca fait le taff, ca se met à jour par rapport a tes branches et ton repo, l’interface est compréhensible ect et si tu payes t’as des optimisations en plus il me semble
ok, je pense me tourner vers ca, tu utilises quoi de ton coté ?
A quel niveau ?
Pour mettre ton front end sur un hebregment et stocker ton backend node js si jamais tu bosses avec
Pour ce qui est de l’hébergement de tes projets il suffit de relier ton github a vercel puis de sélectionner celui que tu veux ajouter. Ya quelques contraintes en terme d’architecture et tu dois déclarer les commandes de build variable d’environnement ect mais le reste plutot simple
Il te fait une preview pour chaque branche push dont la main qui est le projet en prod
En sachant que concernant les contraintes d’archi ça concerne pas vraiment next js car généralement la doc te recommandera la bonne
CloudFlare Pages/Workers, gratuit à un certain seuil et super rapide
Salut , j'aimerais faire un sorte que les embeds de mon help fasse tous la même taille en largeur pour rendre ça plus agréable visuellement est ce possible?
Voici mon code : ```js
const { EmbedBuilder } = require('discord.js');
const config = require('../config.json');
module.exports = {
name: 'help',
description: 'Affiche la liste des commandes',
ownerOnly: false,
execute: async (message, args, client) => {
const categories = {
"👑 Owner": client.commands.filter(cmd => cmd.ownerOnly),
"🛡️ Modération": client.commands.filter(cmd => !cmd.ownerOnly && ['addrole', 'delrole', 'derank', 'lock', 'lockall', 'unlock', 'unlockall', 'hide', 'hideall', 'unhide', 'unhideall'].includes(cmd.name)),
"🔍 Utilitaires": client.commands.filter(cmd => !cmd.ownerOnly && ['serverinfo', 'snipe', 'role', 'vocinfo', 'timeout'].includes(cmd.name)),
"🖼️ Images": client.commands.filter(cmd => !cmd.ownerOnly && ['pic', 'banner', 'serverpic', 'serverbanner'].includes(cmd.name)),
"📊 Information": client.commands.filter(cmd => !cmd.ownerOnly && ['help', 'allbots', 'alladmins'].includes(cmd.name)),
"🛠️ Configuration": client.commands.filter(cmd => !cmd.ownerOnly && ['antilink', 'antimassmention', 'antispam'].includes(cmd.name))
};
const embeds = [];
for (const [category, commands] of Object.entries(categories)) {
if (commands.size > 0) {
const commandList = commands.map(cmd => `\`${config.prefix}${cmd.name}\`\n${cmd.description}`).join('\n\n');
const embed = new EmbedBuilder()
.setTitle(category)
.setDescription(commandList)
.setColor(config.color)
.setTimestamp();
embeds.push(embed);
}
}
message.reply({ embeds: embeds });
}
};
ça rend comment actuellement ? @keen narwhal
Le problème c'est que l'embed ne fera jamais la même taille en largeur même si tu rajoute des espaces ou si tu utilise une technique lugubre
Tout simplement à cause de la taille des écrans et des types de format d'écrans (monitor, laptop, tablet, mobile)
Tu peux forcer la taille avec des images
@keen narwhal
genre ca (l'image est juste sous le message)
Hey vous me conseillez quoi pour apprendre JavaScript (principalement pour faire des bot discord)
Déjà, les bases de JS
Ensuite tourne toi vers NodeJS/Deno qui sont des "moteurs" qui sont des environnements moteur en JS ("runtime environment"). Tu as besoin d'utiliser ce genre d'outil pour faire des bots Discord)
Ensuite, tu devras utiliser une librairie pour créer ton bot discord. La plus connue et celle que je recommande c'est Discord.JS. Cependant, je te conseil de bien te documenter sur la manière dont fonctionne une librairie.
En l'occurrence, DiscordJS fournis un ensemble d'outils (classes, méthodes..) pour faire des appels à l'API de Discord. C'est essentiellement et pratiquement que ça.
En même temps, tu dois aussi savoir comment fonctionne un bot sur Discord. Comment il intéragit, comment Discord a façonné son système (qui s'est complexifié de plus en plus en fonction des années). Ca te permet d'être à l'aise avec l'environnement que tu utilise
Non en gros c’est en plusieurs embed et je veux que chaque embed fasse la même largeur
ouais la solution c'est celle que je t'ai donné
Vous connaissez des bons frameworks vue (like vuetify) pour créer un protfolio clean un peu dans les thèmes sombres qu'on a aujourd'hui avec des petites animations etc
?
tu trouvera sûrement ici https://awesome-vue.js.org/
thanks
Hey c'est quoi le lien de la documentation ?
c'est a dire?
de?
De discord.js (pas sûr que ce soit ça mais tu as compris)
https://discord.js.org/docs/packages/discord.js/14.17.3 @compact shoal
Pour resize tes embed tu peux juste ajouter une photo à l’embed
Genre une photo de 900px par 1px
Transparente
obligatoirement ?
c'est la manière la plus simple de resize des embes
okk je vois
c'est combien la largeur max d'un embed?
oula, alors la c'est une bien bonne question, je vais regarder si je trouve quelque chose
D'après mes tests, une image de 400pixel est suffisant pour resize au max un embed, au delà l'embed ne gagnera pas en taille, mais rien ne t'empêche de mettre plus grand
Intéressant a savoir mais, j'ai mis une image de 400 pixel quand on sélectionne en grand on vois l'image, mais avec une image de 1000 pixel on la vois plus
On en apprend tous les jours
0+
Bonsoir à tous , j’ai une question vous avez un bon hébergeur nodejs/ ou VPS à me conseiller pour mes bots Discord
D’accord mercii
ovh
ou achète un rasberry pi au pire
c'est quoi?
Un ordinateur de la taille d'un iphone plus ou moins
ça consomme rien en électricité donc ça te coutera bien moins cher qu'un hébergeur
Entièrement d'accord d'autant que de ce que j'ai compris c'est uniquement pour du bot discord donc même pas besoin d'Ip public donc frais en moins hormis l'électricité tu paye rien d'autre et encore sa ce compte en centime d'euro 🤣🤣
L’alim du raspberry c’est du 27W de mémoire. à 0.27€ le kWh, en imaginant que tu laisse le rpi allumé 24/7 et que tu utilise 100% de la capacité de l’alim, ça te fait 5€/mois
Dans la réalité t’es plutôt à 10W donc ~2€/mois pour 4 cœurs 8Go de ram et jusqu’à 512Go de stockage
Imbattable face à un hébergeur
Bon après chez l’hébergeur du paye une garantie et un SAV
Et faut voir le coût d’amortissement du raspberry aussi
Si ton projet d’arrêté dans 6 mois c’est pas rentable
En vrai ça dépend
La raspberry tu la gardes trop longtemps
J’en ai acheté une en mai pour un peu plus de 100€ ( 110 ou 115) elle m’a servi pour pas mal de truc différents ( parfois plusieurs en même temps ) actuellement j’en fait rien depuis 3-4 semaine mais je sais que je vais re commencer à en servir
Hormis la puissance qui sur certains truc ça doit être relou c’est le meilleur investissement
EUH
sa a augmenté autant que ça
Ça dépend ce que tu prend moi j’ai choisi avec des truc en plus
Mais une raspberry 5 de base tu la trouve pour 60 je pense
ah oui ok je comprend mieux
nn parce que là dans ma tête on passait de 30€ à 110€ 🤣
Mdrrrr ça change
Après si c’est juste de l’host de bot une raspberry 3 fait large l’affaire pour 30 sur Amazon je crois
De mémoire
oui clairement si c'est que pour du bot discord un rpi est largement suffisant
En 2021 le 8Go c’était 180€ min (et pas en kit)
Ça dépend la quantité de RAM
De mémoire pour le pi 5 on est entre 45 et 90€ pour uniquement la carte
Donc 110€ c’est pas déconnant
Ouais pas faux
Perso, j’ai choisis un ptit PC comme ça pour avoir plus de flexibilité
x2 emplacements de disques et x2 slots de RAM avec pas mal de ports à l’arrière
Et j’ai comparé avec un pote, et malgré que le CPU ai moins de cœurs que le pi 4, il reste plus puissant
starf a ce prix là autant acheter une blade
Ou monter un vrai PC X)
oui mdr
En vrai si t’as pas de problème à acheter d’occasion, je recommande le mini pc plus que le pi
Moins cher plus modulable
Mais faut s’y connaître parce qu’il y a beaucoup de merdes
bas surtout que pour le même prix t'as un vrai CPU quoi
Soudé mais ouais
Le 1GHz du pi fait mal
J’avoue c’est très très pratique perso le seul truc qui m’a fait hésiter et prendre la pi c’était pour le coup de l’électricité ( même si pour le coup ça change pas énormément mais c’est plus pas conviction lol en sois le pris au kwh je porte pas trop d’importance)
après rpi sa reste des micro contrôleur(si je dit pas de connerie) pour faire de la dom ou des bornes d'arcade on leur demande pas d'être surpuissant sinon dans ce cas là autant ce tourner sur un rack/blade ou même un pc simple quoi mdrr
L’alim c’est du 50W
Et le CPU est à 35W donc c’est pas beaucoup plus haut que le rpi en utilisation normale
Sauf que quand t’as des pics d’utilisation des ressources, ben t’as ces ressources alors qu’avec le pi…
Je dis pas le contraire, pour la taille, il s’en sort très bien
Après les rpi tu peux très bien les monter en cluster mais bon 🤣
Ouais mais on est plus sur 90€ là 😂
90 x le nombre de rpi que tu souhaite
Et puis pas dit que ça fonctionne pour tous les usages
- le prix du boitier ptdr
Alors là excellente question pas sûr non plus qu'il apprecie de la virtualisation
mais tu peux tous faire avec un rpi même un routeur wifi 🤣 mais bon
Ben en soit tu peux faire tout ce que le rpi fait sur n’importe quel PC. C’est juste que de part sa taille, le rpi est très utilisé dans le monde de la bidouille
alors là idk la seule fois que j'en ai fait un c'était au début du cryptominning sur l'ETH ou chez pu quelle crypto et encore j'avais que 2 RPi donc bon
Oui j’imagine que la durée d’amortissement de l’investissement doit être assez longue 😂
Oui mdrr après un bon compris pour les personnes qui ne pouvait pas lâcher 2k dans un miner mdr

Si tu es en 2011 oui 

non
Combien je peux gagner en minant des Doge sur un cluster de Raspberry pi ?
Formations: https://cours.cocadmin.com
Newsletter: https://cours.cocadmin.com/newsletter
Rejoignez le discord: https://discord.gg/4h2xBFh
Twitter: https://twitter.com/cocadmin
Instagram: https://instagram.com/cocadmin
#creatornow
Vous savez que c’était possible de miner du bitcoin avec un papier et un stylo ? 👀
non
dommage
Par contre tu peux miné en dormant ça c'est good 😴
Grand question quelqu'un si connais réellement en crypto ici ? 🪙
Oui
Salut à tous, est ce que quelqun ici sait brièvement faire fonctionner les API de vinted moi ça merde je sais pas pourquoi
Si tu parles de l'API officielle tu as la documentation directement. Si tu parles de l'API pirate tu ne peux pas obtenir d'aide sur un sujet illégal ici.
c'est officiel je pense
L'API pirate est pas illégale mdr
c'est du reverse, c'est totalement legit
Ton PC accède à l'api "pirate" dès que tu va sur vinted, juste tu l'utilise sans l'UI
légit dans certain context
Jamais, c'est (entre autres) une violation du droit d'auteur. l'API que tu utilises sur "l'UI" elle est privée elle n'est pas faite pour être utilisée ailleurs. L'exploiter ailleurs est illégal car ça enfrunt :
- Article L335-2-1 et L335-3 du code de la propriété intellectuelle.
- Article 323-1, 323-2, 323-3, 323-3-1 du code pénal
Code de la propriété intellectuelle
Article L335-2-1 : Punit de trois ans d'emprisonnement et de 300 000 euros d'amende le fait d'éditer, de mettre à la disposition du public ou de communiquer au public, sciemment et sous quelque forme que ce soit, un logiciel manifestement destiné à la mise à disposition non autorisée d'œuvres ou d'objets protégés.
Article L335-3 : Considère comme délit de contrefaçon toute reproduction, représentation ou diffusion d'une œuvre de l'esprit en violation des droits de l'auteur, y compris la violation des droits relatifs aux logiciels.
Alors non chef le reverse engineering est bien légale dans certains context
y'a pas de propriété intellectuel sur la logique d'un logiciel
Code pénal
Article 323-1 : Sanctionne l'accès frauduleux à un système de traitement automatisé de données (STAD) par deux ans d'emprisonnement et 60 000 euros d'amende.
Article 323-2 : Punit de cinq ans d'emprisonnement et de 150 000 euros d'amende le fait d'entraver ou de fausser le fonctionnement d'un STAD.
Article 323-3 : Réprime de cinq ans d'emprisonnement et de 150 000 euros d'amende l'introduction, la suppression ou la modification frauduleuse de données dans un STAD.
Article 323-3-1 : Punit des mêmes peines le fait, sans motif légitime, de détenir ou de mettre à disposition un programme informatique conçu pour commettre les infractions précédentes.
Je vois pas le rapport avec "certains contextes". On parle de l'exploitation illégale de l'API privée de Vinted. Il n'y a pas de contexte de démarche bienveillante ou de cyber sécurité qui pourrait tolérer ça au niveau de la loi
La propriété intellectuelle elle est sur la propriété de Vinted. Comme son API privée qui est utilisée par l'UI et qui n'est vouée qu'à ça
Tu confond plusieurs concepts là:
Propriété intellectuelle != Logique d’un logiciel
- La logique d’un programme n’est pas protégée par la propriété intellectuelle (CPI, Art. L122-6-1) ce qui est protégé c'est le code source et l'expression de cette logique pas la manière dont fonctionne l’algorithme sous-jacent.
Reverse engineering et API privée
- Le reverse engineering est légal dans certains cas, comme pour l’interopérabilité.
- Ici ce n’est pas du reverse engineering mais l’utilisation non autorisée d’une API privée, ce qui relève davantage d'une violation contractuelle (CGU) et potentiellement d’un accès frauduleux (Art. 323-1 du Code pénal)
Exploitation d'une API privée != contrefaçon
- L'utilisation d'une API privée sans autorisation ne relève pas directement du droit d’auteur (contrairement à la contrefaçon).
- Cependant cela peut être sanctionné, si ça viole des restrictions contractuelles (CGU) ou implique un accès frauduleux à un système (Art. 323-1 et suivants du Code pénal)
Mais en fait j'ai travaillé pour une entreprise qui utilisait l'API privée de LinkedIn pour faire de la prospection de lead. Résultats des courses : procès perdu pour les raisons citées précédemment et des centaines de milliers d'euros de dédommagement à Microsoft. Pourtant cette entreprise développait le logiciel d'un logiciel...
Tu as conscience que ton copier/coller de chatGPT qui te dit que tu te trompes et que c'est pas du reverse engineering et que c'est illégal est étrange ?
Ton expérience ne prouve rien juridiquement un procès peut être perdu pour violation des CGU, concurrence déloyale ou accès frauduleux, pas forcément pour du droit d’auteur tu mélanges tout.
Si l’API privée était protégée par la propriété intellectuelle, montre-moi un article du Code de la Propriété Intellectuelle ou une directive européenne qui dit que la logique d’un logiciel est protégée comme une œuvre sinon ton argument repose juste sur une expérience personnelle qui n’a pas de valeur légale
Le procès a été perdu pour violation de tous les articles de loi que je t'ai cité plus haut
Si à l'avenir je pouvais débattre avec un être humain plutôt qu'un bouton copier/coller sur ChatGPT sans même relire la réponse (vu que tu utilises des arguments que ChatGPT démonte dans les réponses que tu me copie/colle) j'apprécierais.
j'en ai vu des choses mais là, c'est iconique parler de gpt parce que t’as plus d’argument pour défendre ton ineptie, c'est juste une manière d’éviter d’admettre que t’as tort.
m'enfin niveau compréhension du français c'est pas trop ça visiblement, d'autant qu'à aucun moment je me suis contredit, j'ai dit que le reverse engineering est légal dans certains cas, j'ai également dit que l'exploitation d'une API privée sans autorisation n'est pas du reverse engineering mais une potentielle violation des CGU et dans certains cas un accès frauduleux m'enfin bon
Alors non chef le reverse engineering est bien légale dans certains context
Puis
Ici ce n'est pas du reverse engineering mais l'utilisation d'une API privée, ce qui relève [...] et d'un potentiel accès frauduleux (Art 313-1 du CP).
Depuis le début tu veux me convaincre que c'est pas illégal mais tes réponses argumentent le fait que ce soit illégal
Lis au moins ce que chatGPT te répond avant de l'envoyer bêtement, par respect au moins
Pour le coup il n’y a aucune contradiction dans ses propos 
Bon, je vais arrêter le débat ici, moi parce que visiblement tu ne fais aucun effort de compréhension
@fierce grotto (navré pour les ping), défend le fait que dans certains cas ce soit légal. Mais à aucun moment n’a dis que dans le cas présenté au-dessus ça l’était 🤷
C’est toi qui est resté uniquement sur le sujet de Vinted 😕, y a juste de l’incompréhension dans votre débat
Mais mdr tu as raison, je pensais que c'était la même personne
il existe pas mal de wrapper en JS et un en python comme vinted_wrapper mais je ne pense pas que pour loop des annonces avec des critères spécifiques et le mettre sur un panel comme tu veux je présume faire soit possible sans accès à l'API officielle, tu verras que tu seras rate limit très vite
et en effet pour l'avoir fait quelque temps avec l'api Vinted, tu risques aussi d'autres petits soucis
Et c'est pas du "reverse" c'est du scrapping déjà
et scrap et rediriger le contenu d'une API privée ça s'appelle bel et bien du vol.
@red torrenthttps://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000044365559
j'ai pas lu tt la conv, mais l'étude d'un logiciel n'est pas illégale
part contre t'as pas le droit de l'utiliser pour le profit
et l'API tierse de Vinted ne devrait pas être illégale car elle est protégée par
en particulier l'interopérabilité
mais c'est limite quand même
ps: je ne suis pas juriste, faut voir avec des gens qui sont experts pour être sur
Utiliser une API sans documentation n’est pas illégal, ce qui l’est c’est de spam cette API (cas possible en n’utilisant pas l’interface fournie), sinon c’est juste une violation des CGU
C’est le même principe que l’API user de discord, elle n’est pas documentée mais rien ne t’interdit de l’utiliser comme ça, par contre tu risques de te faire ban, et si tu spam ça peut aller plus loin car considéré comme du ddos
Et il y a aussi les wrappers open source, les sociétés peuvent te mettre des coups de pression ou faire fermer les dépôts en ligne par les plateformes, car ça donne la possibilité de spam l’API
Par exemple Index éducation avait fait supprimé les repos de wrappers API pronote
normalement c'est pas illégale, mais je ne suis plus trop sur parceque c'est un accès non autorisé sur leurs serveurs.
Si c'est justifié avec l'interop ça devrait passer
y'a eu des dingueries comme ça dans mon uni
et l'admin n'a rien pu faire car c'est protégé par la loi
par ça
Tant que tu ne sors pas du cadre prévu, ils ne peuvent pas savoir
on part du principe que c'est illégal car la plupart des gens qui utilisent l'API pirate transgressent des lois (sûrement celles qui ont été citées au dessus). Du coup en règle général on évite d'en parler et d'aider les gens qui veulent l'utiliser, car on ne connait pas leur réelles intentions
Ouais mais derrière c'est du scrapping du site de vinted et ça c'est interdit par les ToS de Vinted
Y'a pas de documentation vu que c'est une API privée réservée à Vinted et qui n'est pas faite pour être utilisée par autrui
car on ne connait pas leur réelles intentions
cet argument ne vaut rien sachant que pour 90% des demandes d'aides en dev, on ne sait rien du projet derrière, quelqu'un peut très bien demander de l'aide pour son site, qui en réalité est une site du darkweb, mais personne ne le sais 🤷♂️
sauf que comme l'a dit nolhan, c'est pas ToS friendly
je parlais hors contexte
tu ne peux pas dire "car on ne connait pas leur réelles intentions", car si tu suis cette logique tu n'aides personne, ou tu forces les gens à dire ce qu'ils comptent faire, et le vérifier ^^
je vois pas le rapport
utiliser une API privée ce n'est pas du scrapping, le scrapping c'est récupèrer des infos depuis le contenu d'une page web
on parle de bot vinted, qui sont souvent utilisé par des gens malintentionné
je parlais hors contexte 
➜ [Voir le message original](#javascript-typescript message)
Oui fin en l’occurrence ça change pas grand chose, ça reste contre les Tous
"extraire des données" que tu le fasse via l’API ou via le site c’est la même finalité
C'est du data scraping, ça revient à la même au final
donc copier coller est interdit
mais ta tout mélangé là

chichi !
c'est ce que j'ai dit du coup
Environnement : Node.JS
Module : Discord.JS
Bonjour , j'aurais une question est t'il possible de faire un sorte que dans toute mes commandes etc si il a un embed mais qu'il y a pas de footer alors le footer sera un footer que j'aurais défini
Qu’est-ce que tu entends par la ? Le footer n’est pas obligatoire, tu peux simplement ne pas en définir
Tu peux envoyer un exemple de l'une de tes commandes ? Mais oui, c'est possible
j'imagine qu'il parle d'un footer préfait en mode 2025 - MonServeurbizarre.com mais ne le définir qu'une seule fois, donc oui c'est possible soit tu fais une const ou si il est voué à changer peut-être penser à le stocker
et après tu appelles cette constance
Justement je veux faire le contraire et faire un sorte que si dans un embed il y a pas de footer alors ça ajoute un footer avec le texte que je souhaite car j'ai jsp combien de commande embed et ça serait trop long de tout faire a la mains
Je regarde dans 10mn
merci je sais mais je ne peux pas le définir qu'une fois , par la suite je serais obligé de l'ajouter dans toute mes commandes
Comme ça j’aurai fait une classe pour la création d’embed plutôt que celle par défaut
Et j’aurais mis une valeur par défaut au footer si il est nul
const { EmbedBuilder } = require('discord.js');
const config = require('./config.json');
function addDefaultFooter(embed) {
if (!embed.data.footer) {
embed.setFooter({
text: config.defaultFooterText || '𝙿alma Bot',
iconURL: config.footerIconURL
});
}
return embed;
}
module.exports = { addDefaultFooter };
--
const { addDefaultFooter } = require('../vers/le/fichier/avec/la/fonction/embedUtils');
const embed = (page) => {
const embed = new EmbedBuilder()
.setTitle('Liste des Bots')
.setDescription(pageContent)
.setColor(config.color)
.setTimestamp();
return addDefaultFooter(embed);
};
Essai un truc comme ça
c'est ce que je voulais faire mais dcp je suis quand même obligé de le definir dans toute mes commandes
Mhm attend j'vais voir en vif
module.exports = (client) => {
client.on('embedCreate', (embed) => {
if (!embed.data.footer) {
embed.setFooter({
text: config.defaultFooterText || '𝙿alma Bot',
iconURL: config.footerIconURL
});
}
});
};
Tu peux essayer un truc comme ça
Mais pas sûr que ça fonctionne, faut tester
J'ai un soucis avec ma commande giveway quand je selectionne le salon ça me dit "Salon invalide! Mentionnez un salon."
Yo cette parti :
case 'channel':
const channel = message.mentions.channels.first();
if (!channel) {
return interaction.followUp({
content: 'Salon invalide! Mentionnez un salon.',
ephemeral: true
});
}
giveawayData.channel = channel;
embed.data.fields[2].value = channel.toString();
break;
Tente de la modifié comme ça :
case 'channel':
const mentionedChannel = message.mentions.channels.first();
if (!mentionedChannel || mentionedChannel.type !== 'GUILD_TEXT') {
return interaction.followUp({
content: 'Salon invalide! Mentionnez un salon textuel valide (#salon).',
ephemeral: true
});
}
giveawayData.channel = mentionedChannel;
embed.data.fields[2].value = mentionedChannel.toString();
break;
modifie la fonction reply de djs ou le BuilderEmbed
c simple
normalement quznd tu essaye d’envoyer une requete en djs
tu peux lintercepter
et donc la modifier
ya un évent spécial pour ça
Salut alors j'ai installer un template avec **vite ** en local host avec npm run dev sa marche très bien mais sur mon site en host je n'y arrive pas sa fait 2h que je galère quelqu'un peux m'aider svp ?
Il me semble que lorsque tu démarre l’app sur ta machine distante tu dois préciser le port (et peut être l’adresse ip à avoir)
Ou alors ça a changé depuis
expose avec --host a la fin de la commande vite
sinon build puis preview
Preview c’est fait pour de la prod ?
J’ai toujours cru qu’il fallait faire le node .output/truc.js avec les variables d’env en mode pas propre

bas enfaite c'est le mode prod local il me semble
Donc : npm run dev --host ?
mais oui normalement quand tu npm run build tu dois déployer le résultat dist ou output
Oui mais si c’est sur une machine distante, sauf s’il a un vpn il pourra jamais accéder en local
Ou alors reverse proxy 🤔
Perso reverse proxy pour tous mais j'ai un doute sur le fait que la preview de vite expose automatiquement
je sais que nuxt expose automatiquement la preview sur http://[::]
Mais j'ai pas trop compris prcq npm run build sa me créer un fichier build mais dcp j'ai plus tsx dedans prcq de base j'ai déjà un index.html j'ai pas trop compris sur ce point
en gros le build ça compile ton projet
pour faire vraiment très gros comme explication
donc normal que tu n'aies plus tes .tsx, tout a été retranscrit en js minifier (si je dis pas de connerie)
donc si tu npm run build utilise la commande npm run preview (si tu n'a pas la commande dans ton package.json) la cmd vite : vite preview
En prod ?
On gros ça compile et minify ton code pour qu’il soit plus léger, et donc plus rapide sur la navigateur
perso oui
après c'est une preview de la production comme j'ai dit
Tu peux me montrer ton process de dev et de mise en prod avec une app nuxt ?
Partager*
Donc si j'ai bein compris en local il faut juste faire npm run dev pr avoir la preview maissi c'est en web ( host ) il faut faire
npm run dev --host mais si tu veux utiliser ton site ne production tu fait le build et tu mais sa seul et le reste on en a pas besoin; c'est sa ?
Bas comme à peu près tout le monde je suppose (exemple pour mon site backend en Nest):
npx create-nuxt-app
npm run dev (pour tous les test locaux / développement ect)
arch:
assets/ (contiens mes assets css)
public/ (contiens mes assets img de base, robots.txt, sitemap...)
pages/ (contiens toutes les pages de l'app (slugs/id)
composable/ (contiens ma logique d'intégration restAPI) (useUser / useProject...)
components/ (contiens tous les composants de l'app (séparer en layout / ui (composant par page & shared))
middleware/ (contiens mes middlewares clients (vérification du rôle / l'authentification avant l'accès à une page...)
puis pour la prod actuelle :
npm run build
npm run preview ou node .output/server/index.mjs (dépend de si c'est un MVP que je lance)
puis reverse proxy pour link mon domaine à l'adresse de l'app
Ah j'ai oublié j'ai un layouts aussi
||@fierce grotto || dcp ?
Pourquoi je ne peux pas installer dotenv? (sur mes autres projets je l'ai)
Il y a quoi sur ce fichier ?
Du porno
Lol
|| C'était une blague hein ||
Il y a une odeur de tempban
De génie
J'ai hésité 30s à faire la blague car je sais pas si j'allais être ban
Et je sais toujours pas si je vais être ban
J'vais relire le règlement en attendant
Le règlement c'est la phase cachée de l'iceberg
J'ai vu ça, du full michel
Lol
module.exports = {
name: 'setup_auto',
description: 'Allows you to easily configure the bot',
type: ApplicationCommandType.ChatInput,
execute: async (client, interaction, args) => {
interaction.reply('Allows you to easily configure the bot');
}
};
comment je peux faire pour que ma commande accepte setup auto
sans que ça crash
car j'ai l'erreur:
throw new DiscordAPIError(data, "code" in data ? data.code : data.error, status, method, url, requestData);
^
DiscordAPIError[50035]: Invalid Form Body
2.name[STRING_TYPE_REGEX]: String value did not match validation regex.
at handleErrors (D:\project\ticket-bot\node_modules\@discordjs\rest\dist\index.js:727:13)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async SequentialHandler.runRequest (D:\project\ticket-bot\node_modules\@discordjs\rest\dist\index.js:1128:23)
at async SequentialHandler.queueRequest (D:\project\ticket-bot\node_modules\@discordjs\rest\dist\index.js:959:14)
at async _REST.request (D:\project\ticket-bot\node_modules\@discordjs\rest\dist\index.js:1272:22)
at async ApplicationCommandManager.set (D:\project\ticket-bot\node_modules\discord.js\src\managers\ApplicationCommandManager.js:171:18)
at async Timeout._onTimeout (D:\project\ticket-bot\src\handler\loadCommands.js:28:13) {
requestBody: {
files: undefined,
json:
{
name: 'setup auto',
name_localizations: undefined,
description: 'Allows you to easily configure the bot',
nsfw: undefined,
description_localizations: undefined,
type: 1,
options: undefined,
default_member_permissions: undefined,
dm_permission: undefined,
integration_types: undefined,
contexts: undefined
}
]
},
rawError: {
message: 'Invalid Form Body',
code: 50035,
errors: {
'2': { name: { _errors: [ [Object] ] } }
}
},
code: 50035,
status: 400,
method: 'PUT',
url: 'https://discord.com/api/v10/applications/1334771494881984512/commands'
}
Tu peux pas mettre d'espaces dans le nom d'une commande
pourtant j'ai vu des bot avec
Nop
Ce sont des sous-commandes. C'est pas pareil
C'est la commande /setup qui a des sous commandes limit, transcripts, etc
possible d'avoir un repo github directement avec l'exemple ?
Tu scroll un petit peu et t'as les exemples
C'est fou de juste vouloir copier coller bêtement sans même lire un peu de docs...
le rapport ?
Y'a que t'as même pris le temps de regarder ce que je t'ai envoyé que tu demande un truc tout fait que tu peux copier coller....
je préfère regarder un exemple github et lire la doc
j'ai pas dis que j'allais pas regarder ?
un exemple github ça me permet de mieux visualiser la structure
Pourtant t'aurais pu scroll un tout ptit peu et t'aurais eu tes exemples 
oki
t’as phrase n’a aucun sens.
t’as directement tout dans la doucementation, comment l’utiliser, et l’exemple ? que vient faire github ici ? mise à part que tu veux juste copier ? et même pas faire d’effort de ton coter ? 🤦🏼♂️
la personne qui t’expliquer ta littéralement donner la "base" juste à toi de creuser un petit peu
C'est pas ton bot si c'est GitHub 
Chut faut pas le dire ça 🤫
à quel moment j'ai dit que j'allais copier ? 😮
mais qui parle de copier ptdrrrrrrrrr
en mode tu regarde jamais un code déjà existant quand ta la flemme de lire une doc avec 47 trucs différents ?
smehli le 1337 hein
😂
non??
te justifie pas, c'est les premier à utiliser ChatGPT pour debug leur code
😹
réel
en quoi regarder un code github peut t’apprendre ?
pleins de chose wtf
nn
c’est tjr mieux de regarder la doc réfléchis
tu va pas regarder un truc que tu comprends pas ??
😭
donc jamais regarder de code github pour comprendre comment il fonctionne ?
bah si
mais avant tu regardes la doc
ou en même temps limite
après si ta les bases dans le domaine normalement tu comprend vite ^^
c'est clairement ce qu'il a indiqué
t’as les bases toi ?
encore heureux ptpddrr
mais je vois pas trop le rapport avec moi
🦧🦧
les bases en question
t’as les bases mais t’as la flemme de regarder une doc
faut m’expliquer
t’as appris a "dev" sur snap ?
venant d'un mec qui dev des bot generateur en 2025
j'suis censé chouiner ?
MDR
? 😭
sacré mec alors
si si mais pas pour des projet aussi ridicule 😉
et surout des projets légal 😄
mais vas-y
reste dans le dénis stp
att att t’essaye dme faire la ?
ouais donc tu participe à des projet malhonnete
kiffant
alors que tu ne sais même pas lire une erreur ??
j'relate des faits 🙂
en quoi j'sais pas lire une erreur ? je demande juste si on pouvais faire autrement ?
c’est l’hôpital qui ce fou de la charité là 🤣
AHAHAHAHHAHAHAA
JE DEV JAMAIS DE BOT DISCORD
JE SUIS PAS CENSE TOUT SAVOIR HYN
😭
heureusement qu'on est sur un serveur "entraide"
donc ?
ah bon j'ai dis ça ou ?
^^
donc premièrement évite de juger, et ensuite si t'es pas content tu peux aussi partir
😄
mais jvois pas le rapport 🤣
j'ai du C à opti moi
wtf
on s’en fou
🤣🤣
j'fais pas que du C
mais oui c'est un mérite
et moi je passe pas par une IA 🙂
ton code il est vrm bancale
j'pose ça ici
le mec n'a jamais dev autre chose que de sb ou de bot
faut pas trop lui en vouloir
😄
ok mec 🤓☝🏽
🤓☝🏽
j’ai fermer l’appli surtout
pourquoi discord mettrait en avant quelque chose d’interdit ?
🤔
va lire les TOS 😉
Pas tout lu mais j’ai rarement vu des propos aussi stupides concernant le dev mdr
ben go arrêter de jouer à tous tes jeux steam 
L'app émet juste une rich prensence comme le ferait un jeu ou n'importe quoi. Rien d'interdit jusque là 🤷♂️
MERCI
🦧🦧
Redescends, jsuis pas là pour te défendre
j’ai pas dis le contraire
juste tu relis mes faits
Sauf que c'est un client qui modifie l'app pour ensuite émettre la rich
Nop
je parle pas de euro truck
Ton client discord reçoit via le websocket les données
C'est comme ça que fonctionne la rich presence
ou un truc dans le style
Peu importe, c'est le même fonctionnement
donc betterdiscord etc..) ne sont pas des clients pour toi ?
Est-ce que j'ai parlé de betterdiscord ? Oui betterdiscord en particulier est interdit par les ToS puisque qu'il modifie le client. Mais la rich presence n'est pas forcément émise par better discord
alors crunchyroll,anime-sama etc..)
Dans mon cas, j'ai un ptit tool rust & une extension webstorm
c'est load par quoi..
mais je parle pas de ça ?
il avais une rich par rapport à un site de streaming
hors discord n'ont jamais implementé ce gerne de rich..
mise à part pour spotify
Il doit avoir un logiciel qui détecte ce qu'il est en train de regarder et le renvoie vers discord
ça peut être intégré à crunchyroll comme ça peut être un tool externe
Rien d'anormal à ça
J'ai exactement la même chose avec Jellyfin :

t’as jamais changé de pp wsh
Ça fait a peine 2 ans celle là
Ouais mais jsp quoi mettre
met ta tête 🥰🥰
github.com/Derpinou/DiscordShard obsolète ?
Sur la théorie non
Sur les exemples de code oui et non
Tout ce qui est shardingManager avec DJs je sais pas si ça a changé
Tout ce qui est internal Sharding ça marche encore
Je m'assois tellement ta pp est goatesque
Hola, vous savez s'il est possible de lancer une activité discord à partir d'un bot discord ?
Une activité déjà sur discord, elle n'est pas développé pour l'occasion.
Bonjour, est ce que quelqu'un pourrais m'aider ? Le probleme c'est que j'ai une OAuth2 discord sur mon site web nextjs à l'aide de Nextauth, mais je n'arrive pas a gérer le cas ou l'utilisateur clique sur le bouton annuler, la ça me redirige vers http://localhost:3000/api/auth/signin?error=Callback et je ne sais pas comment faire poru juste me rediriger juste vers / a la place. Merci de votre aide !
Tu mets un redirect vers / quand ya une error en paramètre sur ton /api/auth/signin?error
je ne sais pas si tu utilises le routeur next mais si oui c'est juste redirect('/')
Sinon res.redirect('/') avec express
Oui mais j’ai pas d’endpoint api/auth/signin, j’ai que /api/auth/nextauth
Si le mec réussi a se connecter ça redirige vers quoi ?
Vers /dashboard
Avec le token en paramètre ?
import NextAuth, {
type NextAuthOptions,
type Session,
type User,
} from "next-auth";
import { PrismaAdapter } from "@next-auth/prisma-adapter";
import DiscordProvider from "next-auth/providers/discord";
import { prisma } from "@/lib/prisma";
export const authOptions: NextAuthOptions = {
providers: [
DiscordProvider({
clientId: process.env.DISCORD_CLIENT_ID as string,
clientSecret: process.env.DISCORD_CLIENT_SECRET as string,
authorization: {
params: {
scope: "identify guilds",
},
},
}),
],
callbacks: {
session: async ({ session, user }: { session: Session; user: User }) => {
return {
...session,
user: {
...session.user,
id: user.id,
},
};
},
},
adapter: PrismaAdapter(prisma),
secret: process.env.NEXTAUTH_SECRET,
};
const handler = NextAuth(authOptions);
export { handler as GET, handler as POST };
"use client";
import { AppSidebar } from "@/components/sidebar/app-sidebar";
import { SidebarProvider, SidebarInset } from "@/components/ui/sidebar";
import { useSession, signIn } from "next-auth/react";
import { useEffect } from "react";
import { LoaderCircle } from "lucide-react";
import type React from "react";
export default function DashboardLayout({
children,
}: {
children: React.ReactNode;
}) {
const { data: session, status } = useSession();
useEffect(() => {
if (status === "unauthenticated") {
signIn("discord", { callbackUrl: "/dashboard" });
}
}, [status]);
if (status === "loading" || !session) {
return (
<div className="flex items-center justify-center min-h-screen bg-background">
<LoaderCircle
size={48}
className="animate-spin text-primary"
aria-label="Chargement..."
/>
</div>
);
}
return (
<SidebarProvider defaultOpen={true}>
<AppSidebar />
<SidebarInset>
<main>{children}</main>
</SidebarInset>
</SidebarProvider>
);
}
Voila cest le code en entier qui est fonctionnel mais qui gére pas le retour dans le Oauth2 en gros
@clear elbow Tu as lu la doc nextauth ?
apparemment non
on est bien d'accord que ca route n'est pas /api/auth/nextauth mais /api/auth/..route par exemple pour nextauth si je ne me trompe pas le signIn error en cas de cancel /api/auth/signin?error=Callback
mais surtout pourquoi ps utiliser express
c’est beaucoup plus rapide pour ce gerne d’api
fin c’est mon choix mais je trouve expressjs mieux
et je crois que la solution pour redirect en cas de cancel de l'auth c est dans ton nextConfig
pages: {
signIn: '/auth/login',
},
si il a un projet sous nextjs vaut mieux utiliser directement nextauth, lucia...
perso je bosse avec nextauth ou clerk ca depends des projets et par fois lucia
puis bon si tu fouilles un peu c est litteralement dans le code de nextauth voila ce que fait l'api en cas de cancel de l'auth
if (error.name === "OAuthCallbackError") {
logger.error("CALLBACK_OAUTH_ERROR", error)
return res.redirect(`${baseUrl}${basePath}/error?error=OAuthCallback`)
}
logger.error("OAUTH_CALLBACK_ERROR", error)
return res.redirect(`${baseUrl}${basePath}/error?error=Callback`)
jsp peso j’utilise next,vite,react,express
pour pratiquement tout mes projet
Apres chacun ca stack :)
J'ai lu la doc et j'ai capté ça, mais le truc c'est que je ne créer pas de page /auth/signin car lorsque j'appel signIn je met direct discord en parametre et donc ça lance direct l'Oauth : onClick={() => signIn("discord")}.
C'est pour ça que je cherche une solution pour gérer cette erreur, ou meme les autres erreurs, sans devoir créer de fichier /auth/signin
oui nan mais ca ok, tout ce que tu as a faire c est dans pages met /
et essaye
Mais perso ma stack c est nextjs prisma nextauth resend
apres le reste genre zod et tout ca mais c est des classiques
ah mais c est reel
Ok merci je viens de le faire donc avec un cancel ça me redirige vers http://localhost:3000/?callbackUrl=http%3A%2F%2Flocalhost%3A3000%2Fdashboard&error=Callback, donc c'est parfait merci !
De rien stv j’ai un paypal 
pitié encode t'es URL
xD
Ça a un peu évolué maintenant il faudrait ajouter une cinquième patte qui reposerait sur ChatGPT
aussi
npm install --save @types/passport-discord
j’vais essayer
idem

bah déjà ne pas utiliser chatGPT quand il existe une doc c'est bien aussi
et ensuite il suffit de lire ton erreur pour comprendre que db.fetch n'est pas une fonction 🙂
les couts : express c'est super cool, mais ça demandes beaucoup de dev, next, ton routeur existe déjà, ton middleware (même si je le trouve absolument ignoble) est bcp plus simple a écrire
Utiliser express en 2025 
express c'est bien pour simuler (dummy data), ou pour des projets super léger ou juste pour apprendre 🤷
Ptite remarque que je me donne a moi meme "pourquoi ne pas utiliser prisma ?"
mdr wtf pleins de projet utilise express brother
Laisse tqt
C’est pas un argument pour l’utiliser ça
Express c’est:
- Pas très performant par rapport à la concurrence
- « maintenu » que pour des raisons de sécurité
- bon qu’à faire des tutoriels car simple à mettre en place
À côté t’as fastify qui s’utilise quasiment pareil et qui fait bien mieux 
Pareil il a dit ?
Non
Effectivement pour faire une api vide, fastify est très bien 👍
Au moins c’est performant 
Je te dis la vérité, honnêtement j’ai jamais essayé
Il faudrait que j’essaye
j’ai toujours utilisé express
@past nimbus tu utilises quoi alors ?
j’ai jamais eu de problème de perf
pourtant j’avais un projet avec 100k visiteurs par mois
Tu as eu des grosses charges ?
En moyenne 5k par jour
Ça fait minimum 2 requêtes par secondes, un peu normal que ce soit performant
bah voilà
express c'est mieux, mais c'est long, vu qu'il faut s'adapter au budget du client on fait avec le plus rapide en générale
Par rapport à un truc déjà tout fait je pense qu’il veut dire, mais généralement quand tu fais plusieurs fois ce genre de projets tu te fais tes propres « packages » perso donc ça revient au même qu’utiliser next auth ou autre
C'est possible Un robot discord qui crée des postes sur des forums à chaque fois qu'on reçoit un email, une réponse à un formulaire sur un site web ou un signalement sur un site web et aussi qui peut bannir les utilisateurs supprimer du contenu sur un site web (par exemple, une vidéo) ?
tout est possible
suffit juste d'avoir des call restAPI ou alors d'être sur la même db entre ton site & ton bot
Ouais j'allais opter pour un système Bd
Pour le coup un projet qui va avoir 100 000 utilisateurs par mois, entre express et nest lequel est le plus intéressant ? Ou alors on peux choisir entre fonction de nos préférence
Nest c'est qu'une surcouche à express (ou fastify selon la config)
et c'est pas vraiment comparable au niveau du dev, d'un coté tu as quelque chose de très strict et ordonné, d'un autre tu es relativement libre de faire ce que tu veux
et honnêtement, pour choisir le meilleur, vaut mieux un peu tout tester et te faire ton propre avis, et surtout réfléchir en fonction de ton besoin, même si il y à 10 000 utilisateurs mensuels, combien il y à de requetes à chaque fois, et qu'es-ce qu'elles sont censées faire
Ok merci beaucoup , j'ai également une autre question, si en termes de performances, sécurité, scalabilité etc qu'est ce qui rivalise avec java spring boot. Express, nest les deux ? Ou alors le mocro-services avec spring n'est pas interéssant. Dans une optique de gérer beaucoup de requete à la seconde, calcules financiers, etc
je saurais pas te dire, trop peu de recul sur springboot personnellement
après tu peux scale pour faire + de traitement à la seconde 🤷♂️
En vrai golang, super efficace
ok, golang fonctione en microservice ?
C'est l'un des plus populaires pour ^^
Hello, comment on peut envoyer un message en interaction + envoyer un modal
Voici mon code:
case 'changeMessage':
const [streamerData] = await BDD.promise().query(
"SELECT custommessage FROM streamersnotifications WHERE streamername = ? AND serverid = ?",
[selectedStreamer, interaction.guild.id]
);
const currentMessage = streamerData[0]?.custommessage || "**{streamer}** est maintenant en live sur **{game}** ! {url}";
await interaction.update({
content: `⚙️ Gestion du streamer → **${selectedStreamer}**\n📝 Message actuel → \`\`\`${currentMessage}\`\`\``
});
const modal = new ModalBuilder()
.setCustomId(`editMessage_${interaction.user.id}_${selectedStreamer}`)
.setTitle(":pencil: Modifier le message de notification")
.addComponents(
new ActionRowBuilder().addComponents(
new TextInputBuilder()
.setCustomId("customMessage")
.setLabel("Entrez votre message")
.setStyle(TextInputStyle.Paragraph)
.setPlaceholder("Ex: **{streamer}** est maintenant en live sur **{game}** ! {url}")
.setValue(currentMessage)
.setRequired(true)
)
);
await interaction.showModal(modal);
break;
Car sa me met ce genre d'erreur:
Error [InteractionAlreadyReplied]: The reply to this interaction has already been sent or deferred.
Tu peux pas répondre deux fois à une seule interaction comme ça. Pour ton problème il faut soit envoyer le message et l'embed dans la même réponse soit envoyer la deuxième réponse dans un followup :
https://discord.com/developers/docs/interactions/receiving-and-responding#followup-messages
Pour le coups, c'est pas un embed mais un modal, et sa ne fonctionne pas du tout
Ah attends je viens de voir que c'est une modale et pas un embed
C'est différent car tu peux pas followup une modale. Tu ne peux pas envoyer à la fois un message et afficher une modale
Mais à mon avis c'est un non-sens de vouloir répondre par un message et par une modale à la fois (car la modale va s'afficher par dessus le message et l'utilisateur risque de ne pas le voir). C'est peut-être plutôt répondre à l'interaction avec la modale puis répondre à l'envoi de la modale par ton message
Ah donc impossible du coups ?
C'est impossible parce-que c'est pas normal de vouloir faire ça
Si c'était possible la modale s'afficherait par dessus le message donc l'utilisateur ne pourrait même pas lire la réponse
Pg ça
C'est pas grave pour toi mais du coup tu peux comprendre pourquoi discord n'a pas laissé cette possibilité
Ils sont cons, ctout mdrr
y'a pas aussi hono qui est bien?
Jamais testé
Y’a besoin d’une refactorisation massive si on passe de Nest (Express) à Nest (Fastify) en config ? @plucky nymph
Je suis en train de faire un projet et découvrir un peu Nest que je trouve sympathique
Le typage
Request devient FastifyRequest (de souvenir)
Oui
Peut être que ça a changé pour un truc générique qui s’adapte, mais de mon temps à chaque fois que j’utilisais le @Req() etc fallait que je type avec le type d’express ou fastify
Mais sinon tu as un guide dans la doc de nest pour migrer vers fastify
📢 Recherche Développeur JavaScript pour
Merci
La révélation
Relis son message tu comprendras mdr
Un dev JavaScript pour du minecraft

Bah en vrai
Y’a bien des modules pour faire des plugin minecraft en JS
JavaScript envahi même ton langage 😂
Ici on se bat contre le métissage, que la POO reste dans son coin
Enfin on peut tjr faire de la poo en js en soi
Oui fin après à ce niveau là t’as même le plugin skript mdr
Pepep je galère juste avec firebase commence pas à me parler de JS 😂
ew
j’ai pas hâte j’ai un cours dessus dans quelques mois avec du flutter
Ça donne pas envie
Tu as raison de ne pas avoir envie
Et j'arrive pas à trouver de cours pour savoir comment s'en servir de ce truc de ####
Si quelqu'un en connaît, je suis preneur
Js c’est de la poo, juste qu’elle est super libre, peu stricte, et que js gère déjà tout
☝️🤓

Après en comparaison avec java

En effet c’est pas comparable 😂
Juste le nom
Si tu as besoin d'aide pour firebase je suis là je l'utilise pour JS et Python
En fait le problème c'est que je voulais le mettre avec react mais j'ai pas tout compris genre en réac je peux faire ça utilisateurConnecte? <Pann auAdmin />: <FormulaireConnexion mais il y a un truc similaire dans le SDK de firebase et je sais pas lequel des deux utilisés
Après ça va mise à part comment s'en servir avec react leur documentation elle est bien
bonjour guys j'ai neauveau en javascript et j'acepte l'aide
Bonjour, savez-vous comment je peux réparer cette erreur ?
unhandledRejection: TypeError: Cannot read properties of null (reading 'UserID') Promise {
<rejected> TypeError: Cannot read properties of null (reading 'UserID')
at Object.execute (/home/container/events/blacklist/joinban.js:36:14)
at processTicksAndRejections (node:internal/process/task_queues:95:5)
}
machin qui a la propriété UserID est null
Donc si tu veux juste pas avoir l’erreur car c’est normal que machin soit null, fait juste un if (machin) { et ton code dedans
Sinon essaye de comprendre pourquoi il est null (si c’est depuis une requête vers une bdd, c’est juste que ça retourne pas de données)
Ouais mais normalement dans la base de données il y a justement ça

Alors la requête n’est pas bonne
"Normalement"
Pas besoin du code pour comprendre le problème 
C'est qu'il y a surement quelque chose qui n'est pas normal dans ce cas 
Je t'ai pas demandé ?

Dcp c'est quoi le problème vous penser
Bah tout est déjà dit
Ta variable qui contient UserID est null donc si ça vient de la bdd c’est que la requête vers cette dernière est foireuse
Mais avant ce code il marchait très bien
Mais la il marche plus
Après tu peux toujours donner un peu plus de contexte à ton problème, comme par exemple la base de données utilisée, le résultat attendu, le code, etc etc
C'est mongo (j'envoie le code attends)
Si t'as accès à la bdd, t'as vérifié que la donnée que tu cherches existe ?
const bl = require('../../me-modals/blacklist/blacklisted')
module.exports = {
name: 'guildMemberAdd',
async execute(client, member) {
let DATA = await bl.findOne({UserID: member.id})
if (DATA.UserID) {
member.ban({ reason: DATA.Reason }).catch(e);
}
}
}
Ça a peut-être merdé quand j'ai unban
Essaye de regarder de ce que côté là alors 
Ou juste que la personne qui a rejoint n’est pas celle qui est « blacklist », donc la requête ne retourne rien vu que son ID n’est pas présent dans la base
Et maintenant que tu as ajouté if (DATA.UserID) { ... }, il ne devrait plus te sortir d'erreur comme quoi DATA.UserID est null (si tu ne l'utilises pas plus bas sans vérifications)
si c good
Avant de vouloir le ban vérifie au moins qu’il soit black list
oui jai verif
Ou juste que la personne qui a rejoint n’est pas celle qui est « blacklist », donc la requête ne retourne rien vu que son ID n’est pas présent dans la base 
➜ [Voir le message original](#javascript-typescript message)
si son id est dans la bd
C’est sur un serveur de test avec que toi, le bot, et la personne concernée ?
oui qq je fait la cmd blacklist ca ban mais si la personne bl rejoin le serveur il y a cette erreur dans la console
Alors console.log ton member.id et compare avec la valeur en base
Comme ça tu seras fixé
what
Au pire tu clique sur le fichier events/blacklist/joinban.js
tu appuie sur la touche suppr du clavier, et tu n’auras plus l’erreur
lol
ça change r
C’est pas censé changer grand chose
Quel genre de solution ?
Bah tu fais console.log(member.id), tu regardes si ça colle aux infos que t'as en db et soit ça colle donc le problème c'est pas l'objet member mais c'est ailleurs, soit ça colle pas et le problème vient du fait que member est sûrement undefined
je le met ou ?
Tu devrais faire quelque chose qui ressemble à ça:
const bl = require('../../me-modals/blacklist/blacklisted')
module.exports = {
name: 'guildMemberAdd',
async execute(client, member) {
// Code mis à jour après mon message. Je pense que tu devrais pouvoir retrouver les informations (dont l'id du membre) dans la variable client. Ce qui te permettrait de retirer la variable member et renommer ta variable client member. Mais il faudrait savoir si tu passes d'autres paramètres que member quand l'event est déclenché
console.log("client : ", client);
console.log("member : ", member);
let DATA = await bl.findOne({ UserID: member.id })
// Éventuellement
console.log("DATA : ", DATA);
if (DATA.UserID) {
member.ban({ reason: DATA.Reason }).catch(e);
}
},
};
Mais la question qu'on peut déjà se poser, c'est pourquoi est-ce qu'il y a 2 paramètres dans ta fonction execute ? Est-ce que tu passes toi-même client ? Parce que d'après mes connaissances, l'event guildMemberAdd ne renvoie qu'un seul argument qui est de GuildMember
Ça renvoie ça?
oui
Essaye avec la nouvelle version du code que je viens de faire dans mon message
azz
Je pense que le résultat que t'as correspond à l'objet client vu la tête des clefs. Peut-être un simple switch des paramètres suffirait dans ce cas
ça met ça
j ai un peu lu mais je ne vois rien de changant
Logique
Mais il faut comprendre ce que tu fais et que tu lis dans les messages d'erreur 
Tu remplaces ça:
async execute(client, member) {
Par ça:
async execute(member, client) {
@compact shoal
sur lancien code ?
Oui
ça a rien changé
normalement c'est
if (DATA) {
member.ban({ reason: DATA.Reason }).catch(e);
}
et non
if (DATA.UserID) {
member.ban({ reason: DATA.Reason }).catch(e);
}
car DATA trie déjà selon l'id
ça marche nickel

ta commande fonctionne ?
Très bien
tant mieux alors 🙂
Cimer 👍
pas de soucis
je cherche des gens qui puissent m'aider en js car quand j'essaye d'ajouter des graphiques dynamiquement, sa marche pas
Salut tout le monde ! Quelqu'un peut me dire comment faire pour que des interactions ne s'expirent pas
j'essaye de faire un embed de mise en service/terminer son service en discordjs
et j'execute la commande pour l'embed et genre j'attends 2h je peut plus me remettre en service
lorsqu'elles sont defered elles ne sont pas inexpirables ?
15min max de mémoire
ta un screen de ce qui se passe sur Discord pour qu'on puisse mieux comprendre les actions faites par l'utilisateur ?
j'ai trouvé une technique mais pas trop opti c'est de garder dans une bdd les personnes en services et de renvoyer le msg tout les x minutes
Ah oui j’ai confondu avec un autre truc
Mais un bouton n’as pas d’expiration, tu peux cliquer autant de fois que tu veux ?
Il suffit d’envoyer une seule fois le message avec le bouton pour prendre sa fin de service et c’est bon non ?
Tout dépend côté code comment tu gère l’interaction
Si tu utilises un collector, tu pourras pas éternellement l’utiliser.
Il y a encore des gens qui utilisent ça ?
Salut les gars! J’ai cette erreur quand je vais sur ma page d’accueil (localhost:3000/home) :
31| <h1>Genres musicaux</h1>
32| <div class="card-container">
>> 33| <% genres.forEach(genre => { %> <!-- Itérer à travers les genres -->
34| <a href="/playlists/<%= genre %>" class="genre-card">
35| <h3><%= genre %></h3> <!-- Afficher chaque genre -->
36| </a>
genres is not defined
at eval ("C:\\Users\\carre\\OneDrive\\Bureau\\musique\\website\\html\\home.ejs":12:8)
at home (C:\Users\carre\OneDrive\Bureau\musique\node_modules\ejs\lib\ejs.js:703:17)
at tryHandleCache (C:\Users\carre\OneDrive\Bureau\musique\node_modules\ejs\lib\ejs.js:274:36)
at exports.renderFile [as engine] (C:\Users\carre\OneDrive\Bureau\musique\node_modules\ejs\lib\ejs.js:491:10)
at View.render (C:\Users\carre\OneDrive\Bureau\musique\node_modules\express\lib\view.js:135:8)
at tryRender (C:\Users\carre\OneDrive\Bureau\musique\node_modules\express\lib\application.js:657:10)
at Function.render (C:\Users\carre\OneDrive\Bureau\musique\node_modules\express\lib\application.js:609:3)
at ServerResponse.render (C:\Users\carre\OneDrive\Bureau\musique\node_modules\express\lib\response.js:1049:7)
at run (C:\Users\carre\OneDrive\Bureau\musique\website\public\home.js:7:13)
at Layer.handle [as handle_request] (C:\Users\carre\OneDrive\Bureau\musique\node_modules\express\lib\router\layer.js:95:5)```
voici home.ejs
```html
<div class="card-container">
<% genres.forEach(genre => { %>
<a href="/playlists/<%= genre %>" class="genre-card">
<h3><%= genre %></h3>
</a>
<% }) %>
</div>```
(playlists.js après)
vous devez savoir que j’utilise express.js avec ejs pour créer mon site web.
(J’ai ajouté une image on sait jamais si vous en avez besoin)
merci !
voici le playlists.js :
const express = require("express");
const Playlist = require("../schemas/Playlist");
const router = express.Router();
const genres = ["Pop", "Rock", "Hip-Hop", "Jazz", "Classique", "Electro", "Rap"];
router.get("/home", async (req, res) => {
try {
console.log("Genres disponibles:", genres);
const playlists = await Playlist.find({});
res.render("home", { genres, playlists });
} catch (err) {
console.error("Erreur lors de la récupération des playlists:", err);
res.status(500).send("Erreur interne du serveur");
}
});
module.exports = router;```
il y a peu de chances que ce soit ca, mais tu as essayé de mettre ```js
{ genres: genres, playlists: playlists }
Comme j'ai dit il y à peu de chance que ce soit ca, mais j'ai vu sur un forum qu'ils ne mettaient pas directement le clé-valeur comme tu as fait, sinon je ne vois pas vraiment
Ah oui non je crois avoir vu !
il manquerais pas le = ?
nope pas besoins de = pour acceder aux variables en ejs
alors pourquoi tu l'as mis en bas 
mais j'ai trouvé mtn ça marche et la je suis sur autre chose qui marche pas non plus...

tkt je vais trouvé je suis avec qq qui m'aide en paralelle sur un autre serveur
Hello, pouvez-vous me donner votre meilleure librairie UI pour react avec tailwind ? J'aimerais pouvoir personnaliser facilement chaque composant
headless ui
ou si tu veux plus de truc radix
Hello j'ai pas compris la demande ^^
création de compte bancaire ?!
Oui menu interactif roleplay
Visiblement personne n’est apte à répondre à la questions.. 🤷🏾♂️
ça fait 30min c'est bon mdr
si t'as pas le courage d'attendre 30min et que t'es pressé tu peux #demande-de-dev
mais sinon demande à GPT
Justement il tourne en rond il a pas trouver
j'avoue que flemme de me tapper 1700 et 650 lignes
salut tout le monde je ne sais pas si c'est le bon canal pour vous demander ça mais j'ai un bot telelgram coder en js et j'aimerai le mettre e automatisation. J'ai payer un serveur et j'ai utilisé WinCP pour mettre le dossier de mon bot sur le serveur. Mais à partir de là je ne sais pas quoi faire. Comment lancer le bot sur le serveur
Ouvrir une connexion ssh au serveur
Aller dans le dossier du bot
Et lancer le bot, avec la même commande que sur ton pc
⚠️ Attention, si tu lances simplement avec « node x.js » depuis ta connexion ssh, lorsque cette dernière sera fermée, le bot s’éteindra, il faudra utiliser un truc comme screen ou pm2 pour le laisser allumé h24/7j
oui j'ai utilisé pm2 le probleme c'est uqe mon bot possède un premier code qui contient toute la structure du bot et il y'a un deuxieem fichier qui contient les id des utilisateur. Si ce fichier ne fonctionne le bot ne marche pas
et le fichier des id est en json
C’est à ton code js de faire le taff pour lire le json
ok je vois ce qui est bizarre c'est quand je lance le bot en local via vs code tout marhe mais quand je lance via le terminal certaine fonctionalité fonctionne mais pas toute
Tu as bien fait npm install ?
oui je l'ai fais
Tu as une erreur ?
oui
et quelle est cette erreur ?
Il fait quoi le bot ?
quand on lui donne un lien il sort des thread
Salut ! Je suis en train actuellement en train de créer un bot discord et je dois lui faire envoyer des embed contenant 3 images récupéré sur google, mais je n'arrive vraiment pas. Si quelqu'un serait ok pour m'aider 🙂
Si je dis pas de bêtise, un embed ne peut contenir qu’une seule image, sinon il faut les mettre en pièces jointes du message
justement j'ai lu que si on faisait passer par un webhooks cela pouvait mettre plusieurs images en 1 embed
ça fait comme une combinaison de plusieurs embed en 1 je crois
si tu peux, dans un seul embed
mais seulement avec un webhook je crois
Vous pensez que si je fais le navigateur en python avec QtWebChannel, es-ce que ça c'est sécurisé ?
localStorage.setItem("user_email", email);
Ton bot a besoin de chrome …
Re, je n'arrive a faire tourner mon container docker du back a cause de se warning :
prisma:warn Prisma failed to detect the libssl/openssl version to use, and may not work as expected. Defaulting to "openssl-1.1.x".
Please manually install OpenSSL via apt-get update -y && apt-get install -y openssl and try installing Prisma again. If you're running Prisma on Docker, add this command to your Dockerfile, or switch to an image that already has OpenSSL installed.
voici mon dockerfile :
FROM node:18-slim AS builder
RUN apt-get update
&& apt-get install -y openssl libssl1.1
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY package*.json ./
COPY prisma ./prisma/
RUN npm install
COPY . .
RUN npm run build
FROM node:18-slim
RUN apt-get update
&& apt-get install -y openssl libssl1.1
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY --from=builder /app /app
EXPOSE 4000
ENV PRISMA_CLI_BINARY_TARGETS=debian-openssl-1.1.x
CMD ["npm", "start"]
Essaye pas en version slim de node
Vous pensez quoi comme budget pour un bot qui "capte" chaque publication et chaque modification de profil et pareil pour des postes (et qui peut les supp)?
Avec un site firebase
Je ne saurais pas te dire personnellement, mais il faudrait nous donner plus de détails comme la plateforme que tu vises par exemple
#javascript-typescript message
(c un bot de modération du site)
Hello ! J’ai une ptite question je connais pas du tout le JavaScript mais j’aimerais faire ceci en moving pour un bakcground de site et je trouve pas comment faire est ce que quelqu’un peut m’expliquer en détail ??
Pour créer un fond animé comme celui de ton image, on peut utiliser HTML, CSS et JavaScript avec Canvas API ou CSS animations. Voici deux méthodes détaillées :
Méthode 1 : Avec CSS (Facile)
Si tu veux un effet simple avec des dégradés animés, utilise CSS keyframes :
body {
margin: 0;
height: 100vh;
display: flex;
justify-content: center;
align-items: center;
background: linear-gradient(45deg, #ff00ff, #ff66ff, #ff99ff);
background-size: 400% 400%;
animation: gradientAnimation 8s infinite alternate;
}
@keyframes gradientAnimation {
0% {
background-position: 0% 0%;
}
100% {
background-position: 100% 100%;
}
}
➡️ Explication :
On utilise linear-gradient pour créer un dégradé rose.
L'animation @keyframes fait bouger le fond en changeant sa position.
C'est simple, mais pas aussi fluide qu'un fond en Canvas.
Méthode 2 : Avec JavaScript & Canvas (Avancé)
Si tu veux un effet fluide et dynamique, comme un background avec des blobs mouvants, on peut utiliser Canvas :
<canvas id="animatedBackground"></canvas>
<script>
const canvas = document.getElementById("animatedBackground");
const ctx = canvas.getContext("2d");
canvas.width = window.innerWidth;
canvas.height = window.innerHeight;
let blobs = [];
const blobCount = 10;
for (let i = 0; i < blobCount; i++) {
blobs.push({
x: Math.random() * canvas.width,
y: Math.random() * canvas.height,
radius: 60 + Math.random() * 40,
dx: (Math.random() - 0.5) * 2,
dy: (Math.random() - 0.5) * 2,
color: `rgba(255, 0, 255, 0.5)`
});
}
function animate() {
ctx.clearRect(0, 0, canvas.width, canvas.height);
blobs.forEach(blob => {
ctx.beginPath();
ctx.arc(blob.x, blob.y, blob.radius, 0, Math.PI * 2);
ctx.fillStyle = blob.color;
ctx.fill();
blob.x += blob.dx;
blob.y += blob.dy;
if (blob.x - blob.radius < 0 || blob.x + blob.radius > canvas.width) blob.dx *= -1;
if (blob.y - blob.radius < 0 || blob.y + blob.radius > canvas.height) blob.dy *= -1;
});
requestAnimationFrame(animate);
}
animate();
</script>
➡️ Explication :
-
On crée un <canvas> qui couvre tout l'écran.
-
On génère des blobs (cercles flous) qui bougent aléatoirement.
-
On utilise requestAnimationFrame pour animer les blobs.
@tacit jewel voilà
Okk je vais voir merci beaucoup !
Derien
Bonjour, j'ai réalisé un code pour faire un formulaire d'ajout de prof ( projet scolaire ) et lors de la modification ça n'update pas mes infos dans la table. Je débute en ajax donc j'ai pu faire une erreur nulle. Sachant que pour mon ajout étudiant tout marche parfaitement
sa update juste pas ? pas d'erreur code en particulier ?
C'est ça, ça prend les données du prof grâce à l'id, mais quand j'envoie la modif ça ne change pas. j'ai essayé quelques trucs niveau code mais ça n'affiche rien
j'ai cette erreur la quand j'envoie les données
vas dans network
mais sur mon autre page j'ai la même erreur avec le dev tool, sans ça , ça va
et tu clique sur la request après dans réponse tu devrait avoir l'erreur en elle même
si tu return bien une erreur
il est où request ?
tu devrait avoir quelque chose de similaire mais pour t'as request
si tu là pas dans le name a gauche renvoie là avec la fenêtre dev tool d'ouvert
la dans l'onglet response t'as rien ?
Ah oui mais enfaite t'as une erreur réseau
c'est à dire ?
c'est à dire que t'as requêtes ajax n'arrive pas a atteindre le serveur
ça peut venir de pas mal de chose mais la je dirait plutôt une erreur dans les url ajax
genre ça : url: "ajax/recup_enseignant.php",
oui vérifie que le fichier soit bien accessible à l'emplacement ajax/recup_enseignant.php
je les ai tous modifier et rien
d'après mon prof il n'arrive pas à accéder a la bibliothèque Jquery
oui possible dans la console t'as des erreurs jquery ?
Salut, quelqu'un saurait si c'est possible de retourner la valeur dynamiquement en React dans useReferentialProvidedContext plutôt que de devoir modifier ce hook à chaque fois que j'ajoute une entité à mon projet ?
useReferentialForManagedEntity étant un hook, React ne me laisse pas l'utiliser dans une boucle
Salut, tu peux créer un objet qui mappe tes clés d'entités avec leurs valeurs correspondantes ensuite, tu pourras utiliser cet objet dans une boucle pour construire dynamiquement le contexte
Bah écoute c'est ce que je viens de faire et je vois que react ne me met pas d'erreur. Pourtant je suis persuadé que la dernière fois que j'ai essayé quelque-chose de similaire j'ai eu une erreur de React me disant que je ne devais pas appeler des hooks dans une boucle et ça me causait des rerendus en boucles)
const useReferentialProvidedContext = <TEntity extends Entity>(): ReferentialContext => {
const { managedEntity } = useManagedEntity<TEntity>();
const referential: Partial<ReferentialContext> = {};
for (const key in entityManager.map) {
referential[key] = useReferentialForManagedEntity(managedEntity, entityManager.map[key]);
}
return referential;
}
ah mais je crois que la dernière fois que j'avais essayé sans succès j'avais mémorisé mon objet
C'est bien ça, c'est parce-qu'il ne faut pas mémoriser les appels à des hooks.
const useReferentialProvidedContext = <TEntity extends Entity>(): ReferentialContext => {
const { managedEntity } = useManagedEntity<TEntity>();
const referential: ReferentialContext = useMemo(() => {
const result: ReferentialContext = {};
for (const key in entityManager.map) {
result[key] = useReferentialForManagedEntity(managedEntity, entityManager.map[key]);
}
return result;
}, [managedEntity, entityManager.map]);
return referential;
}
L'erreur vient du fait que les hooks ne peuvent pas être appelés à l'intérieur de boucles ou de conditions ils doivent être appelés directement au niveau supérieur de la fonction
donc par exemple :
const useReferentialProvidedContext = () => {
const { managedEntity } = useManagedEntity();
const buyers = useReferentialForManagedEntity(managedEntity, entityManager.map.buyers);
const buyerSiret = useReferentialForManagedEntity(managedEntity, entityManager.map.buyerSiret);
return useMemo(() => ({
buyers,
buyerSiret,
}), [managedEntity, buyers, buyerSiret]);
};
J'avoue que je suis très programmation orientée objet donc les hooks me semblent pas très intuitifs. Je pense que c'est principalement parce-que je n'arrive pas à comprendre comment React fait pour savoir si un composant doit être rerendu à partir du contenu de la fonction de ce composant lui-même
Ca fonctionne comme ça donc c'est bon :
const useReferentialProvidedContext = <TEntity extends Entity>(): ReferentialContext => {
const { managedEntity } = useManagedEntity<TEntity>();
const referential: ReferentialContext = {};
for (const key in entityManager.map) {
if (!managedEntity.isReferentialRequired(key)) continue;
referential[key] = useReferentialForManagedEntity(managedEntity, entityManager.map[key], true);
}
return referential;
}
j'ai l'erreur que je t'ai montrer juste avant
on a directement installer la bibliothèque, mais ça na rien changer
faut voir avec le code
update : mon code de recup de donnée ne prenais pas l'id du coup modif n'avais pas l'id pour modifier
hello, je suis en train d'essayer de faire une api pour mon jeu. Cependant, unity n'accepte pas les requettes en http. Comment est ce que je pourrait faire pour la faire passer en https??
(j'utilise express)
Utiliser un certificat SSL 🤷♂️
Si t’es en local tu l’auto signe et basta
Si non, tu fais un certificat propre
j'ai déjà un certificat ssl que j'ai pour mon site perso et j'essaye de l'utiliser pour l'api mais j'y arrive pas
j'ai ajouté ca dans ma config nginx
Il faut refaire "la demande" pour un certificat SSL pour ton API
Même si c'est sur le même domaine ??
Ok thx j'essaye dès que je suis chez moi
T'as pas api.nocteln.fr ?
Nope
Mais je peux le faire au pire
Prcq ce que je pensais c'est faire un truc du genre nocteln.fr/api
Donc tu as 2 apps, ? Une sur nocteln.fr et une sur nocteln.fr/api ?
Si c'est bien ça, ça me parait plus clean de faire une app sur nocteln.fr et une autre sur api.nocteln.fr où tu fais une demande de certif SSL
oep c'est ce que j'ai fait et c'est vrai que maintenant que j'y réfléchit c'était pas terrible 😂
(dcp ca fonctionne merci pour l'aide)
Avec plaisir
note que letsencrypt permet aussi de créer un certificat wilcard
Le certificat TLS certifie que tu te connectes bien au bon serveur depuis le nom de domaine. C'est pour ça qu'il est lié au serveur et au nom de domaine
ah ok merci
👋 Je suis entrain d'apprendre comment utiliser le framework expressjs et j'aimerais savoir comment je pourrais faire en sorte que les fichiers css marchent j'ai tout essayer mais j'y arrive pas 😭
Il faut que les fichiers css soient dans un dossier accessible sur le serveur, et que dans ton html tu les importes bien
bah c'est le cas pourtant
attends j'te montre
Tu arrives à get leur contenu depuis ton navigateur ?
Ah
Et depuis ton onglet réseau sur ton navigateur, quand tu appelle ta page web, il y a une erreur à propos du css ?
j'ai pas vérifier j'regarde
oui y a une erreur 404
ah bah j'ai régler le problème en modifiant la ligne pour importer le css
merci

Bonsoir à tous, j'essaye de faire une activity discord mais je passe par un tunnel cloudflare, et quand je met le lien cloudflare sur discord, je voit ça :
dans la config vite, j'ai donc rajouté ça :
allowedHosts: [
/.*\.trycloudflare\.com$/,
],
pour accepter tout les host .trycloudflare.com mais ça ne marche toujours pas
si quelqu'un a déjà eu le meme problème
Je doute que allowedHosts prenne des regex
Je confirme, tu ne peux mettre que des strings
donc, je suis obligé de faire .trycloudflare.com en string, c'est ça ?
Ouais
Et donc de le modifier à chaque fois que tu relances le tunnel
Sinon tu mets sur true comme ça plus de problèmes ^^
true sans string ?
Remplace juste par .trycloudflare.com
À merde on te l'avais déjà dit my bad
yes merci comme même
Hello petite question avec ReatJS, pour la navigation router que me conseillez vous ? De meme pour l'authentification et une lib UI svp ?
Hello ça dépend ce que tu veux faire mais react-router est pas mal, l'auth aucune idée, et lib UI perso je suis depuis des années sur Tailwind et je n'ai jamais trouvé mieux
Tailwind, un banger ! Sinon, t’as Material UI ou Bulma (moins connu mais tout aussi bien) pour l’auth, ça dépend de ce que tu veux et maîtrises : Auth0, Firebase Auth, NextAuth… ou sinon tu peux gérer ça toi-même avec du JWT
Et avec TailwindCSS, tu peux trouver énormément de components pré-fabriqués sur internet. Tu peux regarder chez https://ui.shadcn.com notamment
Et en plus de ce qu'a proposé Yuketsu, il y a aussi https://mantine.dev que j'aime bien utiliser dans certains projets
les composants mantine sont customizable en tailwind ?
Mantine a ses propres classes CSS, tu peux utiliser Talwind et tu dois pouvoir override les classes de base sans trop de difficultés je pense
et avec shadcn ?
Oui, tu peux lire la documentation et les components qu'ils proposent, tout les styles sont écrits avec tailwind et c'est très facile de les override
Les components ont un style par défaut que tu peux directement modifié dans le component, et sinon, tout ce que tu passes dans le className de ton component va override le style de base de ce dernier