Telegram: отправка ботом личного сообщения
Хочу в телеграмме присылать сам себе личные сообщения, просто перейдя по url с токеном и нужными параметрами. Это возможно? Вот получил токен и он рабочий, и сделал следующий запрос:
Но к сожалению в ответ приходит:
P.S. Пожалуйста, не пинайте если вопрос слишком глупый) Сообщения будет слать роутер))
![]()
Проблема вашего запроса заключалась в том, что вы, пытаясь отправить сообщение в личку, в качестве параметра chat_id передавали логин пользователя. Однако Bot API допускает в этом параметре только логин канала или id чата. Соответственно, чтобы слать сообщения в личку пользователю, вам нужно вначале узнать его id. Вы получаете id каждого пользователя, что напишет вам, в объекте User. Свой id удобно узнавать через специального бота @ShowJsonBot. Он также может показаться вам удобным и для других целей, особенно для отладки.
Вы всё равно можете слать ботом любые сообщения методом sendMessage, даже если к аккаунту вашего бота уже подключены всякие конструкторы для ботов вроде того же @Manybot. Это не помеха.
Сначала создали бота.
После этого создали чат и добавили бота в него :
- заходишь к боту на страницу
- нажимаешь на верхний бар, на название
- дальше опции -> add to group
- и выбираешь любой чат
А потом уже можно скриптом получить id чата через getUpdates (история бота), тут можно почитать https://core.telegram.org/bots/api
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.11.43304
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Создание Telegram бота на PHP #3: примеры отправки сообщений с кнопками в Telegram
В новом уроке мы с вами рассмотрим отправку базовых запросов в Telegram. Я покажу вам как отправлять простые текстовые сообщения в Telegram, как отправлять кнопки и дополнительные клавиатуры.
Всю информацию по параметрам запросов мы будем брать из официальной документации Telegram.
Полный список всех записей курса находится на сайте или в публикациях на Хабр.
Все ответы от Telegram приходят в виде JSON строки. Для удобного отображения массива ответа в браузере, советую вам установить специальное расширение для браузера, которое называется JSON Viewer.
Отправка простых сообщений
Для отправки простых текстовых сообщений, нам необходимо воспользоваться методом sendMessage.
Ранее я показывал вам, как отправлять запросы с передачей параметров в URL, теперь для удобства я буду использовать запись параметров в массиве и с помощью функции http_build_query мы будем формировать строку с GET параметрами.
Каждый запрос будет иметь переменную с записанным токеном, массив с параметрами запроса, код для создания запроса через Curl и вывод или запись полученной информации.
Отправка ответа на сообщение
Для отправки ответа на ранее созданное сообщения, вам необходимо в новом запросе sendMessage отправить дополнительный параметр reply_to_message_id, передав в него id сообщения, которое вы хотите прикрепить.
Полный запрос будет выглядеть так…
Удаление сообщений из чата
Для удаления сообщений, вам нужно воспользоваться методом deleteMessage и знать id сообщения которое вы хотите удалить.
Пример кода для удаления сообщений выглядит так:
Отправка кнопок в чат
На данный момент, существует 3 вида кнопок в чате, в Telegram.
Кнопки которые прикреплены к сообщению (inline_keyboard).
Кнопки которые располагаются под строкой ввода сообщения, они называются клавиатурой (keyboard).
Кнопки меню команд, которые чаще всего располагаются слева от строки ввода сообщения.
Для начала давайте рассмотрим как нам добавить кнопки которые будут прикреплены к сообщению.
Для отправки таких кнопок, нам нужно воспользоваться методом sendMessage и передать ему в качестве параметра reply_markup — массив со свойствами клавиатуры.
Данный массив выглядит следующим образом…
Разберём всё по порядку.
Первое важное правило — reply_markup принимает json, поэтому для создания кнопок, вам нужно конвертировать массив в JSON с помощью функции json_encode.
В массиве с параметрами кнопок, есть особые параметры. Эти параметры, так же, указаны в документации.
С помощью параметра text вы можете передать текст кнопки.
параметр url указывает ссылку, если вам нужно сделать кнопку для перехода на внешний ресурс.
параметр callback_data указывает строку которая будет возвращена после нажатия на кнопку. Данную строку используют как команду.
Массив для кнопок имеет сложную многоуровневую систему. Первый уровень отвечает за общую запись параметров, второй уровень отвечает за ряд кнопок, третий уровень отвечает за параметры кнопки.
Таким образом, для создания 2 кнопок в одном ряду, мы будем использовать следующий код

Для создания 2 рядов по 2 кнопки используйте код .

И для создания одной кнопки в первом ряду и 2 — во втором, используйте следующий код.

Надеюсь, я смог объяснить данную тему доступно, если у вас будут вопросы, пишите их в нашем Telegram канале.
Отправка клавиатуры в чат
Аналогичные параметры имеет и массив для отправки клавиатуры в чат. Для создания клавиатуры пропишем следующий код.
Структура массивом для кнопок та же, но только есть отличие в названиях и количестве параметров.
Ключ inline_keyboard заменяется на keyboard.
А так же для клавиатуры добавляются 2 дополнительных параметра:
one_time_keyboard — скрыть клавиатуру, как только она была использована. Клавиатура по-прежнему будет доступна, но клиенты будут автоматически отображать обычную, буквенную клавиатуру в чате — пользователь может нажать специальную кнопку в поле ввода, чтобы снова увидеть пользовательскую клавиатуру. Значение по умолчанию равно false.
resize_keyboard — изменяет размер клавиатуры по вертикали для оптимальной подгонки (например, уменьшить клавиатуру, если есть только два ряда кнопок). По умолчанию установлено значение false, и в этом случае пользовательская клавиатура всегда имеет ту же высоту, что и стандартная клавиатура приложения.
В новом уроке мы с вами разобрали самый популярный метод для работы с Телеграм ботами — sendMessage. Данный метод позволяет отправлять текстовые сообщения с привязанными кнопками и клавиатурами.
Научились удалять сообщения
Разобрали какие бывают типы кнопок и научились создавать массивы для гибкой структуры вывода дополнительных клавиатур и кнопок.
В следующем уроке, я вам покажу как отправлять файлы и изображения в чат.
Отправка сообщений в telegram с помощью php

Telegram уже давно перестал быть мессенджером для террористов, РКН от него отстал. И все больше людей начинают общаться в телеграм как по работе, так и в личных переписках. Для многих этот мессенджер стал не просто чатом, а еще и соц.сетью со своими новостными и развлекательными каналами. Так же удобные боты телеграмм позволяют добавить интерактивности в чаты и каналы. Вот и я решил немного углубиться в функциональное использование telegram. Первая идея – это получать уведомления с сайтов. Как настроить телеграм и как написать скрипт, который будет отправлять сообщения в чат постараюсь объяснить в этой статье.
Создание и настройка telegram бота для отправки сообщений
Напрямую скриптом отправлять сообщения в телеграм нельзя, но можно делать запросы к api ботов. Бот же в свою очередь будет делать то, что нам нужно – отправлять пользователю сообщения. Поэтому перед тем, как писать скрипт, нужно создать бота. В телеграм эта процедура занимает всего пару минут. Для создания и настроек есть официальный верифицированный бот: @BotFather. Откройте его в телеграм и отправьте команду «/newbot». Далее нужно будет придумать название и логин своему боту. Это все выполняется прямо в чате телеграм, ниже можете увидеть скрин переписки с ботом. После успешного создания и настроек, BotFather пришлет токен созданного бота. Токен потребуется для отправки запросов к api.

На этом настройка бота закончена. Но остался один момент – получение id пользователя телеграм, которому будет отправляться уведомления. Чтобы узнать свой id можно также воспользоваться ботами, их много. Я нашел вот такой: @getmyid_bot. Просто запустите бота и в ответ он напишет ваш ID.
У телеграм есть документация с описанием всех методов api, которые можно использовать. Документацию можно почитать тут: api ботов telegram.
В нашем случае всю документацию читать не придется, достаточно только одного метода – sendmessage. Он позволяет отправлять сообщения пользователям, которые начали диалог с ботом. У метода всего два обязательных параметра chat_id – ID пользователя или канала, который получит уведомление и text – текст сообщения. В скрипте я использовал еще третий параметр — parse_mode, он не обязательный, позволяет задать способ форматирования текста. По дефолту текст сообщения никак не форматируется. Parse_mode может принимать несколько значений: Markdown, MarkdownV2 и HTML. Пользоваться разметкой Markdown и MarkdownV2 я не умею, это телеграмовские теги. Поэтому выбрал HTML. Только обратите внимание, что это не полноценный html, теги поддерживаются не все. Подробнее можно почитать в документации.
На этом подготовка завершена, остается только написать код. Не забудьте открыть диалог со своим, только что созданным, ботом и запустить его. Если этого не сделать, то сообщения приходить не будут, а api в ответ на запросы будет присылать ошибки.
Php код для отправки сообщения в telegram
Ну а теперь самое интересное – код отправки запроса к api. В коде добавлены подробные комментарии, должно быть все понятно.
Как писать в Telegram от имени бота
![]()
В этой статье мы создадим бота, подключимся к нему при помощи токена и сможем управлять им: отправлять и принимать сообщения.
Приступим к реализации:
Для начала нам необходимо перейти в BotFather :
![]()
В открывшемся диалоге пишем «/newbot»:
![]()
Выбираем имя для будущего бота:
![]()
Далее юзернейм бота, который должен оканчиваться на «bot»:
![]()
Копируем токен для доступа к API:
![]()
Следующим шагом будет скачивание Graph Messenger на ваш телефон:
![]()
Открываем программу и нажимаем на фразу «Вход с помощью Токена Бота»:
![]()
Вставляем ранее скопированный токен и кликаем на стрелочку в правом нижнем углу:

Все, у Вас появилась возможность писать сообщения от имени бота. Также Вы можете принимать данные от пользователей, отправленные вашему боту: