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
mkdir my-bot && cd my-bot
python -m venv .venv
source .venv/bin/activate
pip install atprotoMantén las credenciales fuera del código:
export BLUESKY_HANDLE="weather.bluesky.bot"
export BLUESKY_APP_PASSWORD="xxxx-xxxx-xxxx-xxxx"3. Escribe el bot
# 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 conhttps://bsky.socialpor defecto. Para un servidor propio, pasa su URL:Client("https://pds.example.com").loginabre una sesión con el handle y la contraseña de aplicación.TextBuilderconstruye el texto y los facets que hacen clicables el enlace y el hashtag.send_postcrea el post; suuries la direcciónat://del post.
4. Ejecútalo
python bot.pySiguientes pasos
- Programa posts para que el bot funcione solo.
- Dale un handle de bluesky.bot.
- La documentación del SDK atproto (en inglés) cubre respuestas, imágenes, hilos y el firehose.