Estava mexendo na API do BlueSky a um tempo atrás e encontrei uma forma de adicionar um usuário a uma lista (como a lista de bloqueios) múltiplas vezes, criando várias entradas para o mesmo usuário, ou bloquear alguém várias vezes. Já reportei o problema para o suporte do BlueSky a alguns dias, mas vou deixar aqui também.
A API do Bluesky permite adicionar um usuário a uma lista usando um endpoint específico. Normalmente, se você tentar adicionar o mesmo usuário novamente ou bloquear a mesma pessoa, a API deveria ignorar a requisição ou retornar um erro. No entanto, descobri que, sob certas condições, é possível contornar essa restrição. Usando um script como este, consegui adicionar à uma lista de bloqueio e bloquear um usuário várias vezes (Um mero exemplo):
Code:
def block_did(did_to_block, list_uri):
payload = {
"collection": "app.bsky.graph.block",
"repo": teu_did, # Teu DID kk
"record": {
"subject": did_pro_vasco, # Seu DID ou de alguém
"createdAt": created_at
}
}
response = requests.post(create_record_url, headers=headers, json=payload)
------------------
payload = {
"collection": "app.bsky.graph.listitem",
"repo": "did:plc:...", # Teu DID kk
"record": {
"subject": did_to_block, # Seu DID ou de alguém
"list": list_uri,
"createdAt": created_at
}
}
#
block_did(did_to_block, list_uri)
block_did(did_to_block, list_uri)
block_did(did_to_block, list_uri)
Nesse exemplo estou chamando a função 'block_did' várias vezes com o mesmo 'did_to_block' e 'list_uri'. Isso resultaria em múltiplas entradas na lista de bloqueios e usuários bloqueados, como mostrado nas imagens abaixo.
NOTA IMPORTANTE: Para bloquear alguém múltiplas vezes, você precisa de um loop sem delay, ou com algum muito baixo, oque não precisa ser feito com as listas, se você adicionar alguém em um dia e depois adicionar no dia seguinte, ela vai aparecer duas vezes na mesma lista (e consequentemente você terá que tirar ela duas vezes..)