Bluesky.bot

Criar um bot em Python

Este guia escreve um bot que publica no Bluesky com atproto, o SDK de Python da comunidade. Precisa de Python 3.9 ou superior.

1. Criar uma palavra-passe de aplicação

Entre no Bluesky como o bot, abra Definições → Privacidade e segurança → Palavras-passe de aplicação e crie uma. Um bot entra com uma palavra-passe de aplicação, nunca com a palavra-passe principal da conta.

2. Preparar o projeto

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

Mantenha as credenciais fora do código:

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

3. Escrever o bot

bot.py
# bot.py: publica uma vez como o bot. Execute com `python bot.py`.
import os

from atproto import Client, client_utils

# A própria conta do bot, com sessão iniciada com uma palavra-passe de aplicação
# (Definições > Privacidade e segurança > Palavras-passe de aplicação),
# nunca com a palavra-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)

# O TextBuilder torna clicáveis a ligação e a 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}")

O que faz:

  • Client() fala com https://bsky.social por predefinição. Para um servidor próprio, passe o URL dele: Client("https://pds.example.com").
  • login abre uma sessão com o handle e a palavra-passe de aplicação.
  • TextBuilder constrói o texto e os facets que tornam clicáveis a ligação e a hashtag.
  • send_post cria a publicação; o seu uri é o endereço at:// da publicação.

4. Executá-lo

bash
python bot.py

A seguir