getOrCreateChat
getOrCreateChat
Открывает личный диалог с пользователем — единственный способ для бота написать первым.
Метод доступен только ботам с флагомcan_initiate_chat. Флаг выдаётся администрацией Kodari, включить его самостоятельно нельзя. Без него метод возвращает403 Forbidden: bot cannot initiate chats.
POST https://api.kodari.ru/msg/bot.php?method=getOrCreateChat
Authorization: Bearer bot_ВАШ_ТОКЕН
Content-Type: application/json
Параметры
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
student_id | string | ✓ | Идентификатор пользователя во внешней системе |
id_city | string | — | Город/пространство, если один student_id встречается в нескольких |
{ "student_id": "123456", "id_city": "msk" }
Ответ
{ "ok": true, "result": { "chat_id": 789, "created": true } }
| Поле | Тип | Описание |
|---|---|---|
chat_id | int | ID личного чата с пользователем |
created | bool | true — чат создан сейчас, false — уже существовал |
Метод идемпотентен: повторный вызов вернёт тот же chat_id с created: false.
Ошибки
| Код | Описание |
|---|---|
| 400 | Не передан student_id или попытка создать чат с самим собой |
| 403 | У бота нет can_initiate_chat |
| 404 | Пользователь с таким student_id не найден |
pykodaribot
result = await bot.get_or_create_chat("123456", id_city="msk")
chat_id = result["chat_id"]
await bot.send_message(chat_id, "Ваша заявка обработана")
Типичный сценарий
async def notify(student_id: str, text: str):
try:
chat = await bot.get_or_create_chat(student_id)
except BotError as e:
if e.error_code == 404:
return
raise
await bot.send_message(chat["chat_id"], text)
17 просмотров