no-style

Telegram создание простого бота


Введение

Впервые с ботами для телеграма я познакомился в одной из конкурсных статей от ZennoLab. С тех пор прошло 1-2 года и я нашёл время, чтобы описать процесс создания простого бота для Telegram.

Что в итоге мы получим:

  • Зарегистрируем самого бота
  • Получим: token
  • Получим: chat_id
  • Получим: Get запрос с помощью которого бот сможет писать сообщения
  • Научимся ставить и изменять аватар боту
  • Научимся редактировать описание бота






Регистрируем бота

Для регистрации нового бота, необходимо написать специальному юзернейму @BotFather - это такой специальный бот, который позволяет осуществить задуманное нами действие.


telegram bot creation botfather welcome

Первым делом напишем ему команду

/start

В ответ мы получим список доступных команд


telegram bot creation botfather start

Создаём нового бота при помощи команды

/newbot

У нас спросят как мы хотим назвать бота, придумываем уникальное имя

Затем придумываем уникальный Username боту. Обратите внимание что он обязательно должен в своём названии содержать слово bot

Внимательно вписываем данные


telegram bot creation botfather newbot

После чего нам будет выдана прямая ссылка на нашего бота.

А так же token для использования API телеграма. Токен как и во многих других сервисах мы храним в надёжном месте и никому его не светим!

На этом шаге регистрация самого бота завершена.







Chatid

chatid является по сути адресатом сообщения. Это может быть как пользователь так и например группа.

Существует несколько способов узнать chatid, например:



Вариант N1:

Написать боту @get_id_bot, в ответ получим свой chatid.



Вариант N2:

Мало ли что с этими ботами случится, поэтому мы сформируем специальный URL подставив в него token нашего бота. И откроем его в браузере.

https://api.telegram.org/botYourBOTToken/getUpdates

В первый раз мы увидим довольно мало информации. Напишем нашему боту личное сообщение и снова откроем тот же самый URL

А вот теперь инфы будет уже побольше. В том числе chatid


telegram bot creation chatid


Вариант N3:

Попросим нашего бота писать всё в специально созданный канал.

Создадим канал


telegram bot channel creation

Назовём его


telegram bot channel creation 2

Выбираем тип канала. Я выберу приватный, можете сделать публичный если хотите.


telegram bot channel creation 3

На следующем шаге у нас спросят - хотим ли мы добавить кого нибудь в созданный канал. Вписываем Username нашего бота с символом собаки.

Выбираем его и нажимаем Add


telegram bot channel creation 4

В ответ нам скажут что можно добавить бота только в качестве администратора канала


telegram bot channel creation 5

Поэтому мы нажимаем MAKE ADMIN и устанавливаем права нашему боту


telegram bot channel creation 6

Теперь, так как мы хотим узнать chatid группы мы повторяем вариант номер 2. Открываем в браузере ссылку (подставляя свои данные)

https://api.telegram.org/botYourBOTToken/getUpdates

При первом заходе по данному адресу получаем сообщение, что все ок, но без нужной нам информации.

Напишем в наш канал любое сообщение и повторно заходим по ссылке выше


telegram bot channel creation 7

Теперь, когда у нас есть и token и chatid мы можем написать сообщение в канал группы обычным Get запросом

https://api.telegram.org/botYourBOTToken/sendMessage?chat_id=YourChatID&text=YourText

Подставляем свои параметры, копируем получившийся URL в браузер ну или например в зенку.

Получаем результат.


telegram bot channel creation 8

Если напишет что бот не является участником канала - просто подождите несколько минут. Либо попробуйте пере-пригласить бота на канал.



Как писать в конкретный топик в группе

С недавних пор в телеграмме появилась возможность создавать отдельные топики для групп. Для того чтобы написать в конкретный топик проделываем всё тоже самое что и раньше:

Шаг 1: создаём теперь уже группу, создаём в ней топик

Шаг 2: Приглашаем в группу нашего бота

Шаг 3: Получаем ChatID для группы

Шаг 4: Пишем сообщение в необходимый топик. После чего в клиенте нажимаем на наше сообщение и выбираем пункт копировать ссылку.

Ссылка будет иметь такой вид https://t.me/c/xxxxxxxx/19/20
Первый id после слеша это id топика (отмечен синим цветом), а второй это id сообщения. Берём id топика и теперь уже формируем такую ссылку для отправки сообщений

https://api.telegram.org/botYourBOTToken/sendMessage?chat_id=YourChatID&reply_to_message_id=YourTopicID&text=YourText

В результате получим успешную отправку в топик группы


telegram bot repply-to-topic-1





Оформление текста

Иногда есть необходимость выделять текст. Для этого добавляем в ссылку дополнительный параметр &parse_mode=MarkdownV2

Должно получиться вот так

https://api.telegram.org/botYourBOTToken/sendMessage?chat_id=YourChatID&parse_mode=MarkdownV2&text=YourText

Теперь мы можем обернуть нужный текст в специальный формат:

*bold text* жирный текст

_italic text_ курсив

`monospace` моноширинный текст, будет скопирован при клике

~strike~ зачёркнутый текст

__underline__ подчёркнутый текст

||spoiler|| спойлер

[URL TEXT](http://www.example.com/) ссылка

[USER TEXT](tg://user?id=123456789) упомянуть пользователя с ID 123456789

%0A новая строка

Код

```python
code
```


Пример

https://api.telegram.org/botYourBOTToken/sendMessage?chat_id=YourChatID&parse_mode=MarkdownV2&text=*Parse User Finished* __0 Errors__ _0 Warnings_ and super secret spoiler ||secret||

В результате преобразуется в

telegram bot text-markdown 1

Знаки препинания после разметки необходимо экранировать например так \. иначе сообщения не отсылаются!







Меняем картинку нашему боту

Для этого снова обратимся к @BotFather

Вписываем команду

/setuserpic

У нас поинтересуются какому боту мы хотим установить аватар, выбираем нужного нам. И присылаем желаемую картинку в сообщении


telegram bot set avatar

После чего всплывёт окно в котором мы можем выбрать нужную область изображения


telegram bot set avatar 2





Меняем описание нашему боту

Опять пишем к @BotFather

Вписываем команду

/setdescription

Выбираем бота, для которого хотим изменить описание. И вписываем его.


telegram description





Список команд для работы с ботом

Редактирование бота

/mybots - редактирование ботов

/setname - установить имя

/setdescription - установить описание

/setabouttext - установить описание о себе

/setuserpic - установить/изменить аватар

/setcommands - изменить список команд бота

/deletebot - удалить бота



Свойства бота

/token - сгенерировать токен авторизации

/revoke - отозвать токен

/setinline - inline mode

/setinlinegeo - toggle inline location requests

/setinlinefeedback - inline feedback

/setjoingroups - can your bot be added to groups?

/setprivacy - toggle privacy mode




Games

/mygames - edit your games

/newgame - create a new game

/listgames - get a list of your games

/editgame - edit a game

/deletegame - delete an existing game







Заключение

Мы научились создавать бота, менять ему юзерпик и описание. Научились писать данным ботом в личку и на стене канала. Остаётся только применить эти знания и направить их в нужное русло. Пользуйтесь на здоровье.