Tecnicamente, um bot é uma conta que publica toots automaticamente, seja de
forma regular ou em reacção a determinados sinais.
Na prática, são tão mais do que isso. A possibilidade de fazermos
mini-máquinas de publicação automática veio mostrar-nos o seu potencial
prático, humorístico, artístico, humano e até poético. Existe até uma
instância dedicada exclusivamente a bots.
Os que por aí andam
Há os bots ferramenta que podemos mencionar para fazerem algo por nós, como
imortalizar citações, reconhecer o texto de uma imagem ou aplicar filtros em
fotografias.
Existem também bots que publicam regularmente textos gerados de forma mais ou
menos aleatória, que vão das experiências mais simples até demonstrações
notáveis de criatividade e escrita conceptual -- sobre isto, as obras da
Allison
Parrish
e do Darius
Kazemi
são imperdíveis. E se formos para além do texto, há resultados
deliciosos.
Finalmente há os bots que publicam de acordo com fontes externas, re-publicando
alertas e emergências, previsões do
tempo; ou então, ligados
a API mais sofisticadas, dá para jogar xadrez por
votação ou detectar
aviões a passar por
cima de uma certa localidade.
(esta não é de todo uma taxonomia formal ou sequer séria; se tiveres outras
ideias sobre como discriminar entre tipos de bots, gostava de ouvir)
Como fazer um
Existem recursos para criar bots sem recorrer a código; no Twitter havia vários
que nunca realmente explorei, porque com Python dá para fazer tudo. No Mastodon
ainda não me sentei para andar à procura, mas gostava de saber o que por aí há.
Sujar as mãos com código dá-nos outro tipo de superpoderes. Para pôr a
rolar um bot, precisas de acesso a uma shell; podes aproveitar um computador
que tenhas sempre ligado, ou então usar um serviço que te dê acesso a uma shell
SSH. Os comandos aqui destinam-se a sistemas GNU/Linux, mas devem também
funcionar em Mac (não me perguntem pelo Windows).
Começamos por instalar localmente o módulo que nos dá os poderes de interagir
com a API da tua instância. Há várias formas de instalar o módulo do
Mastodon, como num Virtualenv,
mas esta é a mais simples e rápida:
pip install --user mastodon.py
Depois, cria um ficheiro bot.py
e cola este pequeno pedaço de código:
from mastodon import Mastodon
mastodon = Mastodon(access_token=MASTODON_ACCESS_TOKEN,
api_base_url=MASTODON_API_BASE_URL)
mastodon.status_post(text, visibility='unlisted')
É tudo o que é preciso! Vamos por partes:
- depois de importar, criamos o objecto
mastodon
que podemos usar para
interagir com a API do Mastodon
- substitui o campo
MASTODON_ACCESS_TOKEN
pelo token de acesso que te foi dado
quando registaste a aplicação na API da tua instância
- substitui o campo
MASTODON_API_BASE_URL
pelo endereço da instância
- o post é feito com a visibilidade não-listada para não interferir com as
timelines locais -- já explico melhor.
Finalmente, coloca o script a correr regularmente num cronjob; corre o
comando crontab -e
e acrescenta a linha
@hourly /path/para/o/teu/bot.py
E está a rolar! Antes de activares o cron, corre o script um par de vezes para
assegurar que está bem.
Botiqueta
Há uns anos a ~aiscarvalho e eu demos um workshop de bots de
Mastodon (e de Twitter, mas passado é passado). Éramos uma dúzia a criar
geradores de texto e fomos para o masto.pt pôr os nossos bots a cantar, o que
arreliou bastante o administrador da instância: ele
tratou de silenciar os nossos bots porque estavam a poluir a timeline local. À
primeira ficámos irritados, então estávamos a trazer coisas tão giras e vêm
logo assim. Mas depois lá concordámos que devíamos ter perguntado primeiro,
pedimos desculpa e fomos ler sobre isso das timelines locais.
A timeline local é o ponto de cada instância onde se podem ler todos os toots
públicos feitos por pessoas que dela fazem parte. É um sítio especialmente bom
se estiveres numa instância temática, regional ou local, porque se encontram
facilmente novas contas a seguir, e dá para conversas mais recatadas.
Ora, se um bot começa a emitir um ou mais toots a cada hora, começa a dominar
a timeline local e a dificultar a leitura do resto, obrigando cada pessoa a
silenciá-lo individualmente. Daí na maioria das instâncias existirem normas
sobre toots não-listados -- as situações onde se deve evitar fazer toots
públicos, como nos vários toots de um thread (o primeiro deve ser público, os
seguintes não-listados) e quando existe política de bots, é quase sempre
imposto que não façam toots públicos.
Este é o primeiro ponto do que tentámos condensar na Ciberlândia como as boas
práticas de construção de bots:
- Apenas fazer toots não-listados
- Assinalar no perfil que a conta é um bot (há uma opção para isso)
- Se o bot fizer upload de imagens e vídeos, contacta os admins da instância
O ponto 2 serve para discriminar os tipos de conta nas estatísticas da
instância e permitir distinguir claramente quando uma conta é um bot.
O ponto 3 prende-se com as duras realidades do alojamento: afixar um vídeo de
2MB por dia dá 730 MB por ano, o que é um peso razoável na conta mensal de
alojamento. Os admins da tua instância podem ajudar-te a encontrar
alternativas de alojamento ou métodos de compressão que possam facilitar a vida
a todos os envolvidos.
Portugal adopta o bot
Na Ciberlândia damos as boas-vindas a bots
interessantes, criativos e/ou úteis. Se tiveres interesse na arte de engendrar
estas geringonças de publicação automática, há espaço para experimentar e gente
por perto para tirar dúvidas.
E se souberes de bots interessantes em português ou outras formas promissoras de
engendrar bots, manda-me um toot. (o mesmo
para erros que possa ter feito e sugestões técnicas!)