Traduction automatiqueCette page a été traduite automatiquement. L’original anglais fait foi.Lire cette page en anglais
Client Python — `disband-bot`
Le client officiel Python. Utilise uniquement la bibliothèque standard (threading + urllib), donc il n'y a rien à installer à part le client lui-même. Fonctionne sur Python 3.9+.
installer
pip install disband-bot
Ou, à partir de ce monorepo :
pip install ./packages/disband-bot-python
Début rapide
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
Les gestionnaires peuvent être simples ou async def ; les deux sont pris en charge.
constructeur
`Client(token, base_url="https://www.disband.dev", gateway_timeout=20)`
| Argument | Défaillance | Description |
|---|---|---|
token |
(obligatoire) | Le jeton bot de Paramètres → Bots. |
base_url |
"https://www.disband.dev" |
API racine (modifier pour un domaine personnalisé). |
gateway_timeout |
20 |
Secondes par sondage de gateway (1-20). |
Cycle de vie
| Méthode | Description |
|---|---|
run() |
Connexion, émission de ready, démarrage de la boucle de gateway dans un thread en arrière-plan et blocage permanent. |
close() |
Arrête la boucle. |
Événements
Inscrivez-vous avec client.on("name", handler) - en tant que décorateur ou appel simple - plus once pour les gestionnaires à tir unique.
| Événement | Arguments | Notes |
|---|---|---|
ready |
user |
user["id"], user["name"], user["scopes"], etc. |
messageCreate |
message |
Un nouveau message sur un serveur que le bot peut voir. |
messageUpdate |
message |
Un message a été modifié (content, edited_at mis à jour). |
messageDelete |
message |
Un message a été supprimé (content vide ; id/channel_id valide). |
error |
error |
Erreurs de gateway. La boucle réessaye automatiquement à moins que le jeton ne soit invalide, auquel cas il s'arrête. |
`Message`
| Champ | Type | Description |
|---|---|---|
id |
str |
Identifiant du message. |
channel_id |
str |
Identifiant du canal. |
server_id |
str | None |
Identifiant du serveur. |
author |
dict | None |
{ "id", "username", "display_name", "avatar_url", "is_bot" }. |
content |
str |
Texte du message. |
reply_to_id |
str | None |
Le message auquel cela répond, le cas échéant. |
mentions |
list |
Utilisateurs mentionnés. |
attachment |
dict | None |
{ "url", "type" } lorsque le message contient un fichier. |
created_at |
str | None |
Heure ISO. |
edited_at |
str | None |
Heure ISO de la dernière modification. |
display_id |
int | None |
Le numéro d'affichage séquentiel. |
author_is_bot |
bool |
Vrai lorsque l'expéditeur était un bot (propriété). |
Méthodes - message.reply(content) répond dans le même canal.
Méthodes
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
Erreurs
Le client crée des sous-classes de DisbandError avec un .status et un .body :
| Erreur | Quand |
|---|---|
AuthError |
401 - jeton invalide ou révoqué. La boucle de gateway s'arrête à ce stade. |
PermissionError |
403 - manquant de portée ou de permission de rôle. |
RateLimitError |
429 - comprend des secondes retry_after. |
HttpError |
Tout autre statut non 2xx. |
Internement, le client est un enveloppe mince sur le Référence de l’API : REST.get/post/patch/delete avec Authorization: Bot <token>.
Disband