🌙

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_idstringИдентификатор пользователя во внешней системе
id_citystringГород/пространство, если один student_id встречается в нескольких
{ "student_id": "123456", "id_city": "msk" }

Ответ

{ "ok": true, "result": { "chat_id": 789, "created": true } }
ПолеТипОписание
chat_idintID личного чата с пользователем
createdbooltrue — чат создан сейчас, 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 просмотров