Telegram допускает несколько ограничений на отправку сообщений пользователю, и каждое даёт свою причину отказа, которую стоит различать по тексту ошибки API.
Пользователь заблокировал бота
Ответ API "Forbidden: bot was blocked by the user" означает буквально то, что написано — сообщение технически не может быть доставлено, и это не ошибка интеграции, а действие получателя.
Пользователь никогда не запускал бота
Если chat_id получен откуда-то ещё (например, вручную скопирован), а пользователь никогда не нажимал /start, отправка вернёт ошибку "chat not found" — бот физически не знает об этом чате.
Устаревший или неверный chat_id
Если пользователь удалил и заново начал диалог с ботом, старый сохранённый chat_id может стать недействительным. Обновляйте сохранённый chat_id при каждом новом взаимодействии, а не только при первом.



