Bluesky.bot

Crea un bot en Python

Esta guía escribe un bot que publica en Bluesky con atproto, el SDK de Python de la comunidad. Necesita Python 3.9 o posterior.

1. Crea una contraseña de aplicación

Inicia sesión en Bluesky como el bot, abre Ajustes → Privacidad y seguridad → Contraseñas de aplicación y crea una. Un bot inicia sesión con una contraseña de aplicación, nunca con la contraseña principal de la cuenta.

2. Prepara el proyecto

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

Mantén las credenciales fuera del código:

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

3. Escribe el bot

bot.py
# bot.py: publica una vez como el bot. Ejecútalo con `python bot.py`.
import os

from atproto import Client, client_utils

# La propia cuenta del bot, con sesión iniciada con una contraseña de aplicación
# (Ajustes > Privacidad y seguridad > Contraseñas de aplicación),
# nunca con su contraseña 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 hace clicables el enlace y el hashtag.
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}")

Qué hace:

  • Client() habla con https://bsky.social por defecto. Para un servidor propio, pasa su URL: Client("https://pds.example.com").
  • login abre una sesión con el handle y la contraseña de aplicación.
  • TextBuilder construye el texto y los facets que hacen clicables el enlace y el hashtag.
  • send_post crea el post; su uri es la dirección at:// del post.

4. Ejecútalo

bash
python bot.py

Siguientes pasos