자동 번역이 페이지는 자동으로 번역되었습니다. 영어 원문이 기준입니다.이 페이지를 영어로 읽어보세요
Python 클라이언트 — `disband-bot`
공식적인 Python 클라이언트. 표준 라이브러리만 사용하므로 클라이언트 자체를 제외하고 설치할 것이 없습니다. 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 루트(사용자 지정 도메인을 위해 변경). |
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 |
메시지 아이디. |
channel_id |
str |
채널 아이디. |
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