Авторизация⚓︎
Библиотека поддерживает три способа авторизации бота на TrueConf Server:
| Способ | Метод | Когда использовать |
|---|---|---|
| По токену | Bot(server, token=...) | Токен получен заранее (вручную или через API) |
| По логину и паролю | Bot.from_credentials(...) | На сервере включена авторизация по логину и паролю |
| Через OAuth2 | Bot.from_oauth(...) | На сервере отключена авторизация по логину и паролю |
Авторизация по токену⚓︎
Получите токен, как описано в официальной документации API.
Рекомендуется хранить токен в переменной окружения или в .env-файле. Не забудьте добавить .env в .gitignore, если работаете с публичными репозиториями.
from os import getenv
TOKEN = getenv("TOKEN")
bot = Bot(server="video.example.com", token=TOKEN, dispatcher=dp)
Note
Токен действителен в течение одного месяца с момента создания. При этом уже авторизованное соединение продолжает работать до момента разрыва соединения, даже после истечения срока действия токена. Теоретически такое соединение может существовать годами.
Авторизация по логину и паролю⚓︎
Метод Bot.from_credentials() авторизует бота с помощью логина и пароля:
bot = Bot.from_credentials(
username="echo_bot",
password="123tr",
server="video.example.com",
dispatcher=dp,
)
Info
При каждом вызове from_credentials() бот обращается к серверу за получением нового токена. Срок жизни каждого токена — 1 месяц.
Ключевые параметры (после password — keyword-only):
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
dispatcher | Dispatcher | None | Dispatcher для регистрации обработчиков |
receive_unread_messages | bool | False | Получать ли непрочитанные сообщения при подключении |
receive_system_messages | bool | False | Получать ли системные сообщения |
skip_self_messages | bool | True | Игнорировать сообщения, отправленные самим ботом |
verify_ssl | bool | str | ssl.SSLContext | True | Проверка SSL-сертификата |
https | bool | True | Использовать HTTPS-протокол |
web_port | int | None | WebSocket-порт (по умолчанию 443 при HTTPS, иначе 4309) |
ws_max_retries | int | 5 | Максимум попыток подключения при сетевых ошибках |
ws_max_delay | int | 60 | Максимальная задержка между попытками (сек) |
timeout | float | int | 10.0 | Таймаут ожидания ответа сервера |
on_health_check | Callable | None | Callback при изменении состояния подключения |
Полный список параметров — в справочнике.
Если на сервере отключена авторизация по логину и паролю, метод выбросит PasswordAuthDisabledError — используйте Bot.from_oauth().
Авторизация через OAuth2⚓︎
Если на сервере по требованиям безопасности отключена авторизация по логину и паролю, бот не сможет воспользоваться методом from_credentials() — он не умеет авторизовываться по NTLM, Kerberos, другим протоколам SSO или через MFA.
В этом случае на сервере создаётся OAuth-приложение, и бот авторизуется через него методом Bot.from_oauth(). Помимо логина и пароля потребуется client_id приложения:
bot = Bot.from_oauth(
username="elisa",
password="123tr",
client_id="client_id_приложения",
server="video.example.com",
dispatcher=dp,
)
Требования:
- TrueConf Server 5.5.3 или новее;
- OAuth-приложение, созданное на сервере;
- у приложения настроен хотя бы один scope — достаточно
version:read. Такой scope не раскрывает чувствительной информации: получить токен для приложения без scope невозможно.
Параметры Bot.from_oauth() совпадают с параметрами from_credentials(); дополнительно обязателен client_id. См. справочник.
Ошибки авторизации⚓︎
| Исключение | Когда возникает | Что делать |
|---|---|---|
PasswordAuthDisabledError | Сервер отклонил запрос токена (403 auth_method_disabled) — на сервере отключена авторизация по логину и паролю | Используйте Bot.from_oauth() |
OAuthMissingScopeError | Сервер отклонил OAuth-запрос токена (400 invalidScope) — у OAuth-приложения не настроен scope | Добавьте scope (например, version:read) в настройки приложения на сервере |
Обе ошибки наследуются от TrueConfChatBotError и импортируются из trueconf.exceptions. Подробнее — в справочнике.