Документация AstrixRU
В этой документации расписаны все пути API, сокеты и официальные библиотеки для создания ботов.
HTTP API
Методы для взаимодействия с сервером. Важно: Параметры, отмеченные как "Необходимо", передаются в Body запроса.
POST /api/bot/login
Необходимо:
token — токен для входа в бота.
GET /api/conversations
Получить переписки бота.
GET /api/friends/global-search
Необходимо:
query — найти человека по глобальному поиску.
GET /api/friends/list
Получить список заявок в друзья и друзей.
POST /api/friends/send-request
Необходимо:
targetNickname — отправить запрос в друзья.
POST /api/friends/accept-request
Необходимо:
senderNickname — принять запрос от человека.
POST /api/friends/decline-request
Необходимо:
senderNickname — отклонить запрос от человека.
POST /api/friends/remove
Необходимо:
targetNickname — удалить человека из друзей.
GET /api/music/list
Получить 20 последних треков.
GET /api/profile/nickname
Получить профиль пользователя.
Socket Events
События для работы в реальном времени.
join_chat
Подключает к комнате чата.
Payload:
chatId
send_message
Отправляет сообщение.
Payload:
{ chatId, text/file }
delete_message
Удаляет сообщение (только своё).
Payload:
chatId, messageTimestamp
edit_message
Редактирует сообщение.
Payload:
chatId, messageTimestamp, newText
forward_message
Пересылает сообщение.
Payload:
fromChatId, toChatId, messageTimestamp
react_to_message
Добавляет/удаляет реакцию.
Payload:
chatId, messageTimestamp, emoji
pin_message
Закрепляет сообщение.
Payload:
chatId, messageTimestamp
unpin_message
Открепляет сообщение.
Payload:
chatId, messageTimestamp
typing
Статус "печатает".
Payload:
chatId
stop_typing
Убирает статус "печатает".
Payload:
chatId
call-user
Предложение звонка (WebRTC offer).
Payload:
targetNickname, offer
make-answer
Ответ на звонок (WebRTC answer).
Payload:
targetNickname, answer
ice-candidate
Обмен P2P кандидатами.
Payload:
targetNickname, candidate
wallet_updated
Входящий перевод средств.
Data:
newBalance, message, senderInfo, amountPython — AstrixLibrary
Официальная библиотека для Python.
Установка
Terminal
pip install astrixlibrary
Быстрый старт
main.py
from AstrixLibrary import AstrixBot import time bot = AstrixBot(token="ВАШ_ТОКЕН") @bot.newCommand("/ping") def ping(ctx): ctx.send("Pong!") bot.login() bot.connect() bot.run_forever()
API Библиотеки
- AstrixBot(token) — Конструктор.
- login() — Авторизация (REST API). Получает sessionToken.
- connect() — Подключение к Socket.IO.
- run_forever() — Удерживает процесс запущенным.
- newCommand("cmd", description="...") — Декоратор для команд.
- get_conversations() — Получить список чатов.
- find_user() — Найти информацию о пользователе.
- get_music(page=1) — Получить треки (пагинация).
Контекст команды (ctx)
Объект ctx передается в функцию команды:
- ctx.send(text, buttons=[...]) — Отправить сообщение.
Параметрbuttonsпринимает список кнопок. Поля кнопки:text,url(опц.),func(опц. callback),style("link"/"danger"/"primary"). - ctx.start_typing() / ctx.stop_typing() — Индикация ввода.
- ctx.delete_message(timestamp) — Удалить сообщение.
- ctx.react(timestamp, emoji) — Поставить реакцию.
- ctx.pin(timestamp) / ctx.unpin(timestamp) — (От)крепить сообщение.
- ctx.edit(timestamp, new_text) — Редактировать сообщение.
Примеры
Аргументы
@bot.newCommand('/add') def add(ctx, a, b): res = int(a) + int(b) ctx.send(f"Результат: {res}")
Кошелек (Событие)
def on_wallet_updated(new_balance, message, sender_info, amount): print(f"Пришло {amount} ключей от {sender_info['displayName']}") print(f"Баланс: {new_balance}") bot.on_wallet_updated = on_wallet_updated
Полный пример
from AstrixLibrary import AstrixBot import time bot = AstrixBot(token="TOKEN") bot.login() @bot.newCommand("/ping") def ping(ctx): ctx.send("Pong!") @bot.newCommand("/test") def test(ctx): ctx.start_typing() time.sleep(2) ctx.stop_typing() ctx.send("Готово!") bot.connect() bot.run_forever()
Node.js — AstrixLibrary
Официальная библиотека для JavaScript.
Установка
Terminal
npm install astrixlibrary
Быстрый старт
index.js
import { AstrixBot } from 'astrixlibrary'; const bot = new AstrixBot('YOUR_TOKEN'); bot.onCommand('!ping', (ctx) => { ctx.send('Pong!'); }, "Ping command"); async function start() { await bot.login(); bot.connect(); } start();
API Библиотеки
- AstrixBot(token) — Конструктор.
- login() — Авторизация.
- connect() — Подключение сокетов.
- runForever() — Поддержка процесса.
- onCommand(cmd, handler, desc) — Регистрация команды.
- await getConversations() — Получить чаты.
Ответ: [{"chatId": "...", "withUser": {"nickname": "...", "avatar": "..."}}]
- await findUser(nickname) — Инфо о юзере.
Ответ: {nickname, display_name, aliases, avatar, is_admin, badges, ...}
- await getMusic(page) — Получить треки.
Контекст (ctx)
- ctx.send(text, buttons=[...]) — Отправить сообщение.
Параметрbuttonsпринимает список кнопок. Поля кнопки:text,url(опц.),func(опц. callback),style("link"/"danger"/"primary"). - ctx.startTyping() / ctx.stopTyping()
- ctx.deleteMessage(timestamp)
- ctx.react(timestamp, emoji)
- ctx.pin(timestamp) / ctx.unpin(timestamp)
- ctx.edit(timestamp, new_text)
Примеры
Аргументы
bot.onCommand('!say', (ctx, ...args) => { const text = args.join(' '); ctx.send(text || 'Что сказать?'); });
Кошелек
bot.onWalletUpdated = ({ newBalance, message, senderInfo, amount }) => { console.log(`[WALLET] +${amount} от ${senderInfo.nickname}. Сообщение: ${message}`); };
Отладка ответов
Как понять, что возвращает метод?
bot.onCommand('!debug', async (ctx) => { const user = await bot.findUser("admin"); console.log(user); // Смотрим структуру в консоли });