自動翻訳このページは自動翻訳されました。英語の原文が正式な情報源です。このページを英語で読む
Python クライアント — `disband-bot`
公式のPython クライアント。標準ライブラリ(threading + urllib)のみを使用するため、クライアント自体以外のインストールは必要ありません。Python 3.9+で動作します。
設置する
pip install disband-bot
または、このモノリポジトリから:
pip install ./packages/disband-bot-python
クイックスタート
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
ハンドラーは単純なものかasync defのものかどちらでも構いません。どちらもサポートされています。
建設者
`Client(token, base_url="https://www.disband.dev", gateway_timeout=20)`
| 引数 | デフォルト | 説明 |
|---|---|---|
token |
(必須) | 設定→ボットからのボットトークン。 |
base_url |
"https://www.disband.dev" |
API root (カスタムドメインに変更してください)。 |
gateway_timeout |
20 |
ゲートウェイポールの毎秒数(1〜20)。 |
ライフサイクル
| 方法 | 説明 |
|---|---|
run() |
接続し、readyを発信し、バックグラウンドスレッドでゲートウェイループを開始し、永遠にブロックします。 |
close() |
ループを停止します。 |
イベント
client.on("name", handler)で登録します。装飾者または単純な呼び出しとして、単一ショットハンドラー用のonceも登録します。
| イベント | 引数 | メモ |
|---|---|---|
ready |
user |
user["id"]、user["name"]、user["scopes"]など |
messageCreate |
message |
ボットが見ることができるサーバー内の新しいメッセージ。 |
messageUpdate |
message |
メッセージが編集されました(content、edited_atが更新されました)。 |
messageDelete |
message |
メッセージが削除されました(contentは空で、id/channel_idは有効です)。 |
error |
error |
ゲートウェイエラー。トークンが無効でない限り、ループは自動的に再試行され、その場合、停止します。 |
`Message`
| フィールド | タイプ | 説明 |
|---|---|---|
id |
str |
メッセージID。 |
channel_id |
str |
チャンネルID。 |
server_id |
str | None |
サーバーID。 |
author |
dict | None |
{ "id", "username", "display_name", "avatar_url", "is_bot" }. |
content |
str |
メッセージテキスト。 |
reply_to_id |
str | None |
このメッセージに返信するメッセージ(該当する場合)。 |
mentions |
list |
言及されたユーザー。 |
attachment |
dict | None |
メッセージにファイルがある場合の{ "url", "type" } |
created_at |
str | None |
ISOタイムスタンプ。 |
edited_at |
str | None |
最後の編集時のISOタイムスタンプ。 |
display_id |
int | None |
順次表示番号。 |
author_is_bot |
bool |
送信者がボットであった場合(プロパティ)は真です。 |
方法 — message.reply(content)は同じチャンネルで返信します。
方法
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
エラー
クライアントは、.statusと.bodyを使用してDisbandErrorの下位クラスを作成します。
| エラー | いつ |
|---|---|
AuthError |
401 — 無効または取り消されたトークンです。ゲートウェイループはこの時点で停止します。 |
PermissionError |
403 — 範囲または役割の権限がありません。 |
RateLimitError |
429 — retry_after秒を含みます。 |
HttpError |
他の2xx以外のステータス。 |
内部的には、クライアントはAPIリファレンスの上に薄いラップラーです。REST.get/post/patch/deleteとAuthorization: Bot <token>があります。
Disband