Client JavaScript

Client JavaScript#

Pré-requis

Si vous n’avez pas installĂ© de daemon, merci de suivre la section 🚀 Quickstart.

Avant de commencer, vérifiez bien que vous avez une instance du daemon Olvid qui tourne, avec une identité créée dessus, et une clé client valide pour vous connecter en utilisant cette identité.

Si vous souhaitez vérifier que votre daemon est fonctionnel et/ou récupérer une clé client perdue, utilisez la commande : docker compose run --rm cli key get

Nous avons développé un module Node.js en typescript pour facilement créer des programmes qui intéragissent avec un daemon Olvid.

Voici la procĂ©dure de mise en place d’un programme de dĂ©monstration qui se connecte Ă  votre instance de daemon et implĂ©mente les bases d’un chat bot.

Installation#

CrĂ©ons tout d’abord notre rĂ©pertoire de travail.

mkdir -p olvid-bot
cd olvid-bot

On peut maintenant mettre en place le projet.

npm init -y
npm install @olvid/bot-node
mkdir -p src
touch .env src/main.ts
npm pkg set scripts.main="npx tsx src/main.ts"

Configuration#

Pour se connecter Ă  un daemon, votre programme a besoin de connaitre l’adresse du daemon et la clĂ© client Ă  utiliser. Pour cela, on utilise des variables d’environnement ou un fichier .env.

Remplacez la clĂ© client par celle que vous avez créée lors de la mise en place de votre daemon, et l’adresse du daemon si nĂ©cessaire.

echo OLVID_DAEMON_TARGET=localhost:50051 > .env
echo OLVID_CLIENT_KEY=ReplaceWithYourClientKey >> .env

Premier programme#

Vous pouvez maintenant copier/coller le code suivant dans le fichier src/main.ts.

Le programme va afficher l’identitĂ© avec laquelle vous ĂȘtes connectĂ© au daemon puis attendre que des messages arrivent. Pour le moment il ne rĂ©pond qu’à la commande !ping mais vous pouvez modifier le code pour adapter son comportement.

import {OlvidClient, datatypes} from "@olvid/bot-node";
import {command, onMessageReceived, onMessageSent} from "@olvid/bot-node";

class ExampleBot extends OlvidClient {
    @command("^!ping")
    async help(message: datatypes.Message) {
        await message.reply(this, "pong")
    }
    
    @onMessageReceived()
    async messageReceived(message: datatypes.Message) {
        console.log("<", message.body);
    }
    @onMessageSent()
    async messageSent(message: datatypes.Message) {
        console.log(">", message.body);
    }
}

async function main() {
  let bot = new ExampleBot();
  console.log("Started bot as:", (await bot.identityGet()).displayName)
  await bot.runForever();
}
main().then()

Lancez votre programme à l’aide la commande suivante. (CTRL+C pour l’interrompre).

npm run main

Lorsque tout fonctionne vous pouvez utiliser ce programme comme base pour votre projet en le modifiant.