#javascript-typescript

1 messages · Page 33 of 1

keen narwhal
#

essaye yarn

#

c'est + opti

keen narwhal
#

Tu réinstalles node.js et lors de l’installation verifie bien à cocher la case « ADD TO PATH »

#

Bonne soirée

craggy mist
#

ca marche pas mias merci

keen narwhal
craggy mist
#

yes

#

genre yarn create-next-app@latest ?

keen narwhal
craggy mist
#

ca marche pas

keen narwhal
#

y a les error aussi?

craggy mist
#

oui

#

et node js et vs sont installe dans le meme disque dur

floral bolt
#

Yarn tu dois l’installer avec npm 😄

#

Fait node -v

#

Et npm -v

craggy mist
old loom
floral bolt
#

Node -v avec un espace

#

Node espace -v

craggy mist
floral bolt
#

Npm install —g yarn

craggy mist
#

nouvelle erreur

floral bolt
#

Refait npx create-next-app@latest pour test

craggy mist
#

nouvelle erreur également

floral bolt
#

Il manque un e à create

craggy mist
#

merci ca marche

#

par contre le npm run dev marche pas

floral bolt
#

Montre

craggy mist
floral bolt
#

Fait ls et envois le résultat

#

« Ls »

floral bolt
#

Ou mieux envois un screen de ton dossier

sinful flicker
#

Somme toute logique y’a pas de dev dans son json 👀

floral bolt
#

Ou il est pas dans le bon dossier …

sinful flicker
#

C’est probable

floral bolt
#

Mais comme il ne répond plus c’est qu’il doit avoir trouvé

keen narwhal
#

@floral bolt merci d'avoir répondu à ma place j'étais pas là

#

il a régler le problème ou pas ?

floral bolt
keen narwhal
plush lava
floral bolt
#

Ouais, mais bon on va pas le perdre sachant qu’il n’arrive pas à lancer un projet next :/

finite glade
#

Hello je suis coincer sur une chose toute bête , comment on prend la valeur d'un resultat et on le multiplie par 3

finite glade
#

Wep

#

C'est sa que je veux faire

#

@floral bolt

#

En gros c'est sa

#

Luffy augmente sa speed {valeur} si celui-ci baisse son ennemie de 230 alors il gagne {valeur * 3}

Le problème c'est qu'il me relance un GetrandomInt de 600

finite glade
#

Bon bas si qlq peu aidé

#

ne pas hésité

steep gulch
finite glade
steep gulch
#

Et donc quand tu met ${230*3} ça te sort un getrandomInt

finite glade
#

nan

#

je veux pas faire 230*3

#

je veux prendre le résultat du getrandomint de "Luffyspeedgain" et le faire x3

#

mais si je remet Luffyspeedgain sa me relance un getrandom int

steep gulch
#

Passe un screen de ta fonction getrandomInt

finite glade
#

je ne l'ai pas

#

enfin je ne sais ps dans quel section elle est

#

c'est un bot que j'ai du reprendre car le créateur à arreter

steep gulch
#

Ah

finite glade
#

Mais moi

#

je veux juste

#

prendre le résultat

steep gulch
#

J'ai compris tqt

finite glade
#

et faire x3

steep gulch
#

Je réfléchis

finite glade
#

'k

#

sinon tempis je dis juste au joueur a l'écrit de faire x3

#

et il se débrouille a la calc

steep gulch
#

Pas ouf de faire ça

finite glade
#

x)

#

on faisais comme sa pour certains perso

steep gulch
#

Tu as essayé de faire une const a lieux d'un let pour pas que la valeur bouge

#

Je dis peut être de la merde mais ça peux fonctionner

finite glade
#

bah le but c'est que la valeur bouge

#

c'est un roll

#

c'est juste qu'une fois que j'ai le résultat du roll

#

je veux le faire x3 sur la section à coté

#

att 2s

steep gulch
#

Je test un truc et je te redis

finite glade
#

tu vois, la sa fais ainsi

#

mais le triplé

#

correspond pas a 185 * 3

#

ah si

#

att

#

j'ai peut etre résolu moi même le soucis sans le vouloir

#

mdr

steep gulch
#

Ah

#

C'était quoi le soucis ?

finite glade
#

bon

#

je pense

#

j'avais oublié de restart le bot

#

et donc que ce que j'avais fais de base

#

fonctionné

steep gulch
#

Je me disais bien que c'était bizarre que juste *3 ne fonctionnait pas

finite glade
#

x)

#

je vais pouvoir continuer ma maj du serv

#

merci a toi

steep gulch
#

Pas de soucis

#

N'hésite pas si tu as besoin

cursive salmon
#

Bonjour! Est-ce que quelqu'un s'y connaît un peu en js pour after effects ici?

queen ocean
cursive salmon
#

Un petit script oui

queen ocean
cursive salmon
#

D'acc, alors en gros j'aimerais que mon script crée un calque text et qu'il applique deux preset d'animation, le premier qui est déjà intégré qui s'appelle "Fade Up Words" et le second qui a toujours du mal à s'intégrer "Fade Out Slow". Dès que je tente de l'intégrer, les keyframes du premier effet disparraissent, voir même l'effet complet qui disparaît des calques

queen ocean
cursive salmon
#

Désolé du temps de réponse mon chaton faisait le bordel haha

#

Ce qu'il fait pour l'instant c'est générer des sous titres sous forme de calques de texte via un fichier srt. Le premier preset d'animation est good aussi et bien keyframe mais le second ne veux pas apparaître

cursive salmon
#

Si quelqu'un est dispo pour lui montrer en partage ce serait mieux je pense 🙂

stone roost
#

Hola des persoones qui dev des bots discord ici ou pas ? J'aurais une petite question svp

stone roost
# dire latch Pose ta question

Je développe un bot depuis un certain temps (je suis novice), et il y a quelques mois, quand je travaillais dessus, j'ajoutais une commande, et elle apparaissait directement sur Discord une fois le bot lancé, ce qui me permettait de l'essayer tout de suite. Mais récemment, j'ai repris le développement, et maintenant, lorsque j'ajoute une commande, je dois attendre plusieurs heures, voire une journée, pour qu'elle apparaisse sur Discord.

#

Est-ce normal ? Ont-ils ajouté un délai pour que les commandes soient déployées ?

worthy ice
finite glade
#

Bonjour, j'aurai besoins d'aide pour un code si possible . J'essaye de faire un switch mais avec un getrandomint qui me permet de tirer un dé, merci a vous

finite glade
#

j'ai trouver

finite glade
#

Bonjour , j'aimerais crée ou trouver un moyen d'avoir la fonction entre 2 nombre merci a vous

#

(en urgence si possible)

cerulean pond
finite glade
#

Oh désolé , j'ai oublié de prévenir mais merci quand même

#

J'ai réussi à trouver la solution

keen narwhal
stone roost
#

J'arrive a charger directement que quand je réinvite le bot a chaque fois sur le discord

cerulean pond
#

Peux-tu me faire voir où tu enregistres les slash commands ?

keen narwhal
#

je regarde ça

keen narwhal
#

créer 1 nv bot

cerulean pond
#

non

cerulean pond
keen narwhal
stone roost
#

Pas moi qui les ecris en tout cas

keen narwhal
stone roost
#

Mais les 3/4 du bot c'est moi

stone roost
keen narwhal
#

discord.js combien ?

keen narwhal
stone roost
stone roost
cerulean pond
#
const guildId = "ton serverID"
client.once('ready', () => {
 client.guilds.cache.get(guildId).commands.set(commands);
})
stone roost
# keen narwhal c du chatgpt?

Après j'ai demandé a chatgpt y a peu de temps de me reexpliquer tout les codes que je n'avais pas ecris moi meme pour apprendre et comprendre ce qui avait ete fait

cerulean pond
#

au lieu de tout ça

#

sauf tu laisses modules.exports = {loadCommands};

keen narwhal
#

sil doit mettre tout les id discord

#

pk tu changes pas ton handler ?

cerulean pond
#

non tu n'as pas compris

stone roost
keen narwhal
#

zjai cru tallais le rendre public

cerulean pond
#

Il ne va rentrer que le serverID de son serveur de test car il veut que les commandes slash se refresh immédiatement après le redémarrage du bot

#

Mais si c'est du public alors c'est normal qu'il faut attendre plusieurs heures avant que les commandes slash se refresh

keen narwhal
keen narwhal
#

il refresh instant

worthy ice
cerulean pond
worthy ice
#

Jamais eu sa perso, juste le besoin de refresh discord

cerulean pond
#

🤷 en tout cas, @stone roost a ce pb là

#

Et ça m'est déjà arriver

#

@stone roost tu as essayé de refresh ton discord comme ils ont dit ?

stone roost
#

Yep !

cerulean pond
#

et ça marche tjrs pas dcp ?

stone roost
#

nop

#

Ce qui est bizzare c'est que y a quelque mois j'avais pas se problème alors que c'est le mm bot/code

#

En vrai c'etait y a genre 6/7 mois (oui je dev par periode ahah)

cerulean pond
stone roost
#

je vais test la

stone roost
cerulean pond
#

le commandsArray ?

stone roost
#

yep

cerulean pond
#

ça marche du coup ?

stone roost
#

oui merci beaucoup

cerulean pond
#

Nice, tu n'auras plus jamais ce souci :)

stone roost
#

Parfait merci la vie c'etait trop chiant je faisait un truc j'attendais le lendemain pour test 🥲

empty mauve
#

bonsoir, j'ai un projet NextJS et ça fait 4h que j'arrive pas a récupérer des abonnée YT, si quelqu'un aurais un ptit exemple ou juste la solution svp harold

steep gulch
#

Bonsoir a tous

#

Je travail sur un projet avec react et express

#

je dois faire un fetch vers un chemin depuis mon front vers mon back

#

et dans ce fetch je passe les cookie du site grace a ' credentials: "include", '

#

problème

#

je me chope une erreur cors parce que je veux faire passer mes cookie ainsi

#

comment enlever cette erreur CORS ?

#

Si j'amais voici l'érreur :

#

Blocage d’une requête multiorigine (Cross-Origin Request) : la politique « Same Origin » ne permet pas de consulter la ressource distante située sur http://localhost:8081/clientInfos. Raison : l’identification n’est pas prise en charge si la valeur de l’en-tête CORS « Access-Control-Allow-Origin » est « * »

plush lava
#

@keen narwhal comme tu as supprimé ton message je suppose que tu as résolu ton problème et j'aimerais bien savoir comment tu as fait car j'ai la même erreur de mon côté

keen narwhal
plush lava
#
DiscordAPIError[50027]: Invalid Webhook Token
    at handleErrors (/home/container/node_modules/@discordjs/rest/dist/index.js:730:13)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async SequentialHandler.runRequest (/home/container/node_modules/@discordjs/rest/dist/index.js:1133:23)
    at async SequentialHandler.queueRequest (/home/container/node_modules/@discordjs/rest/dist/index.js:963:14)
    at async _REST.request (/home/container/node_modules/@discordjs/rest/dist/index.js:1278:22)
    at async InteractionWebhook.editMessage (/home/container/node_modules/discord.js/src/structures/Webhook.js:341:15)
    at async ModalSubmitInteraction.editReply (/home/container/node_modules/discord.js/src/structures/interfaces/InteractionResponses.js:161:17) - undefined```
#

aucune idée du code mdrr y'a vient que de discord.js

#

et ça spam pas mal la console, plusieurs fois par jours

#

c'est un bot que j'ai un peu abandonné en vrai, te casse pas la tête à essayé de savoir d'où ça vient

#

Je suis en train de refaire au propre le même bot

keen narwhal
#

jtt entrain de manger

plush lava
#

j'ai pas de commande modal non

keen narwhal
plush lava
#

oui

keen narwhal
#

mdr

#

ton erreur c juste une commande qui a un délai

silent quiver
#

Bonjour, j'ai un probleme avec child_process sur node.js 20.17.0.

const playerctl = spawn('playerctl', ['status'], { shell: true });

playerctl.stdout.on('data', (data) => {
  console.log(`stdout: ${data}`);
});

playerctl.stderr.on('data', (data) => {
  console.error(`stderr: ${data}`);
});

playerctl.on('close', (code) => {
  console.log(`exit code ${code}`);
});

les logs :

stdout: (playerctl:494502): playerctl-DEBUG: 12:03:48.883: Getting list of player names from D-Bus
stdout: (playerctl:494502): playerctl-DEBUG: 12:03:48.884: Playerctld is running. Getting names from there.
stdout: (playerctl:494502): playerctl-DEBUG: 12:03:48.886: Getting list of player names from D-Bus
stdout: (playerctl:494502): playerctl-DEBUG: 12:03:48.888: initializing player: firefox.instance_1_114
stderr: No player could handle this command
  • Dans le shell system la commande fonctionne parfaitement
  • J'ai vérifier les variables d'environements dans le contexte du shell node.js est celui de mon shell system, il y a une différence que je ne comprend pas
    shell system env : DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus
    shell node.js env : DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus,guid=cb08ec9f216e7f753c689a2466d60022
  • playerctl status ne fonctionne pas dans le terminal de vscode
silent quiver
#

Je viens de comprendre ce n'est pas un probleme avec node.js mais un probleme du contexte d'execution si je lance mon app a partir de mon shell system cela fonctionne mais sur le shell vscode non

proven stone
#

Bonjour à tous,

J'apprends a developper des application mobile, pour le moment je suis sous React Native en JS & expo.
Coté developpement ca se passe bien mais je n'arrive pas a build d'apk, l'appli tourne parfaitement sous Expo Go avec emulateur ou machine physique.

Ca dois faire quelques semaines que j'y passe des heures sans reussit. Alors j'ai décidé de re crée un projet vierge car l'autre avait pas mal d'erreur en partant du principe que le buil ne fonctionnait pas a cause de ca.

Une fois le nouveau projet setup je décide de faire un build apk tel qu'il est donc avec juste la page d'accueil de base quoi. L'apk se genere sans problème.

J'essaie donc d'ajouter mes composants et pages tout en prennant soins de réparer chaque erreur.

Maintenant que c'est fait, le build ne refonctionne plus.

Je vous ments pas je suis a bout de nerf x)

Si quelqu'un a une idée de pourquoi ca bloque je suis prenneur.

Merci beaucoup

floral bolt
#

Tu es sensé avoir une erreur quand tu build

#

Elle dit quoi cette erreur ?

frail meteor
#

Bonjour,

j'ai un léger problème que je n'arrive pas a résoudre. Je souhaite remove un objet généré dynamiquement en fonction du state d'un autre tout en remontant la ref y étant associer afin de la manipuler a un autre endroit.

c'est assez compliquer d'expliquer la suite donc voici mon code :

removeItems = (index: number[]): Promise<ObjectCustom[]> => {// pour le test index vaut [0]
        return new Promise((resolve) => {
            const toReturn = index.map(i => this.ref[i].current);

            this.setState(
                (prevState) => ({
                    data: [...prevState.data.filter((_, i) => !index.includes(i))]
                }), () => {
                    console.log('toReturn: ', toReturn.map((item) => item.state)); //ici toReturn a la valeur que je souhaite : this.ref[0].current avant la suppréssion de l'item autrement dit l'item qui est supprimé.
                    resolve(toReturn);
                }
            );
        });
    }

render(){
  return (<div>
    {this.state.data === null ? null : this.state.data.map((data, index) =>
      <div key ={index}><Item ref={this.ref[index]} data={data} /></div>
    )}
    </div>);
}

et voici l'utilisation de removeItems :

from.removeItems(items).then((removedItems) => {
  console.log('card removed from hand :', removedItems.map((item) => item.state)); //affiche la valeur du nouveau this.ref[0].current soit l'ancien this.ref[1].current au lieux de me return l'élément supprimer

PS: dans le cas ou je n'utiliserai pas une promise pour removeItems alors removedItems serait bon mais lors de n'importe quel nouveau setstate celui-ci change tout seul retrouvant le mauvais élément le rendant donc inutilisable pour ce que je souhaite en faire : une animation de déplacement ou l'item passerai d'un composent A à un composent B a l'aide un composent C servant a faire la transition

proven stone
# floral bolt Tu es sensé avoir une erreur quand tu build

Salut !

J'ai cette erreur en fin de build :


[RUN_GRADLEW] FAILURE: Build failed with an exception.
[RUN_GRADLEW] * What went wrong:
[RUN_GRADLEW] Execution failed for task ':react-native-pager-view:compileReleaseKotlin'.
[RUN_GRADLEW] > A failure occurred while executing org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction
[RUN_GRADLEW]    > Compilation error. See log for more details
[RUN_GRADLEW] * Try:
[RUN_GRADLEW] > Run with --stacktrace option to get the stack trace.
[RUN_GRADLEW] > Run with --info or --debug option to get more log output.
[RUN_GRADLEW] > Run with --scan to get full insights.
[RUN_GRADLEW] > Get more help at https://help.gradle.org.
[RUN_GRADLEW] BUILD FAILED in 1m 16s
[RUN_GRADLEW] 191 actionable tasks: 191 executed
[RUN_GRADLEW] Error: Gradle build failed with unknown error. See logs for the "Run gradlew" phase for more information.

Build failed
Gradle build failed with unknown error. See logs for the "Run gradlew" phase for more information.
npx exited with non-zero code: 1
    Error: build command failed.

Je peux t'envoyer le shell du build complet si besoin ! Merci pour ton aide ! 🙂

floral bolt
proven stone
floral bolt
#

c'est pas a jour non ... c'est deprecié et plus maintenu

proven stone
#

AHH OUI

#

Je vais tester avec react-native-pager-view alors

floral bolt
#

si ca ne marche pas n'hesite pas 😉

proven stone
#

T'es un tueur merci beaucoup !

proven stone
floral bolt
#

essaye cd android ./gradlew clean ./gradlew build

proven stone
#

Le problème avec ca c'est que j'ai pas de fichier android :c

floral bolt
#

Tu fais quoi comme commande quand tu build ?

proven stone
#
eas build --platform android --local```
floral bolt
#

t'es bien sur windows ?

proven stone
#

yes mais pour build j'utilise WSL

floral bolt
#

fait ca : eas build --platform android --local --gradle-flag --stacktrace on aura plus d'info

proven stone
#

eas build --platform android --local --gradle-flag --stacktrace
Unexpected arguments: --gradle-flag, --stacktrace
See more help with --help
Error: build command failed.
loic@MAIRP0033:/mnt/c/Users/l.florimont/Documents/Developpement/ApplicationTablette/test-build$

floral bolt
proven stone
floral bolt
#

eas build --platform android --local --stacktrace

proven stone
#

roid --local --stacktrace
★ eas-cli@12.0.0 is now available.
To upgrade, run npm install -g eas-cli.
Proceeding with outdated version.

Unexpected argument: --stacktrace
See more help with --help
Error: build command failed.

floral bolt
#

envois ton package.json et ton build.gradle

proven stone
#
{
  "name": "test-build",
  "version": "1.0.0",
  "main": "expo/AppEntry.js",
  "scripts": {
    "start": "expo start",
    "android": "expo start --android",
    "ios": "expo start --ios",
    "web": "expo start --web"
  },
  "dependencies": {
    "@expo/vector-icons": "^14.0.2",
    "@react-navigation/native": "^6.1.18",
    "@react-navigation/stack": "^6.4.1",
    "expo": "~51.0.28",
    "expo-status-bar": "~1.12.1",
    "firebase": "^10.13.1",
    "prop-types": "^15.8.1",
    "react": "^18.3.1",
    "react-native": "^0.75.2",
    "react-native-safe-area-context": "^4.10.5",
    "react-native-screens": "^3.34.0",
    "react-native-snap-carousel": "^1.3.1",
    "react-navigation": "^5.0.0",
    "react-native-pager-view": "6.3.0"
  },
  "devDependencies": {
    "@babel/core": "^7.20.0"
  },
  "private": true
}

#

J'ai pas de fichier builkd.gradle

floral bolt
#

npm install react-native-pager-view@latest et reesaye

proven stone
#

okay c'est partit

proven stone
red torrent
#

le "failed with unknown error" n'aide pas beaucoup

floral bolt
red torrent
#

tu peux peut-être essayer avec --info ou --debug

proven stone
#
cmake --version
cmake version 3.22.1

CMake suite maintained and supported by Kitware (kitware.com/cmake).

floral bolt
#

t'es en retard : https://cmake.org/download/

#

ensuite npx expo upgrade puis npx expo install

proven stone
#
$ expo upgrade is not supported in the local CLI, please follow this guide https://docs.expo.dev/workflow/upgrading-expo-sdk-walkthrough/ instead

Une fois sur le liens

npm install expo@latest

up to date, audited 1305 packages in 3s

136 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities
npx expo install --fix
The following packages should be updated for best compatibility with the installed expo version:
  react@18.3.1 - expected version: 18.2.0
  react-native@0.75.2 - expected version: 0.74.5
  react-native-pager-view@6.4.1 - expected version: 6.3.0
  react-native-safe-area-context@4.10.9 - expected version: 4.10.5
  react-native-screens@3.34.0 - expected version: 3.31.1
Your project may not work correctly until you install the expected versions of the packages.
› Installing 5 SDK 51.0.0 compatible native modules using npm
> npm install

added 16 packages, removed 33 packages, changed 52 packages, and audited 1288 packages in 1m

133 packages are looking for funding
  run `npm fund` for details

found 0 vulnerabilities
cmake --version
cmake version 3.22.1

CMake suite maintained and supported by Kitware (kitware.com/cmake).

Voila :c

floral bolt
#

ta pas mis a jour cmake

proven stone
#

faut que j'le dl version windows ?

floral bolt
#

si t'es sur windows oui

proven stone
#

j'avoue que c'est plutot logique

floral bolt
proven stone
# floral bolt si ca marche pas je te laisserais faire ce tuto : https://docs.expo.dev/develop/...

Okay merci pour ca,

Malgré la maj cmake ca build tjr sous l'ancienne version

[RUN_GRADLEW] > [CXX1428] exception while building Json A problem occurred starting process 'command '/mnt/c/Users/l.florimont/AppData/Local/Android/Sdk/cmake/3.22.1/bin/cmake'' : org.gradle.process.internal.ExecException: A problem occurred starting process 'command '/mnt/c/Users/l.florimont/AppData/Local/Android/Sdk/cmake/3.22.1/bin/cmake''

Pourtant :

cmake --version
cmake version 3.30.3

CMake suite maintained and supported by Kitware (kitware.com/cmake).

Possible que ce soit du au fait que l'ancienne version a été installé toute seule par android studio ?

J'ai modifier dans le ~/.bashrc l'emplacement de cmake car l'install de la nouvelle version l'envoie dans programme files. J'ai du louper quelque chose a faire.

J'vais laisser ca pouir ajd mais si t'as d'autres idée je suis grave prenneur je reesaierais demain

Merci beaucoup pour ton aide

normal lichen
#

hello pourriez vous m'aider s'il vous plait ?

Property 'getString' does not exist on type 'Omit<CommandInteractionOptionResolver<CacheType>, "getMessage" | "getFocused" | "getMentionable" | "getRole" | "getAttachment" | ... 6 more ... | "getSubcommand">'

J'ai l'impression que ce soucis vien d'un ptobleme avec mon interface SlashCommand mais je ne trouve pas de solution

voici mon code

import { SlashCommand } from "../../types";
import { PermissionFlagsBits, SlashCommandBuilder } from 'discord.js';

export const command: SlashCommand = { 
    name: 'play',
    data: 
        new SlashCommandBuilder()
            .setName('play')
            .setDescription('Play song ')
            .setDefaultMemberPermissions(PermissionFlagsBits.Administrator)
            .addStringOption(option => option.setName('song').setDescription('The song you want to play').setRequired(true)),
    async execute(interaction, client) {
        await interaction.deferReply();
        const song = interaction.options.getString('song');

        console.log(song);
    }
}



export interface SlashCommand {
    name: string,
    data: SlashCommandBuilder | any,
    async execute: (interaction : CommandInteraction, client: Client) => Promise<void>,
}
keen narwhal
#

Bonjour tout le monde je recherche actuellement quelqu’un qui pourrait m’aider à fixer certains bugs d’un script

#

Ça concerne la création de live TikTok interactif, un genre de quizz culture g

#

La base du script est solide mais pour toute la partie backend ça marche pas

spice grail
normal lichen
spice grail
normal lichen
#

et l'erreur explicte affiche bien "on type"

#

sa sert a rien d'essayer de prendre les gens de haut ...

spice grail
normal lichen
#

sa sert a rien d'dit ton message pour rajouter problème de type 😂

#

bref je vais attendre l'aide de quelqu'un s'y connais vraiment et qui est plus agréable, merci a toi pour ta non assistance 😉

spice grail
#

j’ai juste lu ton erreur pour te l’expliciter vu que je ne connais aucunement ton niveau, mon but était bien de t’aider. après pas de soucis attend quelqu’un d’autre :thumbsup:

frail meteor
#

j'avoue que je veux bien aussi la stack complète ou plus de code si ça n'est pas ce qu'a dit @spice grail ^^' après je reste un junior donc ça se trouve il n'y en a pas besoin mais je vois pas là comme ça

#

peux tu montrer ta class CommandInteraction ou plutôt ce qui est contenue dans option?

frail meteor
cursive sail
normal lichen
#

oui mais il me met toujours des soucis de type 😵‍💫

cursive sail
#

Essai comme ça (je sait pas si tu la fait de la même manière, si oui je vais encore chercher une autre méthode)

import { SlashCommand } from "../../types";
import { PermissionFlagsBits, SlashCommandBuilder, ChatInputCommandInteraction, Client } from 'discord.js';

export const command: SlashCommand = { 
    name: 'play',
    data: 
        new SlashCommandBuilder()
            .setName('play')
            .setDescription('Play a song')
            .setDefaultMemberPermissions(PermissionFlagsBits.Administrator)
            .addStringOption(option => 
                option.setName('song')
                    .setDescription('The song you want to play')
                    .setRequired(true)
            ),
    async execute(interaction: ChatInputCommandInteraction, client: Client) {
        await interaction.deferReply();
        const song = interaction.options.getString('song');

        console.log(song);
    }
}

export interface SlashCommand {
    name: string,
    data: SlashCommandBuilder | any,
    execute: (interaction: ChatInputCommandInteraction, client: Client) => Promise<void>,
}
normal lichen
# cursive sail Essai comme ça (je sait pas si tu la fait de la même manière, si oui je vais enc...

j'ai ceci actuellement

    async execute(interaction, client) {
        await interaction.deferReply();

        const inter = interaction.options as CommandInteractionOptionResolver
        const song = inter.getString('song');
        const player = useMainPlayer();

        const res = await player.search(song, {
            requestedBy: interaction.user,
            searchEngine: QueryType.AUTO,
        })

        const member = interaction.member as GuildMember;

        const voiceChannelMember = member.voice.channel;
        const voiceChannelBot = (await interaction.guild.members.fetchMe()).voice.channel;

        if (!voiceChannelMember) {
            await interaction.editReply('You must be in a voice channel to use this command');
            return; 
        }

        if (voiceChannelBot && voiceChannelBot.id !== voiceChannelMember.id) {
            await interaction.editReply('I am already in another voice channel');
            return;
        }

        const { track } = await player.play(voiceChannelMember, song, {
            nodeOptions: {
                metadata: {
                    channel: interaction.channel
                },
                volume: 75,
                leaveOnStop: true,
                leaveOnEmpty: true,
                leaveOnEnd: false,
                selfDeaf: true
            }
        });
        interaction.editReply(`Playing song: ${track.title}`);
    }

la mtn le bot ce co en voc mais la musique ne ce joue pas, il ya pas d'erreur ni rien :/

worthy ice
#

Salutn, tu utilise discord-player ? @normal lichen

normal lichen
worthy ice
#

Je n'ai pas regarder si sa été résolu, mais discord-player et down

#

Ok, ne prend pas en compte mon message, sa a l'air d'être revenu

normal lichen
#

Me suis arraché les cheveux pendant 1h a regarder des personnes qui ont utilisé la dépendance sûr git😂

worthy ice
#

Je sais que sa fait un moment maintenant, mais date précise je sais pas, surement début juillet

normal lichen
#

Ah oui bah non c’est pas sa alors

plush lava
normal lichen
#

le bot est admin il a le droit de parler et uil ce connect bien au vocal ...

plush lava
#

si tu log track dans ta console il t'affiche quoi?

#

sinon tu as vérifié que tu as bien toutes les dépendances requises ?

mighty fossil
#

Bonjour, j'ai un petit soucis sur mon bot discord
Cela me fait cette erreur assez souvent. Dès fois, ça fonctionne normalement et d'autres fois l'erreur est là.
J'utilise une base de donnée et je pense que ça vient de là.

    at Connection._addCommandClosedState (/home/container/node_modules/mysql2/lib/connection.js:164:17)
    at Connection.query (/home/container/node_modules/mysql2/lib/connection.js:572:17)
    at Object.runInteraction (/home/container/modalsBS/createAccount.js:109:20)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
  fatal: true
}

[mainBS.js] stderr: /home/container/node_modules/discord.js/src/structures/interfaces/InteractionResponses.js:102
    if (this.deferred || this.replied) throw new DiscordjsError(ErrorCodes.InteractionAlreadyReplied);
                                             ^
Error [InteractionAlreadyReplied]: The reply to this interaction has already been sent or deferred.
    at ModalSubmitInteraction.reply (/home/container/node_modules/discord.js/src/structures/interfaces/InteractionResponses.js:102:46)
    at Object.runInteraction (/home/container/modalsBS/createAccount.js:123:25)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
  code: 'InteractionAlreadyReplied'
}
Node.js v20.17.0

[mainBS.js] child process exited with code 1```
plush lava
#

la première erreur vient en effet du module que tu utilise pour la base de donnée. Il te dit en gros que tu ne peux pas faire ta requête si la connection à la base de donnée est fermée. Il faut ouvrir cette connexion, faire ta requête puis la fermer. Les autres requêtes qui passerons après la fermeture du coup auront cette erreur.

La deuxième erreur vient de ton interaction. Cela indique que tu as déjà répondu à l'intéraction et que ton code a exécuté interaction.reply() au lieu de interaction.editReply()

mighty fossil
plush lava
#

je suppose en lisant la doc

#

ou alors tu n'as pas configuré tes paramètres de connexion correctement

mighty fossil
#

ourtant en localhost c'est nickel mais dès que je passe sur de l'héberger ça bug

mild galleon
#

Bonjour je recherche quelqu'un qui peut m apprendre les base de discord.js

misty parcel
#

Hey ! J'ai un soucis avec le grid en css : J'ai 4 divs et je veux faire en sorte que 3 d'entre elles soient ç gauche et 1 sois à droite, mais je n'y arrive pas trop, j'ai essayer de bidouiller un truc avec grid-template-columns et grid-template-rows mais ça n'a pas trop l'air de marcher 🤔 J'ai mis des bordules et une couleur de fond pour qu'on puisse mieux voir : Il y à deux div à gauche et deux à droite :(

sinful flicker
# misty parcel Hey ! J'ai un soucis avec le grid en css : J'ai 4 divs et je veux faire en sorte...

Rien de tel qu'un ptit coup de gpt xD

j'erpere que ca réponds a ton problème 😉

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Grille de 4 div</title>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="grid-container">
        <div class="item">Div 1</div>
        <div class="item">Div 2</div>
        <div class="item">Div 3</div>
        <div class="item right">Div 4</div>
    </div>
</body>
</html>

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

body {
    font-family: Arial, sans-serif;
}

.grid-container {
    display: grid;
    grid-template-columns: 1fr 1fr; /* Deux colonnes : une large pour les 3 premières div, une pour la dernière */
    gap: 10px;
    max-width: 800px;
    margin: 0 auto;
    padding: 20px;
}

.item {
    padding: 20px;
    background-color: #f4f4f4;
    border: 1px solid #ccc;
    text-align: center;
}

.grid-container .item:nth-child(-n+3) {
    grid-column: 1; /* Les 3 premières div sur la première colonne */
}

.grid-container .right {
    grid-column: 2; /* La dernière div sur la deuxième colonne (droite) */
    grid-row: 1 / span 3; /* Occupe toute la hauteur (3 lignes) */
}

sinful flicker
mild galleon
#

J ai suivie la doc j ai eu des erreur

sinful flicker
#

c'est surement que tu as louppé quelque chose 😉

#

quel genre d'erreurs ?

gleaming verge
#

Bonjour à tous,
Je travaille sur un projet et j'ai du mal à trouver une solution.
Mon projet est de faire une animation de feuilletage d'une page d'un livre sur un Timer (flip timer).
Pour tester mon animation, je l'ai testé sur les parties secondes.
Le problème est que l'animation n'est pas synchronisée avec le changement de seconde, donc elle tourne deux fois plus vite.
Voici mon code : https://codepen.io/shikamaru098/pen/ZEdvpex

hardy heron
#

Bonsoir,
Je viens demander de l'aide suite à un problème que je rencontre depuis 2-3 heures et qui me prend la tête. J'ai un bot Discord en Node.js (version Node -v v20.15.1). Ce bot a pour but d'être utile ; bien que ce ne soit pas très intéressant en soi, j'ai décidé de créer une commande /allbots pour afficher les bots présents sur le serveur. Cependant, lorsque j'essaie d'exécuter cette commande, elle peine à récupérer les membres et rencontre un timeout. Actuellement, le serveur compte plus de 5800 membres.

Console

Erreur générale : Members didn't arrive in time.```
#

Code

const { SlashCommandBuilder } = require('@discordjs/builders');
const { EmbedBuilder } = require('discord.js');

module.exports = {
    data: new SlashCommandBuilder()
        .setName('allbots')
        .setDescription('Affiche la liste des bots présents sur le serveur'),
    async execute(interaction) {
        const guild = interaction.guild;
        if (!guild) {
            console.error('La guilde est introuvable.');
            return interaction.reply({ content: 'La guilde est introuvable.', ephemeral: true });
        }

        console.log('Début de la récupération des membres...');

        await interaction.deferReply();

        try {
            let members = [];
            let lastMemberId = null;
            let fetchedMembers;
            const batchSize = 100;

            while (true) {
                fetchedMembers = await guild.members.fetch({ limit: batchSize, after: lastMemberId });
                if (fetchedMembers.size === 0) break;

                members.push(...fetchedMembers.values());
                lastMemberId = fetchedMembers.last().id;

                console.log(`Nombre de membres récupérés : ${members.length}`);

                if (fetchedMembers.size < batchSize) break;
            }

            console.log(`Nombre total de membres récupérés : ${members.length}`);

            const bots = members.filter(member => member.user.bot);
#
            const embed = new EmbedBuilder()
                .setColor('#00ff00')
                .setTitle('Liste des Bots')
                .setDescription(bots.length > 0 ? bots.map(bot => `• ${bot.user.tag}`).join('\n') : 'Aucun bot trouvé.')
                .setTimestamp();

            await interaction.editReply({ embeds: [embed] });
            console.log('Réponse envoyée avec succès.');

        } catch (error) {
            console.error(`Erreur générale : ${error.message}`);
            if (!interaction.replied) {
                await interaction.editReply({ content: 'Une erreur est survenue lors de la récupération des bots.', ephemeral: true });
            }
        }
    },
};
steep gulch
#

Bonjour, est ce que quelqu'un connait une méthode pour faire en sorte que quelqu'un soit dans un input par défaut qu'il n'ai pas besoins de cliqué dessus et qu'il soit déja dedans pour écrire

steep gulch
#

Yes j'ai trouvée mais merci quand même

queen ocean
analog yew
#

hello

#

une idée de comment résoudre ce problème ? :

analog yew
#

et celui-là ? :

keen narwhal
analog yew
#

img1 ?

#

(gauche)

keen narwhal
analog yew
#

je sais pas je débute en reactJs j'ai juste fait un tuto

#

il faudrait faire comment le binding ?

keen narwhal
#

Il l'explique dans n'importe quel tuto que tu pourrais suivre, lui dire de prend une certaine id pour rentrer les compoosant React

analog yew
#

ok

#

je regarderai plus tard, merci 👍

empty mauve
#

slt, j'ai une commande help qui affiche les commande en utilisant fs, mais je voudrais que les commande s'affiche comme ceci : </ fight:1048044253051371582> mais dans mon code, je ne récupère pas les id et jsp comment faire, quelqu'un serais comment faire ?

voici mon code actuel:

keen narwhal
#

Pourquoi tu t'embête a faire un fs ? Sachant que tu donne déjà toutes tes command quand tu lance ton bot, tu n'a qu'à les parcourir

mighty fossil
#

Bonjour, j'ai toujours une erreur qui m'embête avec mon bot et sa base de donnée. En local tout fonctionne à merveille mais quand je passe sur la base de donnée de mon hébergeur cela ne fonctionne jamais alors que je suis pourtant bien connecté dessus.

Voici les erreurs que cela m'affiche au fil du temps :

Error: Can't add new command when connection is in closed state
    at Connection._addCommandClosedState (/home/container/node_modules/mysql2/lib/connection.js:164:17)
    at Connection.query (/home/container/node_modules/mysql2/lib/connection.js:572:17)
    at Object.run (/home/container/CommandesBS/addpromo.js:74:12)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
Emitted 'error' event on Connection instance at:
    at Connection._addCommandClosedState (/home/container/node_modules/mysql2/lib/connection.js:171:12)
    at Connection.query (/home/container/node_modules/mysql2/lib/connection.js:572:17)
    at Object.run (/home/container/CommandesBS/addpromo.js:74:12)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
  fatal: true
}```

De plus, je tiens à préciser que quand j'ajoute une ligne à la table, celle ci ne s'ajoute jamais à la table pourtant mon code MySQL est bon d'après mes cours.

Merci de votre aide.
keen narwhal
#

L'erreur que tu rencontres semble indiquer que la connexion à la base de données est fermée ou a été interrompue au moment où tu essaies d'exécuter une requête. Cela pourrait provenir de plusieurs causes

#

Pourrais tu donner avec des entrées custom ton fichier qui permet de connecter ton bot a ta base de données

#

Cependant j'ai une alternative que es bcp plus simple, surtout quand tu changes d'os quand tu travailles sur un projet pour faire t'es action database : Prisma

empty mauve
keen narwhal
#

Je te fais ça après

empty mauve
keen narwhal
#

Tu a cette commande : client.application?.commands.cache.values() qu ite permet de recupere toutes les commande application

#

Je te fas un code plus explisite

#

@empty mauve

#

Tu a toute les info de la command dedans

keen narwhal
#
run: async (client, interaction) => {
        await interaction.deferReply();
        const embed = new EmbedBuilder()
            .setTitle('Liste des commandes')
            .setColor('#3498db')
            .setFooter({ text: `Demandé par ${interaction.user.tag}`, iconURL: interaction.user.displayAvatarURL() })
            .setTimestamp();

        for (const command of client.application?.commands.cache.values() ?? []) {
            embed.addFields({
                name: `</${command.name}:${command.id}>`,
                value: command.description ?? 'Pas de description'
            });
        }
        await interaction.followUp({ embeds: [embed] });
    }
#

Ce qui te donne donc

empty mauve
#

ok mercii

keen narwhal
#

Avec plaisir

hearty ridge
#

Salut je fais un bot discord qui est connecté à chatgpt et j'ai une erreur que je comprend pas

  at async BurstHandler.runRequest (/home/user/puants-bot/node_modules/@discordjs/rest/dist/index.js:831:23)
    at async _REST.request (/home/user/puants-bot/node_modules/@discordjs/rest/dist/index.js:1272:22)
    at async ChatInputCommandInteraction.reply (/home/user/puants-bot/node_modules/discord.js/src/structures/interfaces/InteractionResponses.js:115:5)
    at async Object.execute (/home/user/puants-bot/commands/ask.js:122:21)
    at async Client.<anonymous> (/home/user/puants-bot/index.js:31:9) {
  requestBody: { files: [], json: { type: 4, data: [Object] } },
  rawError: {
    message: 'Interaction has already been acknowledged.',
    code: 40060
  },
  code: 40060,
  status: 400,
  method: 'POST',
  url: 'https://discord.com/api/v10/interactions/1285268693785514067/aW50ZXJhY3Rpb246MTI4NTI2ODY5Mzc4NTUxNDA2NzpoVVR1RTFPVTI4dnB2d2JNdElNdlNsQTk5NnZ6cXB6dEJsbGd1bVV5M2xYQ0lXVDRwS3RGcm1lNlFKalAzVE9Bb0FvNTVWd0Zuc213aE85b1I0ZkZpQlp5cXhGODFSUXZmeWEyZTJWVkZ2NkZRRzEzRnVYQlVEZ1V5MzhTTVlyYQ/callback'
}
keen narwhal
#

message: 'Interaction has already been acknowledged.',
Veux dire qu'une intance du bot et deja en court

#

Tu lance 2x ton interaction en gros

#

Vérifie bien que ton bot et pas lancer 2x

#

@hearty ridge

hearty ridge
#

Ah top parce que je ne sais pas où il est lancé mais je confirme qu'il est lancé car même avec tout éteind il est toujours allumé

keen narwhal
#

Regarde dans ton gestionnaire de tache et tu reherche si NodeJs a une instance de lancer

#

Si oui tu a juste a cliquer droit fin de taches

hearty ridge
#

enfaite je testé google idx pour dev donc c'est un ide 100% dans le cloud

#

je vais reset le token je pense

keen narwhal
#

Ah, oui xD

#

Ps quand tu partage du code apres les 3e premier ''', tu peux metter ts, ou js, pour q'uil comprenne quu'il doit l'interpreter

hearty ridge
#

c'est bon

#

mais enfaite mon code est trop long pour discord donc il créé un fichier txt

keen narwhal
#

ah d'accord, je voit

#

ça a résolu le soucis de reset le token ?

hearty ridge
#

ouais

#

parfait

keen narwhal
#

Au moins tu saura pour les prochaines fois

hearty ridge
#

ouais parce que ça fait genre 1h que je suis dessus

empty mauve
#

slt, quelqun aurai une commande pour unregistre des commandes ? (car quand je fait une commande avec guild.delete rien ne marche)

keen narwhal
#

Hein ?

mighty fossil
#

J'ai repris toutes les infos correctement donné lors de la création de la base de donnée sur l'hébergeur mais ça ne fonctionne que pour certaines tables et seulement que pour la création de la première ligne. Je n'y comprend rien perso.

keen narwhal
#

@mighty fossil par hasard , ton noyau local et bien MySQL, mais vérifue que ton noyau sur ta machine soit aussi MySQL et pas Mariadb

mighty fossil
#

je viens de regarder ma base de donnée en local et le serveur a l'air similaire

keen narwhal
#

Tu coups tu n'est pas sur mysql2 sur ton serveur tu es sur Mariadb ^^

#

Oui je sais que debian / Ubuntu l'orm c'est chiant

#

J'ai déjà eu ce souci a l'époque

#

Bien que MariaDB soit compatible avec MySQL dans la plupart des cas, certains comportements ou versions peuvent causer des erreurs. Si tu rencontres des problèmes, tu peux essayer de spécifier le dialecte MariaDB explicitement en utilisant le package mariadb à la place de mysql2.

hearty ridge
#

Petite question est-ce qu'il est possible de changer/supprimer/ajouter des images à un thread dans un channel forum

mighty fossil
keen narwhal
#

Pas tous a fait

#

Y'a des typage qui ne passe pas, d'où t'es erreur de requêtes

#

MySQL n'est pas Mariadb même si c'est similaire

mighty fossil
#

mais avec le module mariadb c'est le même fonctionnement niveau code ou faut tout que je revois ?

keen narwhal
#

Ah y'a des petit changement

#

Mais les requêtes SQL reste les même

mighty fossil
#

un peu chiant XD

#

de ce que je vois sur la doc mariadb, j'ai pas besoin de modifier le code juste de mettre le module mariadb en require. Mais bon faut faire ça sur chaque fichier XD

keen narwhal
#

Pour sa pour tt t'es futur projet utile des truc comme Prisma / docker pour t'es import de dev a t'es prod sur serveur ta aucun soucis

mighty fossil
#

je connais pas du tout XD

#

ça y est je suis perdu XD
J'ai tenté d'installer mariadb sur les fichiers package-lock.json et package.json mais ça ne fonctionne pas et comme j'ai plusieurs bot dessus. Chaque bot a ses package mais là quand je lance le serveur, ça me créé des nouveaux package et je ne crois pas qu'ils sont assignés au bot que je veux du coup.

mighty fossil
keen narwhal
#

Je ne sait pas comment ton code et organiser, moi dans moi mes base de données je les initialise avant

mighty fossil
#

je suis en handler

#

je me connecte à la base de donnée avec le mot de passe user etc
et ensuite dans le ready.js pour dire que le bot est connecté. Il y a une connexion avec la base de donnée.

#

après dans chaque fichier de commande, c'est juste un require et un db dans le async

keen narwhal
#

Bha tu a deja une connection pourquoi en refaire une autre et ses quoi ton erreur

mighty fossil
#
      throw er; // Unhandled 'error' event
      ^
TypeError: bot.db.connect is not a function
    at module.exports (/home/container/EventsBS/ready.js:7:12)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
Emitted 'error' event on Client instance at:
    at emitUnhandledRejectionOrErr (node:events:394:10)
    at process.processTicksAndRejections (node:internal/process/task_queues:84:21)
Node.js v19.9.0```
mighty fossil
#

le load database suffit donc

#

juste ça dans le ready.js ça suffit aussi du coup ?

keen narwhal
#

ui loadDatabase suffit, une fois connecter tu y es

#

Bah non pas dans le ready ça

#

Mais quand tu initialise ton bot

#

Pas quand il es ready

mighty fossil
#

initialisation c'est dans main.js du coup ?

keen narwhal
#

oui

mighty fossil
#

en tout cas ça fonctionne XD

keen narwhal
#

Mais apres ta plus besoin de faire de bot.db.coonect, vue que bot.db et deja connecter a ta db

mighty fossil
#

oki super merci beaucoup

#

c'est génial ça fonctionne ! !

keen narwhal
#

Tu a tt compris au moins ?

mighty fossil
#

Me semble que oui

keen narwhal
#

TEmps mieux alors 🙂

mighty fossil
#

mais j'ai une nouvelle erreur que là par contre je ne comprend pas XD

keen narwhal
#

Passe privée si tu veux je t'aide

#

ou ici comme tu veux

mighty fossil
#

okii merci

mighty fossil
pure tiger
finite glade
#

Bonjour, j'aimerai de l'aide pour crée des listes avec des touche pour changer de page si possible ( pour crée un inventaire )

plush anchor
finite glade
#

non un bot discord

#

car pour résumé on as un inventaire de personnage

#

mais je suis arrivé au maximum, résultat il me faudrait des pages car bas sur discord il y a des caractères maximum

keen narwhal
#

Tu a déjà essayer des choses ?

finite glade
keen narwhal
#

Bah essaie et ton guidera sera plus simple

finite glade
#

wep merci

gritty slate
#

Bonjour, je suis étudiante en BUT MMI spécialisation création numérique je fais autant d'audiovisuel que d'infographie mais malheureusement pour moi j'ai des cours de dev web, étant très nul je n'y arrive pas du tout. J'ai tout essayé mais je ne comprends vraiment rien, mes connaissances s'arrêtent en HTML ET CSS. Malgré Chat GPT je n'arrive pas, étant désespérée je me permets de vous demander de l'aide ne serait-ce que pour la première partie. Merci d'avance

keen narwhal
#

Un truc somme ça ?

#

Ou comme ça

gritty slate
#

Le premier et avec js je dois pouvoir ajouter "des parts" et aussi faut que les parts soit en triangle xD

keen narwhal
#

Comment ça ?

#

J'avoue que le truc chiant c'est le calcul

gritty slate
#

tout est chiant je comprends rien ahah

keen narwhal
#

J'avoue j'ai passer 30 min a faire ça mdrr
M ${innerRadius * Math.cos(startAngle)} ${innerRadius * Math.sin(startAngle)},
L ${outerRadius * Math.cos(startAngle)} ${outerRadius * Math.sin(startAngle)},
A ${outerRadius} ${outerRadius} 0 0 1 ${outerRadius * Math.cos(endAngle)} ${outerRadius * Math.sin(endAngle)},
L ${innerRadius * Math.cos(endAngle)} ${innerRadius * Math.sin(endAngle)},
A ${innerRadius} ${innerRadius} 0 0 0 ${innerRadius * Math.cos(startAngle)} ${innerRadius * Math.sin(startAngle)},
"Z"

slim wren
#

@keen narwhal fait lui pas son devoir non plus ^^

gritty slate
slim wren
#

si on te fait ton devoir comment tu vas apprendre 🙂

gritty slate
#

Honnêtement je veux pas apprendre, ca ne m'interresse pas juste mon professeur ne m'apprécie pas alors que je veux pas me faire disputer pcq j'y arrive pas

gritty slate
slim wren
keen narwhal
#

Ta tous le code au dessus, xD Apres le triangle tu te débrouille

gritty slate
gritty slate
keen narwhal
#

Je t'es fais un exemple complexe donc ta juste a essayer de comprendre pour en faire ton triangle

floral bolt
#

Quand tu es en école tu es sensé apprendre avant de faire non ? Le fait de demander un coup de main c’est bien, mais, on est pas là pour faire t’es devoirs :/

keen narwhal
gritty slate
gritty slate
vale birch
#

Fallait se reseigner sur ton BUT c'est écrit clairement qu'il y aura du dev web

gritty slate
vale birch
#

Tu aura du Dev pendant les 3 ans, c'est dans le programme..

keen narwhal
gritty slate
tough blaze
#

qqn est chaud avec socket et à du temps à perdre ?

keen narwhal
#

Comment ça ? @tough blaze

meager linden
gritty slate
honest maple
#

hello j'ai un problème avec mon projet next js

#

j'ai cette erreur : Error: Unsupported Server Component type: {...}

mon-projet/
├── src/
│ ├── app/
│ │ ├── about/
│ │ ├── contact/
│ │ ├── favicon.ico
│ │ ├── globals.css
│ │ ├── layout.tsx
│ │ └── page.tsx
│ └── components/
│ ├── Footer.tsx
│ └── Header.tsx
├── package.json
├── tailwind.config.ts
└── tsconfig.json

#

je ne sais pas d'ou ça vient j'ai essayé plein de truc

keen narwhal
#

Tu load un 'use server' ou il ne faux pas

finite glade
#

bonjour j'ai un gros soucis mon bot se met a crash depuis aujourd'hui je comprend pas pourquoi merci

cursive sail
#

Y'a une erreur dans ta commande

analog yew
#

Bjr excusez-moi j'ai un soucis :
mon programme angular compile
mais à l'exécution il n'affiche pas du tout le contenu de la page AppComponent
alors que son selector est présent parmi les balises html

//App.component.html
<h1>

hello, it's me

</h1>
#
///app.module.ts 

/*
généré manuellement + baeldung
+ moi
*/

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app/app-routing.module';
import { FormsModule } from '@angular/forms';
import { HttpClientModule } from '@angular/common/http';
import { AppComponent } from './app/app.component';
import { UserListComponent } from './user/user_list/user-list.component';
import { UserFormComponent } from './user/user_form/user-form.component';
import { UserService } from './user/user_service/user-service.service';
import {RouterModule} from '@angular/router';

@NgModule({
  imports: [
      BrowserModule,
      AppRoutingModule,
      HttpClientModule,
      FormsModule
    ],

  declarations: [
    AppComponent,
    UserListComponent,
    UserFormComponent,
  ],

  providers: [UserService],
  bootstrap: [AppComponent]
})
export class AppModule { }

#

//module.ts
import { bootstrapApplication } from '@angular/platform-browser';
import { appConfig } from './app/app.config';
import { AppComponent } from './app/app.component';
import {AppModule} from './app.module';
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
import {enableProdMode} from '@angular/core';

bootstrapApplication(AppComponent, appConfig)
  .catch((err) => console.error(err));
keen narwhal
#

Je check

analog yew
#
//index.html

<html>
<head>
 <!-- <meta charset="utf-8">-->
  <title>Spring Boot X Angular Application</title>
  <!--<base href="/">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
  <link rel="stylesheet"
        href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"
        integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm"
        crossorigin="anonymous">

  <link
    rel="stylesheet"
    href="https://cdn.jsdelivr.net/npm/bulma@1.0.2/css/bulma.min.css"
    integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm"
    crossorigin="anonymous"
  -->

</head>

<body>
GGG abc
<app-root></app-root>
</body>

</html>
analog yew
#

pcq je n'ai pas toutes les notifications du discord

#
//App.component.ts
/*import { Component } from '@angular/core';
import { RouterOutlet } from '@angular/router';

@Component({
  selector: 'app-root',
  standalone: true,
  imports: [RouterOutlet],
  templateUrl: './app.component.html',
  styleUrl: './app.component.scss'
})
export class AppComponent {
  title = 'angularclient';
}
deprecated
*/

import { Component, OnInit,Input } from '@angular/core';
/*import { Routes, RouterModule } from '@angular/router';
import { AppRoutingModule } from './app-routing.module'
*/

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent {

  title: string;

  constructor() {
    this.title = 'Spring Boot feat. Angular Application';
  }
}
keen narwhal
#

J'allait te le demander ce fichier xD

#

Essaie en commentant styleUrl

#

Rassure moi tu a bien fais t'es routes ?

#

Envoie le app-routing

analog yew
analog yew
keen narwhal
#

Pourquoi ton app-routing est commenter

#

Bah oui tu commente ton système de routing

#

Donc il ne veux pas chercher ta page logique

analog yew
#

Hummm

#

J'avais eu des soucis à la compilation à un moment donc j'essayais de le résoudre en commentant lles parties qui pouvaient poser problème

#

Je ne maîtrise pas le système de routting, je suivais un tuto

#

Je peux décommenter pour voir

keen narwhal
#

Non non tu n'es pas obligé de faire du routing en soit pour un composant donc tu a une erreur ailleurs

#

Je check w sur phone pas facile xD

#

Dans ta console navigateur ta une erreur ?

analog yew
#

C'est le standalone qui était désactivé qui posait problème visiblement

#

Là ça m'a affiché mon msg

#

Merci bcp pour ton aide 🙂

keen narwhal
#

Dans ton app module aussi vue tu utilise pas le routage enlève tous t'es import

#

Ah parfait alors

analog yew
keen narwhal
#

Oui parce que sandalone sa vas macher, mais c'est un peu forcer le truc

analog yew
#

car ça semblait avoir ses limites

#

en fait il fallait

#

écrire :

//main.ts

platformBrowserDynamic().bootstrapModule(AppModule)
#

et pas :

#
bootstrapApplication.(AppComponent, appConfig)
  .catch((err) => console.error(err));*/
pure tiger
silent quiver
#

salut,

interface TransitionConfigFrom {
    x?: number;
    y?: number;
    opacity?: number;
}

interface TransitionConfig<T extends TransitionConfigFrom> {
    from: T;
    to: Required<T>;
    duration: number;
}

Es qu'il est possible de faire en sorte que si from.x est defini, TS comprend que to.x est forcément défini. Actuellement il me dit que to.x est potentiellement undefined

noble mountain
#

Normalement avec un type auxiliaire qui va conditionnellement définir les champs de to en fonction de la présence des champs dans from si je me trompe pas

silent quiver
#

J'ai essayé avec des types conditionnels mais je n'ai pas réussi. Du coup je fais comme ça car finalement ça ne m'apporte pas grand-chose.

from.x !== undefined ? from.x + (to.x! - from.x) * progress : 0
noble mountain
#

C'est plus pragmatique x)

silent quiver
#

pragmatique, oui ça l'est :)

oak turret
#

hello, quelqu'un a déjà utilisé les .env dans une app electron ? ça marche nickel en local, mais dès que l'app est build le .env n'existe plus on dirait, quelqu'un sait pourquoi ?

keen narwhal
keen narwhal
oak turret
#

Je n'ai pas webpack, et oui du coup il l'est pas, mais ça veut dire que je devrais le foutre dans le build

keen narwhal
#

Mais je t'es envoyer un packagé qui vas mettre des info env

#

Alors non

oak turret
#

J'ai pas webpack

keen narwhal
#

Tu peux mettre t'es info dans un json alors si tu veux les avoir

#

Ou en variable d'environnement windows

noble mountain
#

Bonjour,

Je suis en train de dév mon bot discord et je suis au menu déroulant pour la sélection des rôles. Le menu déroulant apparaît dans le channel qu'on a définit dans ma commande /setup et pareil pour les rôles que les utilisateurs peuvent s'octroyer. Tout ça est enregistré dans ma base de donnée.

J'ai un petit soucis, mes rôles sont affichés avec l'id (ce que je ne veux pas et que j'essaie de corriger) et quand je suis choisis un rôle, j'ai ce message d'erreur. J'ai beau mettre des logs d'erreurs, je n'ai pas de retour...

Ce bout de code c'est l'initialisation de mon embed.

    const embed = new EmbedBuilder()
      .setTitle('🎭 Menu de sélection de rôle.')
      .setDescription('Veuillez sélectionner les rôles qui vous intéressent dans la liste.')
      .setColor('#00FF00')
      .setTimestamp();
    
    const selectMenu = new StringSelectMenuBuilder()
    .setCustomId('select_roles')
    .setPlaceholder('Aucun rôle sélectionné.')
    .setMinValues(0)
    .setMaxValues(rolesArray.length)
    .addOptions(rolesArray.map(roleId => {
      const role = interaction.guild.roles.cache.get(roleId);
      return {
          label: role ? role.name : `Rôle ${roleId}`,
          description: `Mention - ${role ? role.name : roleId}`, 
          value: roleId
      };
    }));

Ce bout de code c'est pendant le setup des rôles dans la base de donnée :

  case 'roles':
    // Configuration des rôles pour le menu de sélection et le canal d'envoi
    const roles = interaction.options.getString('roles');
    const rolesArray = roles.split(',').map(role => role.trim());
    const roleChannel = interaction.options.getChannel('channel');
  
    // Enregistrer les rôles et le canal dans la base de données
    await connection.query(
        `INSERT INTO guild_settings (guild_id, roles, role_channel_id) 
        VALUES (?, ?, ?) 
        ON DUPLICATE KEY UPDATE roles = ?, role_channel_id = ?`,
        [guildId, JSON.stringify(rolesArray), roleChannel.id, JSON.stringify(rolesArray), roleChannel.id]
    );
  
    await interaction.editReply(`Les rôles ont été configurés avec succès dans le canal : ${roleChannel.name}`);
queen ocean
noble mountain
#

.

noble mountain
#

C'est les bons ID j'ai vérifié

queen ocean
#

tu dois save en DB sans <@& et >

#

#php

noble mountain
queen ocean
# noble mountain Je modifie ça, merci 🙂

C'est un bot juste pour toi ou public ?
Si c'est publique jte recommande de passer par le RoleSelectMenuBuilder pour permettre aux gens de sélectionner les roles qu'ils veulent config

#

Et comme ca tu recois direct un array d'ids

noble mountain
noble mountain
queen ocean
noble mountain
#

Mon bot a les perms admin + au dessus de tout le monde

#

Mais "Missing Permissions"

#

🤔

queen ocean
noble mountain
#

Problème réglé

noble mountain
# queen ocean pour faire quoi ?

DiscordAPIError[40060]: Interaction has already been acknowledged.

client.on('interactionCreate', async interaction => {
    if (interaction.isCommand()) {
        const command = client.commands.get(interaction.commandName);
        if (!command) return;
        try {
            await command.execute(interaction, pool, config);
        } catch (error) {
            console.error(error);
            await interaction.reply({ content: 'Une erreur est survenue lors de l\'exécution de cette commande!', ephemeral: true });
        }
    } else if (interaction.isStringSelectMenu()) {
        if (interaction.customId === 'select_roles') {
            const selectedRoles = interaction.values; 
            const member = interaction.member;

            try {
                const rolesToAdd = selectedRoles.filter(roleId => !member.roles.cache.has(roleId));

                const rolesToRemove = member.roles.cache.filter(role => !selectedRoles.includes(role.id));

                if (!interaction.deferred) {
                    await interaction.deferReply({ ephemeral: true });
                }

                if (rolesToAdd.length > 0) {
                    await member.roles.add(rolesToAdd);
                }

                if (rolesToRemove.size > 0) {
                    await member.roles.remove(rolesToRemove);
                }

                await interaction.editReply({ content: 'Vos rôles ont été mis à jour avec succès.', ephemeral: true });
            } catch (error) {
                console.error('Erreur lors de la gestion des rôles :', error);
                if (interaction.deferred) {
                    await interaction.editReply({ content: 'Une erreur est survenue lors de l\'attribution des rôles.', ephemeral: true });
                } else {
                    await interaction.reply({ content: 'Une erreur est survenue lors de l\'attribution des rôles.', ephemeral: true });
                }
            }
        }
    }
});

Je comprends pas trop la, pourtant je diffère bien l'interaction, non ?

queen ocean
#

Et tu devrais éviter de gérer tes interactions comme ca

noble mountain
#

ça a l'air magique tiens merci !

proven stone
#

Bonjour à tous,

J'ai un soucis, je developpe une application mobile avec expo go, j'ai exporté un apk tout ca et maintenant une fois l'apk installé, l'app ne se lance pas et crash direct. J'ai des erreurs dans les logs de l'emulateur android studio, mais je n'arrive pas a la résoudre malgré plusieurs essaies.

Voici mes erreurs :

E  TypeError: undefined is not an object (evaluating 'h.View.propTypes.style')

 E  FATAL EXCEPTION: mqt_native_modules
 E  Invariant Violation: "main" has not been registered. This can happen if:

Si quelqu'un peu m'aider ca serait top merci bcp.

(n'hesitez pas a me ping je suis en ne pas déranger sur discord donc pas de notif! 🙂 )

noble mountain
#

ça existe encore propTypes dans React ?

#

Si je me trompe pas c'est obsolète maintenant, c'est dans les anciennes versions

proven stone
#

Le problème c'est que je ne trouve pas de proptypes je n'ai pas utilisé ca

#

a moins c'est dans un node modules

#

franchement je sais pas dutout

noble mountain
#

fait un grep -r "propTypes" ./node_modules

#

@proven stone

proven stone
#

yep je test

#

effectivement c'est bien dans des node modules

noble mountain
#

Pour ton Invariant Violation, c'est juste que t'as pas mis dans ton fichier principal la ligne qui enregistre ton composant principal

noble mountain
#

c'est tout ce que je peux te dire

#

Ou voir si y'a des versions récentes

#

De tout update

proven stone
#
node_modules/expo/AppEntry.js

import registerRootComponent from 'expo/build/launch/registerRootComponent';

import App from '../../App';

registerRootComponent(App);

package.json 

  "main": "./index.js",

index.js

import { AppRegistry } from 'react-native';
import App from './App'; 
import { name as appName } from './app.json';


AppRegistry.registerComponent(appName, () => App);
noble mountain
#

Fait voir l'architecture de ton projet

#

Je pense que c'est un conflit à ce stade

#

@proven stone

proven stone
noble mountain
#

Juste voir les dossiers et fichiers que tu as dans ton projet

proven stone
noble mountain
#

Mmhhh

#

J'suis débile

proven stone
#

ptdrr mais grave pas

#

prk tu dis ca

noble mountain
#

Non j'ai mis un truc que j'ai supprimé qui était bête

proven stone
#

ahhh okk

noble mountain
#

Je pense essaie de faire un rm -rf ./node_modules

#

et de réinstaller tes modules

#

@proven stone

proven stone
#

Je peux essayer, mais vu que j'ai modifier des choses dedans j'ai peu sa plante tout

noble mountain
#

😮

#

Ne jamais faire ça par contre hein

proven stone
#

ptdrrr enft j'suis fou ca marche déjà pas de tt manière

proven stone
#

fallait modifier un truc pr que ca fonctionne mais j'men souvient plus :c

noble mountain
#

Comment ça ?

proven stone
#

franchement je serais même pas t'expliquer

#

ah attends

#

import { ViewPropTypes } from 'deprecated-react-native-prop-types';

#

fallait remplacer le proptypes de base par ca

#

par exemple la j'ai modifier ca depuis Carousel.js

noble mountain
#

Oui parce que c'est déprécié

#

les propTypes c'est fini dans React depuis un moment

proven stone
#

mais dcp si je suppr les node modules

#

va falloir que j'me les retappes a la mains

#

problème

#

j'me rappeler plus de tous

noble mountain
#

Mais pourquoi t'en a absolument besoin ?

proven stone
noble mountain
#

Tu les supprimes des node modules 200iq

proven stone
#

Mais j'en ai besoin ?

#

j'me sert d'un carousel dans l'app avec react-native-snap-carousel

#

par exemple

noble mountain
#

Bah faut passer par autre chose

#

Mauvaise idée d'utiliser quelque chose qui est laissé à l'abandon depuis un moment

proven stone
#

c'est pas faux

noble mountain
#

Fin c'est pas déprécié en tant que tel

#

Juste que ça a été séparé de React, c'est devenu un package à lui tout seul

#

prop-types

#

Mais vachement moins utilisé vu qu'il y a typescript

proven stone
#

Après j'ai tjr mon problème de fichier d'entrée

noble mountain
proven stone
#

c'est a dire ?

#

si c'est juste est ce que la fonction app est bien exporté c'est oui

#

J'en ai parlé avec un pote

#

et il m'a dit crée un index.js et ajout y ca

import { AppRegistry } from 'react-native';
import App from './App';
import { name as appName } from './app.json';

AppRegistry.registerComponent(appName, () => App);

floral bolt
#

Tu essayes de dev un projet nextjs ?

keen narwhal
floral bolt
#

J’ai pas regarder le messages

#

Mais je viens de voir RN

#

Petit résumé de ton problèmes ?

proven stone
proven stone
# floral bolt Petit résumé de ton problèmes ?

En gros j'ai fnis mes maquettages et quelques fonctionnalités donc je veux tester l'appli en apk, l'apk s'exporte bien avec expo et quand je l'install tout ca et après avoir lancé l'app elle crash direct avec des erreurs en console.

floral bolt
#

Envois t’es erreurs je regarderais quand j’ai 5 minutes

proven stone
#

yes j'essaie de les trouver

#
E  TypeError: undefined is not an object (evaluating 'h.View.propTypes.style')

 E  FATAL EXCEPTION: mqt_native_modules
 E  Invariant Violation: "main" has not been registered. This can happen if:

Je les retrouves pas toutes mais dans l'idée c'est ca comme erreurs

glacial oxide
#

Hello
J ai un leger probleme: je n arrive pas à modifier le plus haut role de mon serveur, pourtant je suis le proprio et sinon les autres c est que des bots

#

Svp aidez moi 😭😭😭

rugged grail
#
    at handleErrors (C:\Users\liveweb\Desktop\DynaBot\node_modules\@discordjs\rest\dist\index.js:727:13)
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
    at async BurstHandler.runRequest (C:\Users\liveweb\Desktop\DynaBot\node_modules\@discordjs\rest\dist\index.js:831:23)
    at async _REST.request (C:\Users\liveweb\Desktop\DynaBot\node_modules\@discordjs\rest\dist\index.js:1272:22)
    at async ChatInputCommandInteraction.deferReply (C:\Users\liveweb\Desktop\DynaBot\node_modules\discord.js\src\structures\interfaces\InteractionResponses.js:72:5)
    at async Object.execute (C:\Users\liveweb\Desktop\DynaBot\commands\drop.js:22:9)
    at async Client.<anonymous> (C:\Users\liveweb\Desktop\DynaBot\index.js:83:13) {
  requestBody: { files: undefined, json: { type: 5, data: [Object] } },
  rawError: { message: 'Unknown interaction', code: 10062 },
  code: 10062,
  status: 404,
  method: 'POST',
  url: 'https://discord.com/api/v10/interactions/1295023683114373233/aW50ZXJhY3Rpb246MTI5NTAyMzY4MzExNDM3MzIzMzpDNWhYRHlVQTNtMkM5Znd3eW5ZSmlTeTJzNWUwRzUxZlMzeVJla3ZsaVNWTHdSd1doVXl4QkZrV1ZXQ25vU0oyT2M2V3RtUWhMWFRpeXJOTEpaaVphT2tVVlk1OE5hMVdQZUk3V0x0NldXczBJWnRyRWQzdGw5a1h4c2RkOVVNRw/callback'
}```
idle sentinel
rugged grail
#

Ah j'ouvre powershell dans vscode et ja tape drop ou....

idle sentinel
#

tu envoies ici ton code

rugged grail
#

Mais pas mtn car je vient de sortir de chez moi

idle sentinel
#

pas de soucis

rugged grail
# idle sentinel pas de soucis
const { SlashCommandBuilder, ButtonBuilder, ActionRowBuilder, ButtonStyle, EmbedBuilder } = require('discord.js');
const db = require('../database');

module.exports = {
    data: new SlashCommandBuilder()
        .setName('drop')
        .setDescription('Drop XP for a user')
        .addIntegerOption(option =>
            option.setName('xp')
                  .setDescription('Amount of XP to give')
                  .setRequired(true)),
    
    async execute(interaction) {
        if (interaction.user.id !== '790240841598763018') {
            return interaction.reply({ content: 'You do not have permission to use this command.', ephemeral: true });
        }

        const xpDropAmount = interaction.options.getInteger('xp');

        const button = new ButtonBuilder()
            .setCustomId('xp_drop_button')
            .setLabel('Claim XP')
            .setStyle(ButtonStyle.Primary);

        const row = new ActionRowBuilder().addComponents(button);

        const embed = new EmbedBuilder()
            .setTitle('XP Drop')
            .setDescription(`Click the button below to claim \`${xpDropAmount}\` XP!`)
            .setTimestamp()
            .setColor('#fff000');

        await interaction.reply({ embeds: [embed], components: [row] });


    },
};
idle sentinel
mellow sigil
#

Hello, j'essaye de récupérer le nombre de message écrit dnas une guild par un user.
J'ai essayé avec l'api mais ça me return Bots cannot use this endpoint
Une idée ?

discord.js ^14.16.3

red torrent
mellow sigil
red torrent
#

Si tu veux compter les messages tu dois compter toi même. Discord n'a pas d'endpoint pour compter à ta place

mellow sigil
red torrent
red torrent
#

Du coup :

mellow sigil
#

comment ça violer la propriété intellectuelle de discord

#

t'as craqué ton slip toi 😂

noble mountain
#

Alors kapp

red torrent
noble mountain
#

Conditions d’utilisations diffèrent que propriété intellectuelle hein au cas où

fierce grotto
#

🤣

red torrent
#

l'API client est la propriété intellectuelle et privé de discord

mellow sigil
#

ok et ?

fierce grotto
#

hormis ça

#

les bot n'ont pas accès au api user

#

d'ou l'impossibilité de passer par une API

#

mais compté des messages en 6 ligne c'est fini

red torrent
#

Bah justement il doit trouver une AUTRE solution

noble mountain
mellow sigil
#

et toi tu me répète ce que j'ai dit

red torrent
#

C'est ce que je lui ai dit dans le tout premier message

mellow sigil
red torrent
fierce grotto
noble mountain
#

tu peux mettre en place un listener d’événements dans ton bot qui écoute chaque message envoyé dans une guild, puis tu peux incrémenter un compteur pour l’utilisateur concerné chaque fois qu’un message est envoyé

mellow sigil
noble mountain
#

Nop

mellow sigil
#

c'est ce que je voulais du coup

fierce grotto
#

et sa pour le coup c'pas possible ou alors pas au courant

red torrent
#

Tu peux toujours lister tous les messages de tous les salons pour retrouver l'auteur et compter mais tu peux oublier

fierce grotto
#

MDRR

mellow sigil
#

c'est justement ce que je demandais

red torrent
#

Tu mettras des années à finir de compter avec les rate limit

mellow sigil
#

je cherchais une méthode pour faire ça

#

justement

noble mountain
#

C’est impossible

#

Tu pourras pas malheureusement

mellow sigil
keen narwhal
#

Bon max 1 ou 2 jours a récup, en fonction du nombre de message, mais largement possible

mellow sigil
dire oriole
# mellow sigil ouais mais si je dois faire ça pour chaque guild que les gens ajoutent, le bot s...
keen narwhal
ocean grail
#

ça prendra juste du temps

regal umbra
#

Salut, j'avais une question je voulais savoir je peux mettre quoi dans mon fichier ticket pour que j'ai un selectionneur avec plusieurs choix ?

keen narwhal
#

SelectMenuBuilder

regal umbra
keen narwhal
#

Comment faire pour permettre à l'utilisateur de switch en light mode s'il est en dark mode et inversement?

rugged grail
#

Pk Switch en light mod frr

noble mountain
#

Je comprends pas l'intérêt de ce message

#

ça s'appelle les goûts et les couleurs de chacun

noble mountain
tough blaze
# keen narwhal Comment faire pour permettre à l'utilisateur de switch en light mode s'il est en...

ˋˋˋ
'use client';
import { Moon, Sun } from 'lucide-react';
import { useTheme } from 'next-themes';
import { useEffect } from 'react';

const ThemeSwitcher: React.FC = () => {
const { theme, setTheme } = useTheme();

return theme === 'light' ? (
<Moon
className="fill-dark-background dark:fill-white cursor-pointer w-8 h-8 hover-bounce"
onClick={() => {
setTheme(theme === 'light' ? 'dark' : 'light');
}}
/>
) : (
<Sun
className="fill-dark-background dark:fill-white cursor-pointer w-8 h-8 hover-bounce"
onClick={() => {
setTheme(theme === 'light' ? 'dark' : 'light');
}}
/>
);
};

export default ThemeSwitcher;
ˋˋˋ

noble mountain
#

C’est rajouter des choses inutiles

keen narwhal
#

@noble mountain @tough blaze
Merci beaucoup pour votre aide!

keen narwhal
rugged grail
keen narwhal
# tough blaze ˋˋˋ 'use client'; import { Moon, Sun } from 'lucide-react'; import { useTheme } ...
"use client";

import { Button } from "./ui/Button";
import { MoonIcon, SunIcon } from "@radix-ui/react-icons";
import { useTheme } from "next-themes";

export default function ModeToggle() {
    const { setTheme, theme } = useTheme();

    return (
        <Button
            variant="ghost"
            className="w-8 h-8"
            onClick={() => setTheme(theme === "light" ? "dark" : "light")}
        >
            {theme === "light" ? <SunIcon /> : <MoonIcon />}
        </Button>
    );
}
#

La même chose mais en moins compliqué

#

👍

dire oriole
#

Yop, j'ai besoin d'un petit peu d'aide s'il vous plait,
Je suis en node.js avec typescript
J'ai une array d'objet comme cela :

[
  { hour: '00:23', value: 530 },
  { hour: '00:24', value: 546 },
  { hour: '00:25', value: 494 },
  { hour: '00:26', value: 739 },
  { hour: '00:27', value: 314 },
]

Je cherche a faire un graphique de cela, en gros sur chaque minutes/groupement de minute (horizontalement) la valeur (verticalement)
Et je veux export cela en image

OR, pour me faire chier un peu la vie, je ne veux pas d'un graphique basique avec Chart.js, je veux le rendre en mode "dessin" style ceci : https://www.jwilber.me/roughviz/ (avec le preset "bar")

Soucis c'est que je trouve aucun package qui propose d'export cela en image,
J'ai essayer convertir avec canevas et Rough.js, le résultat est vraiment pas fou,
Vous avez des idées ?

fierce grotto
dire oriole
#

Alors attention c'est un projet en nodejs mais je n'ai pas de site web, c'est juste pour faire des stats sur une api et balancer l'image dans un salon discord, d'où le soucis, tout les package propose cela en intégration html

Je peux en sois le faire avec canevas mais j'arrive pas a avoir le même résultat que sur ce site ou le résultat est vraiment propre

fierce grotto
dire oriole
#

je vois je ne connait pas sharp mais pourquoi pas essayer, puis je ne savais pas non plus que puppeteer permet de faire cela, pour moi c'est plus de la navigation sur les site web

Faut que déjà du coup j'arrive a export cela en svg avec Rough.js

fierce grotto
#

Yep, Puppeteer est surtout connu pour la navigation web, mais il peut capturer des images, donc pour des conversions de SVG complexes (avec animations ou styles particuliers), il sera plus performant que sharp. Par contre, il est plus lourd, donc moins rapide. Sharp est idéal si ton SVG est simple, sans animations ni styles particuliers.

#

Pour l'export en SVG tu peux utiliser svgdom et svgdotjs/svg.js ces deux modules te permettent de manipuler facilement le SVG en NodeJs et ils fonctionnent parfaitement avec RoughJs

dire oriole
# fierce grotto Yep, Puppeteer est surtout connu pour la navigation web, mais il peut capturer d...

Bon j'ai trouver une solution (complètement immonde) et ca fonctionne assez bien :

export async function generateStatsChart(stats: FormattedStat[]) {
    nodeHtmlToImage({
        output: "./image.png",
        html: `<script src="https://unpkg.com/rough-viz@2.0.5"></script>
<style>
    * {
      background-color: #313338;
    }

    .tick, .rough-yAxischart > path, .rough-xAxischart > path {
      color: white;
      stroke: white !important;
    }

    #chart {
    width: 100vh;
    height: 100vh;
  }
</style>

<div id="chart"></div>

<script>
    new roughViz.Bar({
  element: "#chart", // container selection
  data: { labels: ["a", "b", "c", "d"], values: [20, 16, 5, 15] },
  axisStrokeWidth: 3,
  bowing: 5,
  color: "orange",
  stroke: "white"
});
</script>`,
    }).then(() => {
        console.log("The image was created successfully!");
    });
}```

Plus qu'à faire le style un peu plus propre et ajouter les données dans le graph
fierce grotto
#

un petit avis ? (vue3 / bulma pour le fw css) première fois que j'fait un design glassmorph

#

^^ j'viens de changer le shadow du btn ctf dans l'hero en regardant mon rec il me trigger 🤣

dire oriole
novel shale
#

Bonsoir tout le monde, si il y à quelqu'un de disponible ce soir j'avoue que j'aurais bien besoin d'un peu d'aide en javascript (j'arrive même plus à réflechir dessus mdr)

fierce grotto
novel shale
# fierce grotto qu'est-ce qui t'arrive chef ?

Oh mon sauveur 😂
Bon je t'explique, en très gros résumé je suis en train de créer une plateforme étudiante, et pour l'inscription je fais un processus d'accueil avec différentes étapes.
Mais je n'arrive pas à faire la logique de mon js (pourtant très simple normalement), voila ma logique : c

  • Si l'option Collège est choisi alors :
    => Je veux afficher la selection (6ème, 5ème, 4ème, 3ème) puis lorsque l'utilisateur à selectionné entre (6ème, 5ème, 4ème, 3ème) je veux passer directement à l'étape ou l'utilisateur doit selectionner ses matières (et donc ne pas afficher l'étape de selection (Général, Pro, Techno...) (Seconde, Première, Terminale...)

  • Si l'option Lycée est choisi alors :
    => Je ne veux pas afficher l'étape ou l'utilisateur selectionne (6ème, 5ème, 4ème, 3ème) je veux directement passer à l'étape prochaine donc afficher les étapes de selection (Général, Pro, Techno...) (Seconde, Première, Terminale...)

#

Mais malheureusement ça ne fonctionne pas, c'est trop bizzare genre ça bugue énormement. Ca peut m'afficher correctement, mais en dessous ça m'affichera autre chose enfin bref n'importe quoi

fierce grotto
#

j'fini de faire le seo d'un client et j'regarde ça

fierce grotto
#

tiens dis moi si c'est ce que tu voulais

novel shale
#

Je regarde ça demain mais si ça fonctionne merci beaucoup

fierce grotto
novel shale
#

Yep je verrai demain, mais ca devrait être parfait

novel shale
#

Tu sais pourquoi ça ne fonctionnait pas mon code ?

fierce grotto
#

de mémoire y avait 3 truc qui allait pas vraiment

#

Déjà, dans tes étapes (steps), tu avais mis des return true là où il fallait des return false cela permet d'empêcher de passer à l'étape suivante (nextStep) si l'étape actuelle n'est pas validée correctement.

Ensuite, les conditions pour le choix entre "Collège" et "Lycée" étaient mal formulées, il manquait une validation pour vérifier si l'utilisateur avait bien sélectionné un élément avant de continuer.

Enfin, il y avait aussi une erreur dans la manière dont tu gérais le passage d'une étape à l'autre, notamment avec l'incrémentation du currentStep, ce qui causait des bugs dans l'affichage des étapes.

novel shale
keen narwhal
fierce grotto
#

fait :

import dotenv from 'dotenv';
dotenv.config();

keen narwhal
fierce grotto
#

ah pardon c'est du ts

#

import * as dotenv from 'dotenv';
dotenv.config();

' je crois ' pas sur

après ton npm start est pas bon

trail gull
#

c'est peut etreb aussi que tu n'es pas dnas le bon dossier pour éxécuter ton app

fierce grotto
#

yes j'viens d'voir 🤣

keen narwhal
#

C'est réglé

#

merci

still quest
#

Bonjour

J'aimerais rajouter une fonctionnalité à mon bot discord une wordlist, et il sanctionne à chaque fois qu'une personne utilise l'un de ces mots.
J'ai donc une entité receuillant tout les mots banni par un serveur lambda cependant, je trouve que cela pourrait charger mon bot si je dois faire une requete pour chaque message, surtout si mon bot est sur une centaine de serveur ou plus...

Donc ma question est de savoir comment faire réellement dans ce cas, j'ai chercher je suis tombé sur l'algorithme d'Aho-Corasick, cela à l'air bien mais pas assez à mon goût, donc je suis preneur pour toute solution possible.

round carbon
spice moat
#

Est ce que quelqu'un pourrais me dire si c'est possible de changer le nom d'une key dans un fichier json a en executant du code javascript ?

#

(Bien sur un truc qui le fait directement, par ce que en effet, je peux copier le contenu de la valeur de ma key et la transférer sur une nouvelle clée avec le nouveau nom puis supprimer l'ancien)

sudden brook
spice moat
#

Bien sur si je peux dabord obtenir la valeure en object du fichier json, appliquer la fonction, puis utiliser un module pour ecrire dans le fichier json son nouveau contenu je prend auss

#

en gros je ne veux pas manuellement changer le nom d'une clé

#

Bon j'ai trouvé un module qui peux le faire mais c'est dommage que ca n'existe pas par défault, je suppose que la seule manière de le faire sans installer de module c'est de crée une nouvele clée et lui donner la valeure de notre clé puis supprimer l'ancienne

sudden brook
#

Oui globalement c'est ce qu'il faut faire mais le module va sûrement faire ça aussi, ça s'écrit en 1 ligne ou 2 ce que tu veux faire, t'as pas vraiment besoin d'un module pour faire ça

spice moat
#

Je me demandais juste au cas ou si il n'y avais pas une fonction built-in qui le fesais deja

sudden brook
#
data.test_a = data.test
delete data.test
spice moat
#

yes

sudden brook
#

non à ma connaissance il n'y a pas de fonction built-in pour ça

keen narwhal
#

Coucou tout le monde quand je lance mon bot discord toutes les commandes se load bien etc mais le bot ne se connecte pas et je ne comprend pas pourquoi..

voici mon index.js :

const { Client, GatewayIntentBits, Collection, Partials } = require('discord.js');
const fs = require('fs');
const path = require('path');

const client = new Client({
  intents: [
    GatewayIntentBits.Guilds,
    GatewayIntentBits.GuildMembers,
    GatewayIntentBits.GuildMessages,
    GatewayIntentBits.MessageContent,
    GatewayIntentBits.GuildMessageReactions,
    GatewayIntentBits.GuildMessageTyping,
  ],
  partials: [Partials.Message, Partials.Reaction, Partials.User],
});

client.commands = new Collection();

const loadCommands = (dir) => {
    const commandFiles = fs.readdirSync(dir).filter(file => file.endsWith('.js'));

    for (const file of commandFiles) {
        const filePath = path.join(dir, file);
        try {
            const command = require(filePath);
            if (command.name) {
                client.commands.set(command.name, command);
                console.log(`cmd chargée: ${command.name} | ${filePath}`);
            } else {
                console.warn(`cmd sans nom trv: ${filePath}`);
            }
        } catch (error) {
            console.error(`Erreur lors du chargement de ${filePath}:`, error.message);
        }
    }
};

try {
    loadCommands(path.resolve(__dirname, './commandes'));
} catch (error) {
    console.error(`Erreur lors du chargement des commandes:`, error.message);
}

client.once('ready', () => {
    console.log(`Connecté en tant que ${client.user.tag}`);
});

client.on('messageDelete', message => {
    if (!message.partial && !message.author.bot) {
        client.lastDeletedMessage = message;
    }
});

client.on('messageCreate', message => {
    if (message.author.bot || !message.content) return;

    const urlRegex = /(https?:\/\/[^\s]+)|(www\.[^\s]+)/g;

    if (urlRegex.test(message.content)) {
        message.delete().catch(console.error);
        message.channel.send(`${message.author}, les liens ne sont pas autorisés ici !`).then(msg => {
            setTimeout(() => msg.delete(), 5000);
        }).catch(console.error);
    }
});

const prefix = '+';

client.on('messageCreate', message => {
    if (!message.content.startsWith(prefix) || message.author.bot) return;

    const args = message.content.slice(prefix.length).trim().split(/ +/);
    const commandName = args.shift().toLowerCase();

    const command = client.commands.get(commandName);

    if (!command) return;

    try {
        command.execute(message, args, client);
    } catch (error) {
        console.error(error);
        message.reply("Il y a eu une erreur lors de l'exécution de la commande.");
    }
});

client.login('Jai bien mis mon token ici');

Quelqu'un aurais une idée ?

round carbon
#

Tu n'as pas une ligne en console qui te dit: Connecté en tant que... ?

keen narwhal
#

regarde en dessous du loadCommands

round carbon
#

Non je demande si tu as cette ligne affichée dans ta console

keen narwhal
#

Elle est censé s'affiché mais elle ne s'affiche pas

idle sentinel
keen narwhal
idle sentinel
keen narwhal
celest wave
#

Fait un handler pour les events dedans tu créer un ready.js et tu execute ceci

console.log(`Connecté en tant que ${client.user.tag}`);
#

En JavaScript peu importe se que tu veux renvoyer comme information dans ton terminal tu utilise un console.log([Object])

keen narwhal
celest wave
#

Optimise ton code car là ..

fierce grotto
keen narwhal
keen narwhal
fierce grotto
#

alors idk si t'as un vps et qu'tu gère toi même t'as juste a faire : node -v & npm -v

celest wave
fierce grotto
#

alors c'est un serveur (windows ou linux) sur le quel tu peux héberger des choses

keen narwhal
keen narwhal
#

C'est payant ?

fierce grotto
celest wave
keen narwhal
fierce grotto
#

ou alors c'est sous les truc d'hosting free

keen narwhal
#

j'ai pas de tales..

#

surtout pour un bot que j'utilise personnellement

#

En gros c'est pour mon serveur donc personne le paye

fierce grotto
#

yes ça ce comprend après pour des bot discord un vps a 2€ sa fait largement le taff si ton bot c'est un pas gros truc commu qui demande de la resource 🤣

#

ou du moins si t'es pas a l'aise avec le shell tu prend une offre ptero OU sinon encore mieux t'investi dans un Raspberry 🤣

celest wave
#

Pour 1 € mm

keen narwhal
#

J'ai vrm 0

torn fog
#

Faut juste prouver à github que t'es étudiant

keen narwhal
dire oriole
# keen narwhal J'ai vrm 0

L'abonnement c'est toujours compliqué, surtout si tu ne travaille pas, ou que tu n'a pas d'entrée d'argent régulière,
Le selfhost est également une option, un "investissement" en une fois voir même "gratuit" (hors électricité et internet que tu paie déjà),

Personnellement le vieux pc que le lycée ma filer en 2nd, je le passe sous debian (mais en vrais si tu n'est pas a l'aise tu peux le laisser sous Windows), je l'utilisais comme serveur dédier
Seul bémol : faut pas de coupure d'internet ou d'électricité, mais selon ton projet ca fait largement le taff

Puis toujours dans le selfhost une raspberry pi, qui consomme beaucoup moins en électricité peut être in investissement (une p3 B+ est largement suffisante ~50€ sur amazon), juste faut être a l'aise avec debian/raspbian

keen narwhal
celest wave
#

Si t'a un pc dont tu n'a plus d'usage fait le

dire oriole
keen narwhal
dire oriole
#

Bah... comment dire... ton pc est un serveur

celest wave
#

un pc est une machine

#

si tu hébergerai sous VPS Linux ou windows se serais la mm interface que ton pc

keen narwhal
#

Bah pourquoi on utilise pas directement son pc pour avoir un serveur alors

dire oriole
#

Car tu peux avoir des coupures de courant ou d'internet

zenith bridge
#

Yo j'aurais besoin d 'aide pour tanstack router

keen narwhal
dire oriole
celest wave
celest wave
dire oriole
keen narwhal
celest wave
#

tu installe node js sur ton deuxieme pc tu ouvre un cmd et lets go

keen narwhal
#

et je peux en faire plusieurs a la fois tu pense aussi ?

#

Avec un vieux pc

celest wave
#

@dire oriole est plus calé que moi pour te répondre en vrai j'ai jamais host comme ca

dire oriole
#

Voila ce que prenne en ram mes bots
sachant que les bot avec l'id 3 - 4 - 5 sont des bots public sur plus de 1000 serveurs chacun

celest wave
#

👀

dire oriole
ancient sonnetBOT
#
Citation du message de hrodvitnir_fenrir posté dans #javascript-typescript

quoteStart L'abonnement c'est toujours compliqué, surtout si tu ne travaille pas, ou que tu n'a pas d'entrée d'argent régulière,
Le selfhost est également une option, un "investissement" en une fois voir même "gratuit" (hors électricité et internet que tu paie déjà),

Personnellement le vieux pc que le lycée ma filer en 2nd, je le passe sous debian (mais en vrais si tu n'est pas a l'aise tu peux le laisser sous Windows), je l'utilisais comme serveur dédier
Seul bémol : faut pas de coupure d'internet ou d'électricité, mais selon ton projet ca fait largement le taff

Puis toujours dans le selfhost une raspberry pi, qui consomme beaucoup moins en électricité peut être in investissement (une p3 B+ est largement suffisante ~50€ sur amazon), juste faut être a l'aise avec debian/raspbian quoteEnd

Ce message contient également une image, visible à droite de l'embed.

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

celest wave
#

Après les bots consomme rien

dire oriole
#

en proco ouais, en ram ca va vite dépendament du bot

celest wave
#

J'aurais des down h40

dire oriole
#

Mon plus gros bot est a un demi giga de ram mais au vu des stats normal

celest wave
#

Moi j'ai un bot roleplay

dire oriole
#

Il fait le lien entre twitter et discord, tu follow des compte twitter et ca poste sur discord

celest wave
#

C'est rien pour un bot sa

#

Utilise juste du canvas dans ton code tu verra du changement

wet temple
#

Bonjour, j'ai un soucis avec mon code, il s'agit d'un systeme de voc dans un projetThreeJs, mais il ne fonctionne pas, mon navigateur autorise bien le micro, mais rien ne se passe jsp pourquoi. Je ne bosse pas du tout avec ce genrs de techno

#

const io = new Server({
  cors: {
    origin: "http://localhost:5173",
  },
});

io.listen(3001);

const characters = [];

const generateRandomPosition = () => {
  return [Math.random() * 3, 3.6, 0];
};

const generateRandomHexColor = () => {
  return "#" + Math.floor(Math.random() * 16777215).toString(16);
};

io.on("connection", (socket) => {
  console.log("user connected");

  characters.push({
    id: socket.id,
    position: generateRandomPosition(),
    hairColor: generateRandomHexColor(),
    topColor: generateRandomHexColor(),
    bottomColor: generateRandomHexColor(),
  });

  socket.emit("hello");

  io.emit("characters", characters);

  socket.on("move", (position) => {
    const character = characters.find(
      (character) => character.id === socket.id
    );
    character.position = position;
    io.emit("characters", characters);
  });
  socket.on("join-audio", () => {
    socket.broadcast.emit("new-user", socket.id);
  });

  socket.on("offer", (data) => {
    io.to(data.to).emit("offer", { offer: data.offer, from: socket.id });
  });

  socket.on("answer", (data) => {
    io.to(data.to).emit("answer", { answer: data.answer, from: socket.id });
  });

  socket.on("ice-candidate", (data) => {
    io.to(data.to).emit("ice-candidate", { candidate: data.candidate, from: socket.id });
  });

  socket.on("disconnect", () => {
    console.log("user disconnected");

    characters.splice(
      characters.findIndex((character) => character.id === socket.id),
      1
    );
    io.emit("characters", characters);
  });
});
spice moat
#

quelqu'un sait comment changer ca pour que se coit compatible avec Deno ?

spice moat
#

ah ok j'ai trouvé, il y avais une fonction "import"

drowsy ocean
spice moat
#

Oui je sais ca c'est parce que maintenant je passe sur Deno mais ca me requiert de convertir les "require" en "import"

#

seulement on ne peux pas faire :

from module import '../../commands' + dir + '/' + file
fierce grotto
# spice moat seulement on ne peux pas faire : ```js from module import '../../commands' + di...

pour gérer les imports dynamiques dans Deno, tu dois utiliser import() de manière asynchrone, parce que les import statiques ne permettent pas de construire le chemin d'import dynamiquement comme require().

Exemple :

const modulePath = `../commands/${dir}/${file}`;
const module = await import(modulePath);

Comme ça, tu importes ton module de manière dynamique et asynchrone ensuite assure-toi que ton code est bien dans une fonction async ou utilise des Promises. Deno fonctionne parfaitement avec ce type d'import si je dit pas de connerie x)

drowsy ocean
spice moat
spice moat
#

Par contre quelqu'un a une idée de par quoi je doit replacer module.exports avec deno ?

#

J'ai bien essayé export mais apres je ne peux pas du coup fare :

export new ApplicationCommand({...})

#

De ce que j'ai trouvé sur google il faudrai utiliser export default mais je ne vois pas a quoi ca sert

fierce grotto
#

export default { taFonction }

ou

export default Fonction; si t'as qu'une seul fonction dans ton code

spice moat
#

C'est pareil ?

fierce grotto
# spice moat Oui mais moi c'est des class/instances de class

Ok bas si tu travaille avec des classe ou des instances de classes tu peux les exporter directement en utilisant export ou export default

exemples:

pour une classe

export class ApplicationCommand {
  constructor() {
    // ton constructeur ici
  }
}

pour une instance:

const appCmd = new ApplicationCommand();
export default appCmd;

et si t'as plusieurs classe ou instance tu peux simplement les lister:

export { taClassName, tonInstanceName  };
spice moat
#

Juste par déduction, export c'est pour plusieurs classes et export default c'est que pour une seule c'est ca ?

fierce grotto
spice moat
#

Merci beaucoup

wet temple
#

est ce que il y a quelqu'un avec une ame charitable pour m'aider sur un problem webRTC, pour expliquer, mon navigateur recoit le son mais rien ne sort, evidement mon son est monté, je me suis pas co à un appareil en blutooth etc

high raptor
wet temple
#

Oui

high raptor
#

tu peux faire ça avec une balise audio ?

#

et rajouter des chunk au fure et à mesure ?

#

et le jouer à l'infini ?

wet temple
#

Je vais essayer

wet temple
wet temple
high raptor
finite glade
#

Bonjour j'aurais besoins d'aide concernant mon dev , j'aimerais crée 2 chose mais j'ai beaucoup de mal merci a vous

#

(je débute encore)

finite glade
#

pour voir en vocal

analog yew
#

Hello tout le monde

#

Est-ce que vous sauriez

#

Si il y a un moyen de transférer un champ de type "long" de Java vers angular via Spring et l'API rest ?

#

Car jusque-là

#

Mon champ de perçu comme "undefined "?

pure tiger
analog yew
#

Hummm

#

Ok

analog yew
#

lorsque je récupère avec angular, tout fonctionne sauf pour l'id

#

qui est perçu comme "undefined"

#

je n'arrive pas à trouver d'équivalence pour le type long de java, (en tout cas c'est comme ça que j'explique le pb)

fierce grotto
#

alors là niveau sec on est a un level hors norme 🤣

fierce grotto
analog yew
#

bah là les valeurs sont faibles

#

je cheche juste à récupéer desid de usr

#

je me demande si le champ est pas mal nommé

#

pcq il est nommé id chez angular

fierce grotto
#

ah oui bas faut que tu check l'idUser

#

pas id vu que tu return idUser et pas id

analog yew
#

c'est aussi censé être le cas dans ma class, mais là ça apparait comme idUser...

#

bizarrre

analog yew
fierce grotto
#

sécurité

analog yew
#

il aurait fallu faire un post

#

après c'est censé être un site en amateur mais oui

#

il aurait fallu cacher les id 😵‍💫

fierce grotto
analog yew
#

hummm

fierce grotto
#

post == pour envoyé des info

analog yew
#

ok, c'est ce que j'avais appris

#

on peut cacher les infos en get ?

fierce grotto
#

oui mais déjà dans ton url le plus logique ce serais juste de renseigné l'id

#

et pas tous le reste

#

donc un /userSearch?id=0

#

qui te return toutes les info de l'id 0

#

enfin toutes les info que tu souhaite (password a ne pas send)

analog yew
pure tiger
analog yew
analog yew
#

j'ai réussi à récupérer un un "id" plutôt qu'un "idUser", via postman

#

je vais tester

#

c'était bien ça le problème merci beaucoup 🫡

fierce grotto
#

Pour ton endpoint post, tu pourrais imaginer quelque chose comme :

Endpoint : /userAuth
Méthode : POST
Body : { "pseudo": "JohnD", "password": "ton_mdp" }
Ton backend fait alors la vérification et ne retourne que les infos nécessaires

analog yew
fierce grotto
# analog yew ok, c'est noté ! C'est une mauvaise pratique d'utiliser post pour renvoyer une v...

Nn nn c'est pas une mauvaise pratique d'utiliser POST pour renvoyer une valeur en fait POST est souvent utilisé pour transmettre des données sensibles ou faire des opérations qui impliquent des changements ou des vérifications, comme une authentification.

Le GET est plus adapté pour récupérer des données publiques et sans risques. mais dès qu'il s'agit de mots de passe ou d'informations sensibles, POST est préférable, même si tu veux seulement une réponse de validation ça ajoute une couche de sécurité parce que les données ne sont pas visibles dans l'URL et ne risquent pas d'être exposées dans les caches ou les logs de ton serveur

analog yew
fierce grotto
#

puis utiliser post pour de la lecture ça déroge aux standards HTTP donc si 1 jour t'as besoin d'aide pour de la maintenance ect bas bon courage 🤣

#

ce sera bien plus chiant à maintenir dans le temps que si tu respectes les standards http tu sais que tes request get => récupère des info & t'es request post => transmette nt des infos

analog yew
#

ok je comprends, merci 👍

hearty ridge
#

Bonjour, je suis entrain de faire un bot discord, je me suis rendu compte que des slash commands étaient enregistré plusieurs fois, donc je me suis mis a chercher une solution, j'ai trouvé ce code qui permet de re enregistrer les commands sauf que j'ai un message d'erreur
Le code :

const { REST, Routes } = require("discord.js");
const { clientId, token, guildId } = require("./config.json"); // Needed values from config.json
const fs = require("fs");
const path = require("path");

const { green, bold, red } = require("colorette");

const slashCommands = [];
const foldersPath = path.join(__dirname, "./commands");
const commandFolders = fs.readdirSync(foldersPath, { withFileTypes: true });

for (const folder of commandFolders) {
  if (folder.isDirectory()) {
    const commandsPath = path.join(foldersPath, folder.name);
    const commandFiles = fs
      .readdirSync(commandsPath)
      .filter((file) => file.endsWith(".js"));

    for (const file of commandFiles) {
      const filePath = path.join(commandsPath, file);
      const slashCommand = require(filePath);

      if ("data" in slashCommand && "execute" in slashCommand) {
        slashCommands.push({
          command: slashCommand.data.toJSON(),
          developer: slashCommand.config?.developer || false, // Default to false if not specified
        });
      } else {
        console.log(
          `[WARNING] The command at ${filePath} is missing a required "data" or "execute" property.`
        );
      }
    }
  } else if (folder.isFile() && folder.name.endsWith('.js')) {
    // Handle JS files directly in the commands folder
    const filePath = path.join(foldersPath, folder.name);
    const slashCommand = require(filePath);

    if ("data" in slashCommand && "execute" in slashCommand) {
      slashCommands.push({
        command: slashCommand.data.toJSON(),
        developer: slashCommand.config?.developer || false,
      });
    } else {
      console.log(
        `[WARNING] The command at ${filePath} is missing a required "data" or "execute" property.`
      );
    }
  }
}

const rest = new REST().setToken(token);

(async () => {
  try {
    const globalCommands = slashCommands
      .filter((cmd) => !cmd.developer)
      .map((cmd) => cmd.command);
    const guildCommands = slashCommands
      .filter((cmd) => cmd.developer)
      .map((cmd) => cmd.command);

    console.log(`${green("[INFO]")} Deploying Slash Commands...`);
    if (slashCommands.length > 0) {
      console.log(
        `[${green("+")}] Deploying ${bold(
          slashCommands.length.toLocaleString()
        )} Total Slash Commands`
      );
    } else {
      console.error(`${red("[ERROR]")} No Slash Commands To Deploy`);
    }

    if (globalCommands.length > 0) {
      await rest.put(Routes.applicationCommands(clientId), {
        body: globalCommands,
      });
      console.log(
        `[${green("+")}] Reloaded ${bold(
          globalCommands.length.toLocaleString()
        )} Global Application Slash Commands`
      );
    }

    if (guildCommands.length > 0) {
      await rest.put(Routes.applicationGuildCommands(clientId, guildId), {
        body: guildCommands,
      });
      console.log(
        `[${green("+")}] Reloaded ${bold(
          guildCommands.length.toLocaleString()
        )} Guild Application Slash Commands`
      );
    }
  } catch (error) {
    console.error(error);
  }
})();
#

Logs :

[+] Deploying 3 Total Slash Commands
DiscordAPIError[20012]: You are not authorized to perform this action on this application
    at handleErrors (C:\Users\Admin\Documents\PuantBot\CopyPuants\node_modules\@discordjs\rest\dist\index.js:727:13)
    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
    at async SequentialHandler.runRequest (C:\Users\Admin\Documents\PuantBot\CopyPuants\node_modules\@discordjs\rest\dist\index.js:1128:23)
    at async SequentialHandler.queueRequest (C:\Users\Admin\Documents\PuantBot\CopyPuants\node_modules\@discordjs\rest\dist\index.js:959:14)
    at async _REST.request (C:\Users\Admin\Documents\PuantBot\CopyPuants\node_modules\@discordjs\rest\dist\index.js:1272:22)
    at async C:\Users\Admin\Documents\PuantBot\CopyPuants\deploy_commands.js:75:7 {
  requestBody: { files: undefined, json: [ [Object], [Object], [Object] ] },
  rawError: {
    message: 'You are not authorized to perform this action on this application',
    code: 20012
  },
  code: 20012,
  status: 403,
  method: 'PUT',
  url: 'https://discord.com/api/v10/applications/1300830498460794950/commands'
}```
keen narwhal
#

L'objectif est de supprimer les commandes en double ?

#
discordClient.once('ready', async () => {
    try {
        const guild = discordClient.guilds.cache.get('id du serveur');
        await guild.commands.set([]);
        await discordClient.application.commands.set([]);
        console.log('Toutes les commandes slash ont été supprimées avec succès.');
    } catch (error) {
        console.error('Une erreur est survenue lors de la suppression des commandes slash :', error);
    }
});```
#

J'utilisais ça pour un serveur spécifique

#

Et une fois que ça a supprimé tu mets cette partie entre commentaires

#

Il y a sûrement plus pratique

keen narwhal
#

tu a autoriser son bot a faire des applciaion command ? dans le scop d'invite ?

stray nest
#

Y'a t-il un dev qui s'y connait en Next JS et Supabase. Je bute sur un souci d'authentification avec les rôles user, admin avec Supabase. Une personne voudrait-elle bien m'aider ?

hearty sluice
stray nest
hearty sluice
#

@stray nest YA une erreur aux lignes 64 et 185

stray nest
hearty sluice
#

Utilise chat gpt

stray nest
noble mountain
#

Pour ton SheetContent si tu retire temporairement le side ça passe ?

#

à voir pour étendre sinon ton type SheetContentProps pour inclure side

#

C'est le but du discord