botx-api
Описание
Обертка для api eXpress
Использование
Добавьте в Cargo.toml
= { = "*", = ["anthill-di"] }
Доступны следующие features:
botx-api-v-all - включение фич всех версий (default)
botx-api-v2 - включает все апи 2ой версии
botx-api-v3 - включает все апи 3ой версии
botx-api-v4 - включает все апи 4ой версии
anthill-di - добавляет зависимость от anthill-di и async-trait-with-sync (добавляет конструктор регистрации BotXApiContext в anthill-di)
token - включить апи аутентификации бота
notifications-internal - включить апи отправки события (боту)
notifications-direct - включить апи отправки события (сообщения)
events-edit_event - включить апи редактирования события (сообщения)
events-reply_event - включить апи ответа на событие (сообщение)
events-status - включить апи запроса состояния события
events-typing - включить апи включения состояния печати
events-stop_typing - включить апи остановки состояния печати
files-upload - включить апи загрузки фала
files-download - включить апи скачивания фала
stickers-new_sticker_pack - включить апи создания набора стикеров
stickers-sticker_packs_list - включить апи запроса списка наборов стикеров
stickers-add_sticker - включить апи добавления набора стикеров
stickers-get_sticker_pack - включить апи запроса информации о наборе стикеров
stickers-get_sticker - включить апи запроса информации о стикере
stickers-update_sticker_pack - включить апи обновления набора стикеров
stickers-delete_sticker - включить апи удаления стикера
stickers-delete_sticker_pack - включить апи удаления набора стикеров
Использование
Для использования создайте объект BotXApiContext
- Через метод new - с настройками клиента по умолчанию и конфигурацией бота
- Через метод from_client - с настроенным reqwest::async_impl::client::Client и конфигурацией бота
- Через метод from_env_with_default_client - с настройками клиента по умолчанию и конфигурацией бота из переменных окружения
- Через метод from_env - с настроенным reqwest::async_impl::client::Client и конфигурацией бота из переменных окружения
- Через регистрацию в anthill_di - зарегистрируйте BotXApiContext в контексте di методом extensions::IBotXApiContextExt::register_botx_api_context, опционально зарегистрируйте объекты BotXApiContextConfiguration как Singleton, reqwest::async_impl::client::Client, ApiEndpoints иначе будут взяты дефолтные настройки (конфигурация бота из переменных окружения)
Настройки бота берутся из переменных окружения:
- BOTX_API_CTS_URL - url cts сервера
- BOTX_API_BOT_ID - id бота
- BOTX_API_BOT_SECRET_KEY - секретный ключ бота
Все модели реализуют паттерн builder. Пример использования:
let internal_notification_request = default
.with_group_chat_id
.with_data
.with_opts
.build
.expect;
Для автоматического обновления авторизации добавлен метод retry_with_auth:
let internal_notification_request = default
.with_group_chat_id
.with_data
.with_opts
.build
.expect;
let internal_notification_result = retry_with_auth.await;
При регистрации через anthill-di можно зарегистрировать свой объект ApiEndpoints, что позволяет менять api (бесполезно, но возможно)
Логика пишет логи через crate log. Включите логирование чтобы лучше понять работу вашего приложения
Вклад
Откройте issue с вопросом или предложением
Лицензия
MIT, можно использовать в любых целях
Статус проекта
| Состояние | Метод | АPI | Описание |
|---|---|---|---|
| ✅ | GET | /api/v2/botx/bots/:bot_id/token | |
| ❌ | POST | /api/v3/botx/notification/callback/direct | Отправка директ нотификации в чат (Deprecated) |
| ✅ | POST | /api/v4/botx/notifications/internal | Отправка внутренней бот нотификации |
| ✅ | POST | /api/v4/botx/notifications/direct | Отправка директ нотификации в чат |
| ✅ | POST | /api/v3/botx/events/edit_event | Редактирование события |
| ✅ | POST | /api/v3/botx/events/reply_event | Ответ (reply) на сообщение |
| ✅ | GET | /api/v3/botx/events/:sync_id/status | Статус сообщения |
| ✅ | POST | /api/v3/botx/events/typing | Отправка typing |
| ✅ | POST | /api/v3/botx/events/stop_typing | Отправка stop_typing |
| ❌ | GET | /api/v3/botx/chats/list | Получение списка чатов бота |
| ❌ | GET | /api/v3/botx/chats/info | Получение информации о чате |
| ❌ | POST | /api/v3/botx/chats/add_user | Добавление юзеров в чат |
| ❌ | POST | /api/v3/botx/chats/remove_user | Удаление юзеров из чата |
| ❌ | POST | /api/v3/botx/chats/add_admin | Добавление администратора в чат |
| ❌ | POST | /api/v3/botx/chats/stealth_set | Включение стелс режима в чате |
| ❌ | POST | /api/v3/botx/chats/stealth_disable | Отключение стелс режима в чате |
| ❌ | POST | /api/v3/botx/chats/create | Создание чата |
| ❌ | POST | /api/v3/botx/chats/pin_message | Закрепление сообщения в чате |
| ❌ | POST | /api/v3/botx/chats/unpin_message | Открепление сообщения в чате |
| ❌ | GET | /api/v3/botx/users/by_email | Поиск данных юзера по его почте (Deprecated) |
| ❌ | POST | /api/v3/botx/users/by_email | Поиск данных юзеров по их почтам |
| ❌ | GET | /api/v3/botx/users/by_huid | Поиск данных юзера по его huid |
| ❌ | GET | /api/v3/botx/users/by_login | Поиск данных юзера по его ad логину и ad домену |
| ❌ | GET | /api/v3/botx/users/by_other_id | Поиск данных юзера по дополнительному идентификатору |
| ❌ | GET | /api/v3/botx/users/users_as_csv | Получение списка пользователей на CTS |
| ❌ | GET | /api/v3/botx/users/update_profile | Обновление профиля юзера |
| ❌ | GET | /api/v3/botx/smartapps/list | Получение списка smartapp на CTS |
| ❌ | POST | /api/v3/botx/smartapps/event | Отправка smartapp события |
| ❌ | POST | /api/v3/botx/smartapps/notification | Отправка smartapp нотификации |
| ❌ | POST | /api/v3/botx/smartapps/upload_file | Загрузка smartapp файла |
| ✅ | GET | /api/v3/botx/stickers/packs | Получение списка наборов стикеров |
| ✅ | GET | /api/v3/botx/stickers/packs/:pack_id | Получение набора стикеров |
| ✅ | GET | /api/v3/botx/stickers/packs/:pack_id/stickers/:sticker_id | Получение стикера из набора стикеров |
| ✅ | POST | /api/v3/botx/stickers/packs | Создание набора стикеров |
| ✅ | POST | /api/v3/botx/stickers/packs/:pack_id/stickers | Добавление стикера в набор стикеров |
| ✅ | PUT | /api/v3/botx/stickers/packs/:pack_id | Редактирование набора стикеров |
| ✅ | DELETE | /api/v3/botx/stickers/packs/:pack_id | Удаление набора стикеров |
| ✅ | DELETE | /api/v3/botx/stickers/packs/:pack_id/stickers/:sticker_id | Удаление стикера из набора стикеров |
| ✅ | GET | /api/v3/botx/files/download | Скачивание файла |
| ✅ | POST | /api/v3/botx/files/upload | Загрузка файла |