ຄູ່ມື Bot API
ຈາກການສ້າງບັອດຫາການເຊື່ອມຕໍ່ໂປຣແກຣມ
ຄູ່ມື BotMother, ຂໍ້ຄວາມ, ຄັດລອກລະຫັດ ແລະ ປຸ່ມຕອບກັບ. ຕົວຢ່າງໃຊ້ຄ່າຈຳລອງ.
ພາບລວມ ແລະ ຄວາມສາມາດ
#ວິທີການສາທາລະນະມີ getMe, sendMessage, getUpdates. ສົ່ງຂໍ້ຄວາມສ່ວນຕົວ/ກຸ່ມ ແລະ ຮັບເຫດການທີ່ອາດມີເນື້ອຫາບໍ່ແມ່ນຂໍ້ຄວາມ.
ໃຊ້ copy_text ສະແດງໄອຄອນຄັດລອກລະຫັດ ແລະ reply_markup ສະແດງປຸ່ມຂໍ້ຄວາມໃຕ້ຊ່ອງພິມໃນແຊັດສ່ວນຕົວ.
ໂດເມນນີ້ເກັບຄູ່ມື. API ຍັງຢູ່ im.ez7.life ໃຕ້ /bot-api/. ຄັດລອກ ID ຜູ້ຮັບທີ່ ຕັ້ງຄ່າ → ລາຍລະອຽດບັນຊີ → ID. ຕອບດ້ວຍ message.chat.id ທີ່ຮັບ; ໃນກຸ່ມມັນເປັນ ID ກຸ່ມ.
https://im.ez7.life/bot-api/<BOT_TOKEN>/<METHOD>ເລີ່ມຕົ້ນໄວ
#- ຄົ້ນຫາ ແລະ ເພີ່ມ
@BotMother, ເປີດຈັດການບັອດຢູ່ເທິງການສົນທະນາ. - ສ້າງບັອດ, ຄັດລອກ Token ແລະ ເກັບໃນຕົວແປຝັ່ງເຊີບເວີ
EZLIFE_BOT_TOKEN. - ເອີ້ນ
getMeກວດຂໍ້ມູນ, ແລ້ວເອີ້ນsendMessageດ້ວຍ ID ຜູ້ຮັບ. - ດຶງ
getUpdatesເປັນໄລຍະ; ບັນທຶກ offset ຕໍ່ໄປຫຼັງຈາກປະມວນຜົນສຳເລັດ.
python3 bot.pyຈັດການຜ່ານ BotMother
#ຊື່ສະແດງ 1–64 ຕົວອັກສອນ. ຄຳນຳໜ້າບັນຊີໃນຟອມ 3–28 ຕົວ, ເລີ່ມດ້ວຍອັກສອນອັງກິດ, ໃຊ້ອັກສອນ, ຕົວເລກ ແລະ ຂີດລຸ່ມ; ຟອມເພີ່ມ _bot. ກວດວ່າຊື່ວ່າງກ່ອນສ້າງ.
ຄົ້ນຫາບັອດ, ເບິ່ງ ID, ສະຖານະ, ເວລາສ້າງ ແລະ **** ກັບ 6 ຕົວທ້າຍ Token; ອອກໃໝ່ ຫຼື ຖອນ Token ໄດ້. ຜູ້ດູແລກຳນົດຈຳນວນບັອດ.
| ຄຳສັ່ງ | ໜ້າທີ່ |
|---|---|
/start | ສະແດງວິທີຈັດການ |
/newbot | ເລີ່ມສ້າງບັອດ |
/mybots | ລາຍຊື່ບັອດຂອງທ່ານ |
/token @username | ອອກ Token ໃໝ່ ຍົກເລີກອັນເກົ່າ |
/revoke @username | ຖອນ Token ປັດຈຸບັນ |
/cancel | ຍົກເລີກການສ້າງ |
/help | ສະແດງຊ່ວຍເຫຼືອ |
Token ແລະ ຄວາມປອດໄພ
#Token ເຕັມສະແດງຕອນສ້າງ ຫຼື ອອກໃໝ່ເທົ່ານັ້ນ. ມັນເປັນລະຫັດຜ່ານບັອດ; ເກັບຝັ່ງເຊີບເວີ, ຫ້າມໃສ່ເວັບ, ແອັບ, ຄັງສາທາລະນະ ຫຼື ບັນທຶກ.
ອອກໃໝ່ເຮັດໃຫ້ Token ເກົ່າໝົດຜົນທັນທີ; ຖອນແລ້ວຈະເອີ້ນຈາກພາຍນອກບໍ່ໄດ້. ສ່ວນທ້າຍທີ່ປິດບັງກູ້ຄືນບໍ່ໄດ້; ຖ້າຫາຍໃຫ້ອອກໃໝ່ແລະແກ້ໂປຣແກຣມ.
Token ເກົ່າຈະເກັບສ່ວນທ້າຍເມື່ອເອີ້ນ Bot API ຖືກຕ້ອງຄັ້ງຕໍ່ໄປ. API Token ໃນລາຍລະອຽດບັນຊີໃຊ້ກັບ API ບັນຊີ; Bot API ນີ້ໃຊ້ Token ຈາກ BotMother.
getMe · ຂໍ້ມູນບັອດ
#/bot-api/<BOT_TOKEN>/getMeບໍ່ຕ້ອງມີພາຣາມິເຕີທຸລະກິດ. ສົ່ງຄືນ ID ບັອດ, ຊື່ສະແດງ, ຊື່ບັນຊີ ແລະ ຄວາມສາມາດກຸ່ມ. ໃຊ້ກວດ Token.
curl --fail-with-body --request POST \
"https://im.ez7.life/bot-api/${EZLIFE_BOT_TOKEN}/getMe" \
--header 'Content-Type: application/json' --data '{}'{
"ok": true,
"result": {
"id": "1000000000",
"is_bot": true,
"display_name": "Example Bot",
"username": "example_bot",
"can_join_groups": true,
"can_read_all_group_messages": true
}
}sendMessage · ສົ່ງຂໍ້ຄວາມ
#/bot-api/<BOT_TOKEN>/sendMessageໃຊ້ POST application/json. ສົ່ງ chat_id ເປັນສະຕຣິງສະເໝີ: ID ຜູ້ຮັບສຳລັບສ່ວນຕົວ, ID ກຸ່ມພ້ອມ chat_type: "group" ສຳລັບກຸ່ມ.
ຂໍ້ຄວາມ 1–5000 ຕົວ, ຕັດຊ່ອງວ່າງຫົວທ້າຍ. ເກັບ message_id. ບໍ່ມີຄີປ້ອງກັນສົ່ງຊ້ຳ; ຖ້າໝົດເວລາໃຫ້ກວດຜົນກ່ອນສົ່ງອີກ.
| ພາຣາມິເຕີ | ປະເພດ | ຈຳເປັນ | ຄຳອະທິບາຍ |
|---|---|---|---|
chat_id | string | ແມ່ນ | ID ຜູ້ຮັບ ຫຼື ID ກຸ່ມ, ເປັນສະຕຣິງສະເໝີ. |
text | string | ແມ່ນ | ຂໍ້ຄວາມ 1–5000 ຕົວ. |
chat_type | string | ບໍ່ | ຄ່າເລີ່ມ private; ກຸ່ມໃຊ້ group, ຮັບ supergroup ໄດ້. |
copy_text | string | ບໍ່ | ສະຕຣິງເລກ 4–12 ຫຼັກປາກົດຄົບໃນ text. |
reply_markup | object / JSON string | ບໍ່ | ອອບເຈັກແປ້ນ ຫຼື ສະຕຣິງ JSON, ບໍ່ບັງຄັບ. |
curl --fail-with-body --request POST \
"https://im.ez7.life/bot-api/${EZLIFE_BOT_TOKEN}/sendMessage" \
--header 'Content-Type: application/json' --data-binary @- <<'JSON'
{
"chat_id": "USER_ID",
"text": "ດຳເນີນຄຳສັ່ງຊື້ແລ້ວ."
}
JSON{
"chat_id": "GROUP_ID",
"chat_type": "group",
"text": "ດຳເນີນຄຳສັ່ງຊື້ແລ້ວ."
}{
"ok": true,
"result": {
"message_id": "EXAMPLE_MESSAGE_ID",
"date": 1794297600,
"chat": {
"id": "USER_ID",
"type": "private"
},
"text": "ດຳເນີນຄຳສັ່ງຊື້ແລ້ວ."
}
}ສົ່ງສຳເລັດຄືນ ok: true ແລະ result; ລະຫັດມີ copy_text, ເມນູມີ reply_markup ແລະ reply_keyboard_revision. ຮັບຄືນອາເຣ result; ບໍ່ມີເຫດການແມ່ນ result: [].
ຄັດລອກລະຫັດຢືນຢັນ
#ໃສ່ຊື່ລະບົບ, ຈຸດປະສົງ ແລະ ອາຍຸໃນຂໍ້ຄວາມ, ແລ້ວເພີ່ມ copy_text ເປັນສະຕຣິງເລກ ASCII 4–12 ຫຼັກທີ່ປາກົດຄົບໃນ text. ສະຕຣິງຮັກສາເລກສູນນຳໜ້າ.
ໄອຄອນຄັດລອກພຽງລະຫັດ. ໂປຣແກຣມຕ້ອງສ້າງ, ກວດ ແລະ ກຳນົດອາຍຸເອງ; ຟິວນີ້ຄວບຄຸມການສະແດງ/ຄັດລອກ. ແອັບເກົ່າຍັງອ່ານຂໍ້ຄວາມໄດ້.
{
"chat_id": "USER_ID",
"text": "ລະຫັດເຂົ້າລະບົບຕົວຢ່າງ: 003812, ໃຊ້ໄດ້ 5 ນາທີ.",
"copy_text": "003812"
}ແປ້ນປຸ່ມຕອບກັບ
#ແປ້ນປຸ່ມຂໍ້ຄວາມຫຼາຍແຖວ. ກົດແລ້ວສົ່ງຊື່ປຸ່ມເປັນຂໍ້ຄວາມທຳມະດາ; ຈັດການຜ່ານ message.text ໃນ getUpdates.
ມີ 1–8 ແຖວ, 1–4 ປຸ່ມຕໍ່ແຖວ, ລວມບໍ່ເກີນ 24. ຊື່ 1–64 ຕົວ, ຫ້າມວ່າງ, ຂຶ້ນແຖວໃໝ່ ຫຼື ອັກສອນຄວບຄຸມ. ປຸ່ມເປັນສະຕຣິງ ຫຼື ອອບເຈັກມີແຕ່ text.
ບໍ່ສົ່ງ reply_markup ຈະເກັບແປ້ນເກົ່າ; ແປ້ນໃໝ່ແທນເກົ່າ. ສົ່ງ remove_keyboard: true ຢ່າງດຽວເພື່ອລຶບແປ້ນແລະປຸ່ມເປີດ.
ຜູ້ໃຊ້ຊ່ອນ/ເປີດໄດ້. ແປ້ນໃຊ້ຄັ້ງດຽວຊ່ອນຫຼັງສົ່ງປຸ່ມສຳເລັດ; ລຸ້ນໃໝ່ເປີດອີກ. ສະຖານະແຍກຕາມບັອດ/ຜູ້ໃຊ້, ກວດປະມານທຸກ 5 ວິນາທີໃນແຊັດທີ່ເປີດ.
ແປ້ນໃຊ້ໄດ້ສະເພາະສ່ວນຕົວ; ກຸ່ມມີ reply_markup ຈະໄດ້ 422. text ຍັງຈຳເປັນ. ໃຊ້ JSON true/false ບໍ່ແມ່ນສະຕຣິງ. ຄຸນສົມບັດແປ້ນ/ປຸ່ມທີ່ບໍ່ຮອງຮັບຈະປະຕິເສດ. reply_markup ແບບສະຕຣິງ JSON ສູງສຸດ 16 KiB.
| ພາຣາມິເຕີ | ປະເພດ | ຈຳເປັນ | ຄຳອະທິບາຍ |
|---|---|---|---|
reply_markup | object / JSON string | ບໍ່ | ອອບເຈັກແປ້ນ ຫຼື ສະຕຣິງ JSON, ບໍ່ບັງຄັບ. |
keyboard | array[] | ແມ່ນ | ອາເຣສອງມິຕິ, ແຕ່ລະອາເຣຍ່ອຍເປັນໜຶ່ງແຖວ. |
resize_keyboard | boolean | ບໍ່ | ຄ່າເລີ່ມ true ປຸ່ມນ້ອຍ; false ປຸ່ມສູງກວ່າ. |
one_time_keyboard | boolean | ບໍ່ | ຄ່າເລີ່ມ false; true ຊ່ອນຫຼັງສົ່ງປຸ່ມສຳເລັດ. |
remove_keyboard | boolean | ບໍ່ | true ລຶບແປ້ນ, ຫ້າມຮ່ວມກັບຕົວເລືອກແປ້ນອື່ນ. |
{
"chat_id": "USER_ID",
"text": "ເລືອກບໍລິການ:",
"reply_markup": {
"keyboard": [
[
{
"text": "ຕັ້ງຄ່າພາສາ"
},
{
"text": "ຕິດຕາມພັດສະດຸ"
}
],
[
{
"text": "ຕັ້ງຄ່າແຈ້ງເຕືອນ"
},
{
"text": "ປ້ອນເລກພັດສະດຸ"
}
]
],
"resize_keyboard": true,
"one_time_keyboard": false
}
}{
"chat_id": "USER_ID",
"text": "ເລືອກບໍລິການ:",
"reply_markup": {
"keyboard": [
[
"ຕັ້ງຄ່າພາສາ",
"ຕິດຕາມພັດສະດຸ"
]
],
"one_time_keyboard": true
}
}{
"chat_id": "USER_ID",
"text": "ດຳເນີນການສຳເລັດ.",
"reply_markup": {
"remove_keyboard": true
}
}getUpdates · ຮັບຂໍ້ຄວາມ
#/bot-api/<BOT_TOKEN>/getUpdatesດຶງແບບສັ້ນ: ບໍ່ມີຂໍ້ຄວາມຈະຄືນອາເຣວ່າງທັນທີ. ເອີ້ນທຸກ 1–3 ວິນາທີ, ເພີ່ມເວລາລໍຖ້າເມື່ອຜິດພາດ. ບໍ່ມີ webhook ສາທາລະນະ ຫຼື ດຶງແບບຍາວ.
ຫຼັງສຳເລັດຕັ້ງ offset = update_id ສຸດທ້າຍ + 1; ເຫດການກ່ອນໜ້າຖືວ່າຮັບຮູ້. ຖ້າລົ້ມເຫຼວຄົງ offset ເກົ່າ, ປ້ອງກັນຊ້ຳດ້ວຍ update_id ຫຼື ຄີທຸລະກິດ.
ປະສານໂປຣແກຣມຮັບບັອດດຽວກັນ ເພື່ອບໍ່ໃຫ້ເລື່ອນ offset ຂອງກັນ. ເຫດການອື່ນເບິ່ງ content_type ແລະ raw_content.
| ພາຣາມິເຕີ | ປະເພດ | ຈຳເປັນ | ຄຳອະທິບາຍ |
|---|---|---|---|
offset | integer | ບໍ່ | ID ເຫດການຕໍ່ໄປບໍ່ຕິດລົບ, ຄ່າເລີ່ມ 0. |
limit | integer | ບໍ່ | ຄັ້ງລະ 1–100 ເຫດການ, ຄ່າເລີ່ມ 100. |
curl --fail-with-body --request POST \
"https://im.ez7.life/bot-api/${EZLIFE_BOT_TOKEN}/getUpdates" \
--header 'Content-Type: application/json' \
--data '{"offset": 0, "limit": 100}'{
"ok": true,
"result": [
{
"update_id": 120,
"message": {
"message_id": "EXAMPLE_MESSAGE_ID",
"date": 1794297600,
"chat": {
"id": "1000000001",
"type": "private"
},
"from": {
"id": "1000000001",
"display_name": "Example User"
},
"text": "ຕັ້ງຄ່າພາສາ",
"content_type": 101,
"raw_content": "{\n \"content\": \"ຕັ້ງຄ່າພາສາ\"\n}"
}
}
]
}| ພາຣາມິເຕີ | ຄຳອະທິບາຍ |
|---|---|
update_id | ID ເພີ່ມຂຶ້ນສຳລັບຢືນຢັນການປະມວນຜົນ. |
message_id | ID ຂໍ້ຄວາມແພລດຟອມ. |
date | ເວລາ Unix ໜ່ວຍວິນາທີ. |
chat | ID ຜູ້ສົ່ງສ່ວນຕົວ ຫຼື ID ກຸ່ມ ພ້ອມ private/group. |
from | ID ແລະ ຊື່ສະແດງຜູ້ສົ່ງຕົວຈິງ. |
text | ເນື້ອຫາຂໍ້ຄວາມ; ປະເພດອື່ນອາດວ່າງ. |
content_type | ປະເພດເນື້ອຫາ, 101 ແມ່ນຂໍ້ຄວາມ. |
raw_content | ເນື້ອຫາດັ້ງເດີມຂອງຮູບ, ໄຟລ໌ ແລະ ເຫດການອື່ນ. |
ໂປຣແກຣມ Python ສະບັບເຕັມ
#ຕົວຢ່າງເຕັມໃຊ້ແຕ່ໄລບຣາຣີມາດຕະຖານ Python, ຮັບ /start, /ping ແລະ ຊື່ປຸ່ມ, ເກັບ offset. ໃຫ້ແລ່ນໃນໂຟນເດີສ່ວນຕົວ.
ແທນທີ່ປຸ່ມຕົວຢ່າງດ້ວຍວຽກຈິງ. ຄຳສັ່ງຊື້/ຈ່າຍເງິນຕ້ອງປ້ອງກັນຊ້ຳກ່ອນເກັບຄວາມຄືບໜ້າ.
import json
import os
import time
import urllib.error
import urllib.request
from pathlib import Path
TOKEN = os.environ["EZLIFE_BOT_TOKEN"]
BASE = "https://im.ez7.life/bot-api/" + TOKEN
OFFSET_FILE = Path("bot-offset.json")
MENU = [
[
"ຕັ້ງຄ່າພາສາ",
"ຕິດຕາມພັດສະດຸ"
],
[
"ຕັ້ງຄ່າແຈ້ງເຕືອນ",
"ປ້ອນເລກພັດສະດຸ"
]
]
class ApiFailure(Exception):
pass
class NoRedirect(urllib.request.HTTPRedirectHandler):
def redirect_request(self, *args):
return None
HTTP = urllib.request.build_opener(NoRedirect())
def api(method, payload):
req = urllib.request.Request(
BASE + "/" + method,
data=json.dumps(payload, ensure_ascii=False).encode("utf-8"),
headers={"Content-Type": "application/json"},
method="POST",
)
try:
with HTTP.open(req, timeout=20) as response:
body = json.load(response)
except urllib.error.HTTPError as error:
raise ApiFailure("HTTP " + str(error.code)) from None
except (urllib.error.URLError, TimeoutError, OSError, ValueError):
raise ApiFailure("Network or response failure") from None
if not body.get("ok"):
raise ApiFailure("API error " + str(body.get("error_code", "unknown")))
return body["result"]
def handle(update):
message = update.get("message", {})
chat = message.get("chat", {})
text = message.get("text", "")
if not chat.get("id"):
return
payload = {"chat_id": str(chat["id"]),
"chat_type": chat.get("type", "private")}
if text == "/start" and payload["chat_type"] == "private":
payload.update(text="ເລືອກບໍລິການ:", reply_markup={
"keyboard": MENU, "resize_keyboard": True,
"one_time_keyboard": False,
})
elif text == "/ping":
payload["text"] = "pong"
elif text in [label for row in MENU for label in row]:
payload["text"] = "ດຳເນີນການສຳເລັດ."
else:
return
api("sendMessage", payload)
def save_offset(value):
temp = OFFSET_FILE.with_suffix(".tmp")
fd = os.open(temp, os.O_WRONLY | os.O_CREAT | os.O_TRUNC, 0o600)
with os.fdopen(fd, "w", encoding="utf-8") as stream:
json.dump(value, stream)
stream.flush()
os.fsync(stream.fileno())
os.replace(temp, OFFSET_FILE)
def main():
offset = json.loads(OFFSET_FILE.read_text()) if OFFSET_FILE.exists() else 0
if isinstance(offset, bool) or not isinstance(offset, int) or offset < 0:
raise ValueError("Invalid offset file")
delay = 1
while True:
try:
updates = api("getUpdates", {"offset": offset, "limit": 100})
for update in updates:
handle(update)
next_offset = int(update["update_id"]) + 1
save_offset(next_offset)
offset = next_offset
delay = 1
time.sleep(2)
except (ApiFailure, OSError, ValueError):
print("Processing failed; offset retained. Check configuration.", flush=True)
time.sleep(delay)
delay = min(delay * 2, 30)
if __name__ == "__main__":
try:
main()
except KeyboardInterrupt:
passກຸ່ມ ແລະ ຂອບເຂດຂໍ້ຄວາມ
#ບັອດຕ້ອງເຂົ້າກຸ່ມກ່ອນ. ຄ່າເລີ່ມຕົ້ນໃຫ້ເຈົ້າຂອງອະນຸມັດ; ກວດທີ່ແຊັດບັອດ → ເພີ່ມເຕີມ → ຕັ້ງຄ່າບັອດ → ກຸ່ມທີ່ເຂົ້າຮ່ວມ.
ໂໝດສ່ວນຕົວກຸ່ມປິດໂດຍຄ່າເລີ່ມ; ກຸ່ມທີ່ເປີດຮັບບໍ່ຕ້ອງ @ບັອດ. ຂໍ້ຄວາມຕົນເອງບໍ່ເຂົ້າຄິວຕົນ; ແຈ້ງການວົງຈອນກຸ່ມບໍ່ແມ່ນຂໍ້ຄວາມທຳມະດາ.
ສະວິດຮັບແຕ່ລະກຸ່ມຄວບຄຸມເຫດການ, ສົ່ງຕໍ່ ແລະ ຕອບອັດຕະໂນມັດ. ບັອດຂອງຜູ້ໃຊ້ສົ່ງຕໍ່ຂໍ້ຄວາມກຸ່ມທີ່ເປີດໄປແຊັດເຈົ້າຂອງພ້ອມຊື່ກຸ່ມ. ສິດພາຍນອກຍັງຄວບຄຸມ API ແລະ ເຫດການ.
ຕັ້ງຄ່າບັອດ ແລະ ຕອບອັດຕະໂນມັດ
#ເຈົ້າຂອງເທົ່ານັ້ນຕັ້ງຄ່າອະນຸມັດກຸ່ມ, ເຂົ້າເຖິງພາຍນອກ, ຮັບລາຍກຸ່ມ ແລະ ຕອບຕາມຄຳສຳຄັນ. ປິດພາຍນອກຍັງເກັບ Token ແຕ່ປະຕິເສດ API.
ສູງສຸດ 50 ກົດ, ຄຳສຳຄັນ 1–100 ຕົວ, ຄຳຕອບ 1–2000. ກວດການມີຄຳຕາມລຳດັບໂດຍບໍ່ແຍກພິມໃຫຍ່/ນ້ອຍ, ຕອບດ້ວຍກົດທຳອິດທີ່ເປີດແລະກົງ.
ຕອບອັດຕະໂນມັດໃນແຊັດສ່ວນຕົວ/ກຸ່ມທີ່ເປີດຮັບ, ປ້ອງກັນບັອດຕອບຕໍ່ກັນ. AI API ຍັງເປັນແຜນ, ບໍ່ມີວິທີສາທາລະນະ.
ຈັດການຂໍ້ຜິດພາດ
#ຂໍ້ຜິດພາດເບື້ອງຕົ້ນເຊັ່ນ JSON ບໍ່ຖືກ ຫຼື ເນື້ອຫາໃຫຍ່ເກີນ ໃຊ້ errorCode ແລະ message. ຂໍ້ຜິດພາດ API ອື່ນໃຊ້ error_code ແລະ description. ກວດ HTTP ແລະ ok ກ່ອນ.
{
"ok": false,
"error_code": 422,
"description": "chat_id 与 1–5000 字的 text 为必填"
}| ສະຖານະ | ວິທີແກ້ໄຂ |
|---|---|
| 400 | JSON ບໍ່ຖືກ. ກວດລະຫັດອັກສອນ ແລະ ໄວຍາກອນ. |
| 401 | Token ບໍ່ຖືກ, ຖອນ, ອອກໃໝ່ ຫຼື ບັອດຖືກລະງັບ. ອັບເດດຂໍ້ມູນຮັບຮອງ. |
| 403 | ເຈົ້າຂອງປິດພາຍນອກ. ເປີດໃນຕັ້ງຄ່າບັອດ. |
| 404 | ກວດເສັ້ນທາງ /bot-api/, ຮູບແບບ Token ແລະ ຊື່ວິທີ. |
| 409 | ກຳລັງອັບເດດແປ້ນບັອດ/ຜູ້ໃຊ້ນີ້. ລໍຖ້າແລ້ວລອງໃໝ່. |
| 413 | ຄຳຮ້ອງຂໍເກີນ 1 MiB. ຫຼຸດຂະໜາດ. |
| 422 | ແກ້ພາຣາມິເຕີ, ລະຫັດ ຫຼື ໂຄງສ້າງແປ້ນ. |
| 500 | ຜິດພາດຊົ່ວຄາວ. ຄົງ offset ແລະ ເພີ່ມເວລາລໍ; ກວດຜົນສົ່ງກ່ອນລອງໃໝ່. |
ຂໍ້ຈຳກັດ ແລະ ການຮອງຮັບ
#ຄູ່ມືນີ້ອີງ API ປັດຈຸບັນ. ຍັງບໍ່ມີການສົ່ງສື່, ປຸ່ມ inline callback, ຂໍລາຍຊື່/ທີ່ຕັ້ງ ຫຼື webhook ສາທາລະນະ.
ແປ້ນຕ້ອງການ Web/H5 ລຸ້ນປັດຈຸບັນ. ແອັບທີ່ຝັງ H5 ເກົ່າຕ້ອງອັບເດດເພື່ອເຫັນປຸ່ມໃໝ່.
ຄຳຮ້ອງຂໍທັງໝົດສູງສຸດ 1 MiB. ປັບຄວາມຖີ່ຕາມພາລະຈິງ; ຄູ່ມືບໍ່ຮັບປະກັນອັດຕາຄົງທີ່. ສັນຍານຄວາມສາມາດກຸ່ມບໍ່ແທນການເຂົ້າຮ່ວມ, ອະນຸມັດ ແລະ ສິດຮັບ.