Tradução automáticaEsta página foi traduzida automaticamente. O original em inglês é a versão de referência.Leia esta página em inglês
Cliente Python — `disband-bot`
O cliente oficial Python. Usa apenas a biblioteca padrão (threading + urllib), então não há nada para instalar além do próprio cliente. Funciona no Python 3.9+.
instalar
pip install disband-bot
Ou, deste monorepo:
pip install ./packages/disband-bot-python
Início rápido
from disband_bot import Client
client = Client(token=DISBAND_BOT_TOKEN)
@client.on("ready")
def on_ready(me):
print(f"Logged in as {me['name']} ({', '.join(me['scopes'])})")
@client.on("messageCreate")
def on_message(message):
if message.author_is_bot:
return
if message.content == "!ping":
message.reply("pong")
client.run() # connects and blocks forever
Os manipuladores podem ser simples ou async def; ambos são suportados.
construtor
`Client(token, base_url="https://www.disband.dev", gateway_timeout=20)`
| Argumento | Padrão | Descrição |
|---|---|---|
token |
(obrigatório) | O token do bot de Configurações → Bots. |
base_url |
"https://www.disband.dev" |
API raiz (mude para um domínio personalizado). |
gateway_timeout |
20 |
Segundos por pesquisa de gateway (1-20). |
Ciclo de vida
| Método | Descrição |
|---|---|
run() |
Conecta, emite ready, inicia o loop do gateway em uma thread de fundo e bloqueia para sempre. |
close() |
Para o loop. |
Eventos
Registre-se com client.on("name", handler) — como um decorador ou uma chamada simples — além de once para manipuladores de disparo único.
| Evento | Argumentos | Notas |
|---|---|---|
ready |
user |
user["id"], user["name"], user["scopes"], etc. |
messageCreate |
message |
Uma nova mensagem em um servidor que o bot pode ver. |
messageUpdate |
message |
Uma mensagem foi editada (content, edited_at atualizada). |
messageDelete |
message |
Uma mensagem foi excluída (content vazio; id/channel_id válido). |
error |
error |
Erros do gateway. O loop tenta novamente automaticamente, a menos que o token seja inválido, no qual caso ele para. |
`Message`
| Campo | Tipo | Descrição |
|---|---|---|
id |
str |
ID da mensagem. |
channel_id |
str |
ID do canal. |
server_id |
str | None |
ID do servidor. |
author |
dict | None |
{ "id", "username", "display_name", "avatar_url", "is_bot" }. |
content |
str |
Texto da mensagem. |
reply_to_id |
str | None |
A mensagem para a qual esta resposta está sendo feita, se houver. |
mentions |
list |
Usuários mencionados. |
attachment |
dict | None |
{ "url", "type" } quando a mensagem tem um arquivo. |
created_at |
str | None |
Timestamp ISO. |
edited_at |
str | None |
Timestamp ISO da última edição. |
display_id |
int | None |
O número de exibição sequencial. |
author_is_bot |
bool |
Verdadeiro quando o remetente foi um robô (propriedade). |
Métodos — message.reply(content) responde no mesmo canal.
Métodos
client.send_message(channel_id, "Deploy finished") # send
message.reply("pong") # reply to a received message
messages = client.list_messages(channel_id, limit=25, before="…")
channels = client.list_channels(server_id)
members = client.list_members(server_id)
channel_id = client.create_channel(server_id, "deploys")
client.rename_channel(channel_id, "deploys-2")
client.delete_channel(channel_id)
client.leave_server(server_id)
invite = client.create_invite(server_id, ["messages.read", "messages.write"])
# invite["invite_url"] -> send to the server owner
Erros
O cliente cria subclasses de DisbandError com um .status e .body:
| Erro | Quando |
|---|---|
AuthError |
401 — token inválido ou revogado. O loop do gateway para com isso. |
PermissionError |
403 — falta permissão de escopo ou função. |
RateLimitError |
429 — inclui segundos retry_after. |
HttpError |
Qualquer outro status não 2xx. |
Internamente, o cliente é um invólucro fino sobre o Referência da API: REST.get/post/patch/delete com Authorization: Bot <token>.
Disband