Création d'un bot discord en node.js

Akael

New Member
#1
Bonjour / bonsoir à tous !

Ayant envie de relever de nouveau défis (et de me faire du mal), je me suis lancé dans la création d'un bot discord tournant sur Node.js.
Les premiers tests étaient concluants, bonne importation de la librairie, connexion avec la bdd... Dans 2 heures j'avais mon bot !

Malheureusement, après avoir tenté de login mon client avec le token... Erreur de certification.
Voici le joli petit bout d'erreur apparu (je vous épargne le superflu):

Error: unable to get local issuer certificate
at ssl.onhandshakedone (node:_tls_wrap:743:12) {
code: 'UNABLE_TO_GET_ISSUER_CERT_LOCALLY'
}

Je comprends qu'un certificat n'est pas valide / détecté. Les différentes méthodes sur l'internet n'ont pas l'air de fonctionner, j'en déduis qu'il s'agit d'une erreur propre à la configuration de planetHoster (Entendez par là qu'une manipulation supplémentaire est à faire).

Si certains ont déjà eu ce cas, je suis preneur pour trouver la solution !
Au cas où, voici mon code :

Code:
const {Client, Intents, Message, ReactionUserManager, MessageEmbed, ActionRowBuilder, ButtonBuilder, ButtonStyle} = require('discord.js');

const client = new Client({intents: 131071});
const getToken = require("./utils/function.js");
const {bdd, config, log, salary} = require('./utils/all.js');

const token = getToken("prod");


const owner = config.owner;
const test = config.guildID.test;

var message = "";
bdd.connect((err) => {
    if (err) {
        message +='Error : '+ err.stack;
    }
    message +='Success ';
});

client.on("ready", () => {
    var http = require('http');
    var server = http.createServer(function(req, res) {
        res.writeHead(200, {'Content-Type': 'text/plain'});
        
        message += 'It work s!\n';
        var version = 'NodeJS ' + process.versions.node + '\n';
        var response = [message, version].join('\n');
            
    
        res.end(response);
    });
    server.listen();

});

client.login(token);
Merci d'avance pour l'aide apportée !
Bonne journée :D
 

Akael

New Member
#2
Bonjour,

Je me permets de rebondir car j'ai trouvé une solution à peu près stable pour le fonctionnement.
Cependant, elle nécessite l'abandon du chargement de la page web et de passer par ligne de commande via le terminal.

Le problème principal était le certificat qui n'était pas reconnu.
N'ayant pas trouvé comment l'exploiter / le modifier via l'appel web, j'ai créé un fichier shell qui execute le code avant le lancement de mon code:
Bash:
source /home/name/nodevenv/CyBot/18/bin/activate
npm config set cafile /home/name/CyBot/utils/keys/cacert.pem
export NODE_EXTRA_CA_CERTS=/home/name/CyBot/utils/keys/cacert.pem
export NODE_OPTIONS=—use-openssl-ca

node index.js
Pour ceux se demandant d'où vient la clé, voici le lien: https://curl.se/docs/caextract.html

Cordialement,
Akaël
 
Haut