Traducción automáticaEsta página se tradujo automáticamente. El original en inglés es la versión de referencia.Leer esta página en inglés
Cliente Python — `disband-bot`
El cliente oficial Python. Solo utiliza la biblioteca estándar (threading + urllib), por lo que no hay nada que instalar excepto el propio cliente. Funciona en Python 3.9+.
instalar
pip install disband-bot
O, desde este monorepo:
pip install ./packages/disband-bot-python
Inicio 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
Los manejadores pueden ser simples o async def; ambos son compatibles.
Constructor
`Client(token, base_url="https://www.disband.dev", gateway_timeout=20)`
| Argumento | Valor predeterminado | Descripción |
|---|---|---|
token |
(obligatorio) | El token del bot de Configuración → Bots. |
base_url |
"https://www.disband.dev" |
API raíz (cambia para un dominio personalizado). |
gateway_timeout |
20 |
Segundos por encuesta de puerta de enlace (1-20). |
Ciclo de vida
| Método | Descripción |
|---|---|
run() |
Conecta, emite ready, inicia el bucle del gateway en un hilo en segundo plano y bloquea para siempre. |
close() |
Detiene el bucle. |
Eventos
Regístrese con client.on("name", handler), como decorador o una llamada simple, además de once para manejadores de disparos únicos.
| Evento | Argumentos | Notas |
|---|---|---|
ready |
user |
user["id"], user["name"], user["scopes"], etc. |
messageCreate |
message |
Un nuevo mensaje en un servidor que el bot puede ver. |
messageUpdate |
message |
Se ha editado un mensaje (content, edited_at actualizado). |
messageDelete |
message |
Se ha eliminado un mensaje (content vacío; id/channel_id válido). |
error |
error |
Errores del gateway. El bucle intenta de nuevo automáticamente a menos que el token sea inválido, en cuyo caso se detiene. |
`Message`
| Campo | Tipo | Descripción |
|---|---|---|
id |
str |
ID del mensaje. |
channel_id |
str |
ID del canal. |
server_id |
str | None |
ID del servidor. |
author |
dict | None |
{ "id", "username", "display_name", "avatar_url", "is_bot" }. |
content |
str |
Texto del mensaje. |
reply_to_id |
str | None |
El mensaje a al que responde, si corresponde. |
mentions |
list |
Usuarios mencionados. |
attachment |
dict | None |
{ "url", "type" } cuando el mensaje tiene un archivo. |
created_at |
str | None |
Fecha y hora ISO. |
edited_at |
str | None |
Fecha y hora ISO de la última edición. |
display_id |
int | None |
El número de visualización secuencial. |
author_is_bot |
bool |
Verdadero cuando el remitente era un bot (propiedad). |
Métodos — message.reply(content) responde en el mismo 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
Errores
El cliente crea subclases de DisbandError con un .status y .body:
| Error | Cuando |
|---|---|
AuthError |
401 - token inválido o revocado. El bucle del gateway se detiene en este punto. |
PermissionError |
403 — falta de permiso de alcance o rol. |
RateLimitError |
429 — incluye segundos retry_after. |
HttpError |
Cualquier otro estado no 2xx. |
Internamente, el cliente es un envoltorio delgado sobre el Referencia de la API: REST.get/post/patch/delete con Authorization: Bot <token>.
Disband