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 комментирует...

Спасибо!

wmascat
wmascat комментирует...

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

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

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

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

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

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

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

wmascat
wmascat комментирует...

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

Unknown
Unknown комментирует...
Этот комментарий был удален автором.
wmascat
wmascat комментирует...

Теперь его можно использовать. Обратитесь к PHP скрипту у себя на сервере и вы увидите форму как на скриншоте в начале статьи. Пишите сообщение с разметкой и кликаете кнопку «Отправить». Вуаля, сообщение с разметкой опубликовано на вашем канале.

Unknown
Unknown комментирует...

где взять этот скрипт, что то не могу понять третий пункт

wmascat
wmascat комментирует...

Его можно только купить

Unknown
Unknown комментирует...

Предпросмотр ссылок не работает.

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

Чтоб вставлялось изображение, его надо вставлять в стиле Маркдаун,
например привязать к точке
[.](http://s16.radikal.ru/i191/1012/4e/41c5998e32eft.jpg)
и поправить код
$preview = isset($_POST['preview']) ? (int) $_POST['preview'] : 0;
- поставить в конце 0 вместо единицы в строке 20