🐍 Client Python#

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

Installation#

Nous avons dĂ©veloppĂ© une librairie Python qui permet d’interagir facilement avec votre daemon. Elle est disponible Ă  l’installation avec la commande pip.

pip3 install olvid-bot

Astuce

Le module olvid-bot nĂ©cessite une version de Python supĂ©rieure ou Ă©gale Ă  3.10. Sur Mac OS, nous vous conseillons d’utiliser HomeBrew pour installer une version plus rĂ©cente.

brew install python3

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_URL=http://localhost:50051 > .env
echo OLVID_CLIENT_KEY=ReplaceWithYourClientKey >> .env

Premier programme#

Afin de vérifier que tout fonctionne correctement, vous pouvez copier/coller ce programme dans un fichier main.py.

import asyncio
from olvid import OlvidClient

async def main():
    client = OlvidClient()
    print((await client.identity_get()).display_name)

asyncio.set_event_loop(asyncio.new_event_loop())
asyncio.get_event_loop().run_until_complete(main())

Vous pouvez ensuite l’exĂ©cuter Ă  l’aide de l’interprĂ©teur Python.

python3 main.py

Si tout a bien Ă©tĂ© configurĂ©, vous devriez voir s’afficher le nom d’usage de l’identitĂ© que vous avez créée sur le daemon.

Sinon, rendez-vous dans notre section đŸ‘©â€đŸ”§ DĂ©pannage.

Premier Bot#

Pour commencer Ă  coder votre premier bot, vous pouvez partir de l’exemple suivant. Il se contente de rĂ©pondre Ă  chaque message avec le mĂȘme message, mais il peut facilement ĂȘtre modifiĂ© et amĂ©liorĂ©.

import asyncio
from olvid import OlvidClient, datatypes, tools

class EchoBot(OlvidClient):
    async def on_message_received(self, message: datatypes.Message):
        await message.reply(client=self, body=message.body)

    async def on_discussion_new(self, discussion: datatypes.Discussion):
        await discussion.post_message(client=self, body="Hello 👋")

async def main():
    bot = EchoBot()
    await bot.enable_auto_invitation(accept_all=True)  # automatically accept presentation and group invitations
    await bot.run_forever()

asyncio.set_event_loop(asyncio.new_event_loop())
asyncio.get_event_loop().run_until_complete(main())

Et maintenant ?#

Pour en apprendre plus sur l’utilisation de notre librairie Python rendez-vous dans notre section đŸ‘©â€đŸ« Tutoriels. Sinon rendez-vous dans la section đŸŒ± Exemples pour dĂ©ployer des projets clĂ©s en main.