Postagem

Implantar um Bot do Bluesky

Como implantar um bot do Bluesky para postar citações inspiradoras ou qualquer outra coisa que você quiser

Implantar um Bot do Bluesky

Implantando um Bot do Bluesky

Bots são contas automatizadas no Bluesky que podem postar conteúdo em uma programação regular. Este guia irá orientá-lo na configuração de um bot simples que posta citações inspiradoras usando um cron job, hospedado em um droplet do Digital Ocean.

Código encontrado aqui: https://github.com/AngelLozan/BlueSkyBot

Começando

Instalar TypeScript e Node.js

Primeiro, instale TypeScript e Node.js globalmente na sua máquina:

1
2
npm i -g typescript
npm i -g ts-node

Configurar Variáveis de Ambiente

Salve o nome de usuário e senha do seu bot do Bluesky em um arquivo .env:

1
2
BLUESKY_USERNAME=seu_usuario
BLUESKY_PASSWORD=sua_senha

Criando o Script do Bot

O seguinte script TypeScript faz login no Bluesky e posta uma citação inspiradora a cada três horas.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import { AtpAgent } from '@atproto/api';
import * as dotenv from 'dotenv';
import * as process from 'process';

dotenv.config();

const agent = new AtpAgent({
    service: process.env.SERVICE!,
  })


export const main = async () => {
    console.log("Starting to post...")
    await agent.login({ identifier: process.env.BLUESKY_USERNAME!, password: process.env.BLUESKY_PASSWORD!})

    const inspiration = await quote();
    await agent.post({
        text: inspiration,
        visibility: 'public',
    });
    console.log(inspiration);
}

async function quote(){
    let req = await fetch('https://zenquotes.io/api/random');
    let data = await req.json();
    let quote = data[0].q;
    let author = data[0].a;
    console.log(quote);
    console.log(author);
    const bannedAuthors = ['Christopher Columbus', 'Elon Musk', 'Ronald Reagan', 'Theodore Roosevelt', 'Walt Disney', 'William Faulkner', 'Winston Churchill', 'Benjamin Franklin', 'Ayn Rand'];
    if(bannedAuthors.includes(author)){
        return await quote();
    }
    return `${quote} - ${author}`;
}

main();

Implantando Seu Bot no Digital Ocean

Para hospedar seu bot em um droplet do Digital Ocean, siga estes passos:

  1. Configurar um Droplet: Crie um novo Droplet baseado em Ubuntu no Digital Ocean.
  2. Instalar Node.js e npm:
    1
    
    sudo apt update && sudo apt install -y nodejs npm
    
  3. Clonar Seu Repositório do Bot:
    1
    
    git clone seu-repo-url.git && cd sua-pasta-do-repo
    
  4. Instalar Dependências:
    1
    
    npm install
    
  5. Configurar um Cron Job: Edite o crontab para executar seu bot a cada três horas.
    1
    
    crontab -e
    

    Adicione a seguinte linha no final:

    1
    
    0 */3 * * * cd /caminho/para/seu-bot && ts-node bot.ts
    
  6. Garantir que Seu Bot Está Rodando:
    1
    
    pm2 start bot.ts --name bluesky-bot
    

Solução de Problemas do Seu Droplet

Se seu bot parar de funcionar, verifique os logs:

1
2
docker logs caddy --tail=50 --follow
docker logs watchtower --tail=50 --follow

Você também pode inspecionar o status de saúde do seu serviço:

1
curl https://angellozan.live/xrpc/_health

Se seu bot não estiver rodando, verifique se outro serviço está usando as portas 80 ou 443:

1
sudo ss -tulnp | grep :80

Se o Apache estiver interferindo, pare-o:

1
2
3
sudo systemctl stop apache2
sudo systemctl disable apache2
sudo systemctl mask apache2

Em seguida, reinicie seu serviço do bot:

1
systemctl restart pds.service

Melhores Práticas para Bots do Bluesky

  • Respeitar limites de taxa: Evite postagens excessivas.
  • Garantir interações opt-in: Apenas responda, curta ou reposte se um usuário interagir explicitamente com seu bot.
  • Monitorar desempenho: Verifique regularmente os logs e o status de tempo de atividade.

Siga o Bot!

Confira o bot inspirador em ação: inspiration.angellozan.live


Este guia fornece uma maneira simples de implantar um bot do Bluesky. Você pode personalizá-lo ainda mais adicionando integrações de API, agendamento mais complexo ou diferentes tipos de conteúdo. Boa programação!

Todos os direitos reservados pelo autor.