Bluesky.bot

Créer un bot en Python

Ce guide écrit un bot qui publie sur Bluesky avec atproto, le SDK Python communautaire. Il nécessite Python 3.9 ou plus récent.

1. Créer un mot de passe d’application

Connectez-vous à Bluesky en tant que le bot, puis ouvrez Paramètres → Confidentialité et sécurité → Mots de passe d’application et créez-en un. Un bot se connecte avec un mot de passe d’application, jamais avec le mot de passe principal du compte.

2. Préparer le projet

bash
mkdir my-bot && cd my-bot
python -m venv .venv
source .venv/bin/activate
pip install atproto

Gardez les identifiants hors du code :

bash
export BLUESKY_HANDLE="weather.bluesky.bot"
export BLUESKY_APP_PASSWORD="xxxx-xxxx-xxxx-xxxx"

3. Écrire le bot

bot.py
# bot.py : publie une fois en tant que le bot. Lancez `python bot.py`.
import os

from atproto import Client, client_utils

# Le compte du bot lui-même, connecté avec un mot de passe d’application
# (Paramètres > Confidentialité et sécurité > Mots de passe d’application),
# jamais avec son mot de passe principal.
handle = os.environ.get("BLUESKY_HANDLE")
password = os.environ.get("BLUESKY_APP_PASSWORD")
if not handle or not password:
    raise SystemExit("Set BLUESKY_HANDLE and BLUESKY_APP_PASSWORD.")

client = Client()
client.login(handle, password)

# TextBuilder rend le lien et le hashtag cliquables.
text = (
    client_utils.TextBuilder()
    .text("Today: sunny, 21°C. Forecast at ")
    .link("example.com", "https://example.com")
    .text(" ")
    .tag("#weather", "weather")
)

post = client.send_post(text)
print(f"Posted {post.uri}")

Ce qu’il fait :

  • Client() parle à https://bsky.social par défaut. Pour un serveur auto-hébergé, passez son URL : Client("https://pds.example.com").
  • login ouvre une session avec le handle et le mot de passe d’application.
  • TextBuilder construit le texte et les facets qui rendent le lien et le hashtag cliquables.
  • send_post crée le post ; son uri est l’adresse at:// du post.

4. Le lancer

bash
python bot.py

Et ensuite