Telegram бот и PHP скрипт Markdown разметки постов

TelegramSM — PHP-скрипт, позволяющий публиковать на telegram-канале сообщения с использованием разметки Markdown, через созданного бота. Из статьи вы узнаете об интерфейсе предлагаемого решения и получите пошаговую инструкцию создания Telegram бота и настройки TelegramSM.

PHP скрипт Markdown разметки постов в Telegram
Итерфейс TelegramSM

Интерфейс TelegramSM состоит из:

  • подсказок доступной в Telegram разметки Markdown;
  • поля ввода сообщения с разметкой Markdown;
  • поля предпросмотра публикуемого сообщения
  • дополнительных опций:
    • disable link preview — отключает генерацию сниппета для ссылок из сообщения (по умолчанию включено),
    • disable notification — отключает оповещение подписчиков о публикации (по умолчанию выключено).
  • Кнопки для публикации сообщения.

Примечания:

  • В сообщении можно использовать unicode для вставки emoji (смайликов), но в скрипте эта функция не реализована. Как вариант, копировать отсюда.
  • Скрипт не позволяет публиковать фотографии, видео и прочие документы, только сообщения с разметкой Markdown.

Шаг 1: создайте telegram бота

Для использования Telegram Bot API вам понадобится создать бота. В нашем случае это ключ (token) бота.

создание telegram бота
создание telegram бота
  1. Перейдите по ссылке @BotFather к родительскому боду.
  2. Кликните кнопку «Start».
  3. Кликните или ведите вручную команду /newbot.
  4. Вы получите сообщение Alright, a new bot. How are we going to call it? Please choose a name for your bot. На этом шаге вам нужно придумать и ввести название (имя) бота (например, Tetris). Нажмите Enter.
  5. Вы получите сообщение Good. Now let's choose a username for your bot. It must end in `bot`. Like this, for example: TetrisBot or tetris_bot. На этом шаге вам нужно придумать и ввести юзернейм (уникальный идентификатор) бота, которое должно заканчиваться на `bot` (например, TetrisBot или tetris_bot).
  6. Вы получите сообщение о создании бота и уникальный ключ (token) для доступа к Telegram Bot API по HTTP.

Шаг 2: добавьте бота в администраторы telegram канала

Для доступа бота к каналу, ему нужно предоставить права администратора.

добавление бота в администраторы telegram канала
добавление бота в администраторы telegram канала
  1. Зайдите на свой канал.
  2. Откройте информационную страницу канала (на десктопе — стрелочка вправа в верхнем правом углу).
  3. На открывшееся странице, в секции «Members», кликните ссылку «N administrators» (вместо N будет количество администраторов канала).
  4. В открывшемся окне, кликните ссылку «New administrator».
  5. В открывшемся окне, в поле «Search», введите юзернейм (уникальный) идентификатор бота и кликните пункт со своим найденным ботом.

Шаг 3: настройте PHP-скрипта TelegramSM

TelegramSM — PHP-скрипт, позволяющий публиковать на telegram-канале сообщения с использованием разметки Markdown, через созданного бота.

  1. Откройте файл TelegramSM.php в любом текстовом редакторе (например, стандартный «Блокнот» Windows или Notepad++).
  2. Найдите следующие строки:
    # Begin Config
    $token = '';
    $chat_id = '';
    # End Config
  3. В качестве значения переменной $token укажите ключ (token) полученный при создании бота.
  4. В качестве значения переменной $chat_id укажите юзернейм telegram канала (без знака @).
  5. Сохраните файл и скопируйте его на сервер (это может быть локальный сервер или сервер вашего хостинг провайдера, в последнем случае вам нужно закрыть доступ к PHP-скрипту для посторонних).
Руслан Фатхутдинов
Руслан Фатхутдинов комментирует...

Скрипт отличный.
Протестировал на демо сайте и теперь 2 вопроса:
1) Он выкладывает пост не сразу. От чего это зависит и как определить через сколько пост будет выложен в канале?
2) После того, как набираешь пост и нажимаешь кнопку "отправить" открывается страница с кодом. Это важно/нужно?
3) Реально ли прикрутить расписание?

seoonly.ru
seoonly.ru комментирует...

Спасибо!

Константин Кирилюк
Константин Кирилюк комментирует...

2Руслан Фатхутдинов
1) Он выкладывает пост сразу после клика "отправить", может быть задержка в пару сек, но не более. Возможно на мобильных, время обновление данных в приложении больше, но это уже особенность работы самого приложения, а не API.
2) Да, после публикации, в случае успеха, скрипт возвращает ответ сервера в формате json. Я просто оставил var_dump() для удобства дальнейшей доработки при желании со стороны владельца... ну вместо банального "Сообщение отправлено" :)
3) Для реализации планировщика нужна серьёзная доработка:
а) Понадобится база для временного размещения поста с указанием даты/времени публикации и сама функция для добавления поста в эту базу.
в) Также нужно будет допилить текущий скрипт, чтоб он проверял наличи подходящего по дате/времени поста в базе и его публикации (последнее реализовано). Само собой, его придётся подвесить на Cron с соответствующей частатой запросов на проверку наличия постов для публикации.
В общем, сделать можно что угодно, было бы желание )))

Руслан Фатхутдинов
Руслан Фатхутдинов комментирует...

Это очень круто. Спасибо

Анонимный
Анонимный комментирует...

Константин, почему не сделать кнопки активными, как в редакторе? Написал текст, выделил и нажал кнопку. Текст обрамился кодом

Изображение не вставляется. Реально сделать?

Смайлы прикрутить можно?

Константин Кирилюк
Константин Кирилюк комментирует...

Реализовать можно что угодно, было бы желание и спрос. На данный момент нет ни того, ни другого. За всё время продаж (уже около недели) было всего 2 покупки, и это при цене в 10 руб. Скрипт выполняет поставленную задачу — позволяет опубликовать сообщение, используя Markdown, остальное изыски, которые не особо важны. Сейчас вообще тенденция — «одна кнопка».