OnyxGram Developers
Bot API
HTTP API для ботов OnyxGram. Формат похож на Telegram Bot API: запросы идут на адрес https://dev-angel-7553.dev/bot<token>/METHOD, ответы приходят в JSON с полями ok и result.
База
getMe, getUpdates, webhook-и, отправка сообщений
Управление
copyMessage, forwardMessage, editMessageText, deleteMessage
Что добавлено сейчас
- editMessageText — редактирование текста отправленного ботом сообщения.
- deleteMessage — удаление сообщения бота из диалога.
- copyMessage — копирование поддерживаемого сообщения без подписи пересылки.
- forwardMessage — пересылка поддерживаемого сообщения.
- setWebhook / getWebhookInfo / deleteWebhook — доставка update-ов на HTTPS endpoint.
- sendChatAction — индикатор действия, например
typing. - getChat — базовая информация о чате.
Методы
getMeпроверить токен и получить данные ботаgetUpdateslong polling, offset/limit/timeoutsendMessageтекст до 4096 символовcopyMessageкопия из кэша Bot APIforwardMessageпересылка из кэша Bot APIsendChatActiontyping и другие действия клиентаgetChatprivate/group/supergroupeditMessageTextобновить текст сообщенияdeleteMessageудалить сообщениеsetWebhookHTTPS webhook для update-овdeleteWebhookвыключить webhookgetWebhookInfoстатус webhook-а и ошибки доставкиМинимальный пример
Бот получает новые сообщения через getUpdates и отвечает тем же текстом.
import time
import requests
TOKEN = "PASTE_BOT_TOKEN_HERE"
API = f"https://dev-angel-7553.dev/bot{TOKEN}"
offset = 0
while True:
updates = requests.post(
f"{API}/getUpdates",
json={"offset": offset, "timeout": 25, "limit": 100},
timeout=35,
).json()["result"]
for update in updates:
offset = update["update_id"] + 1
message = update.get("message") or {}
chat_id = message.get("chat", {}).get("id")
text = message.get("text")
if chat_id and text:
requests.post(f"{API}/sendMessage", json={
"chat_id": chat_id,
"text": f"Ты написал: {text}",
})
time.sleep(0.2)
Пример со всеми основными функциями
Показывает отправку текста, редактирование, действие в чате, копирование и удаление.
import requests
import time
TOKEN = "PASTE_BOT_TOKEN_HERE"
CHAT_ID = 123456789
API = f"https://dev-angel-7553.dev/bot{TOKEN}"
def call(method, payload=None):
response = requests.post(f"{API}/{method}", json=payload or {}, timeout=30)
data = response.json()
if not data.get("ok"):
raise RuntimeError(data)
return data["result"]
me = call("getMe")
print("bot:", me["username"])
call("sendChatAction", {"chat_id": CHAT_ID, "action": "typing"})
msg = call("sendMessage", {
"chat_id": CHAT_ID,
"text": "Привет из OnyxGram Bot API",
})
call("editMessageText", {
"chat_id": CHAT_ID,
"message_id": msg["message_id"],
"text": "Текст обновлён через editMessageText",
})
copy = call("copyMessage", {
"chat_id": CHAT_ID,
"from_chat_id": CHAT_ID,
"message_id": msg["message_id"],
})
time.sleep(2)
call("deleteMessage", {
"chat_id": CHAT_ID,
"message_id": copy["message_id"],
})
Webhook
Webhook должен быть HTTPS. Если webhook включён, OnyxGram будет отправлять update-ы POST-запросом на указанный URL.
curl -X POST "https://dev-angel-7553.dev/bot<TOKEN>/setWebhook" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/onyxgram-webhook"}'
curl "https://dev-angel-7553.dev/bot<TOKEN>/getWebhookInfo"
curl -X POST "https://dev-angel-7553.dev/bot<TOKEN>/deleteWebhook"