Telegram bot список команд

В этой заметке я покажу, как можно написать бота для мессенджера Telegram при помощи языка Go.

Нас интересует команда /newbot. Запускаем её и отвечаем на несколько вопросов имя (name) бота, ник (username) бота и т. п. Username должен быть уникальным и в конце обязательно должен содержать слово bot.

Если не совсем понятно, чем name отличается от username, смотрите картинку ниже.

Когда регистрация бота завершится успешно, вы увидите сообщение со ссылкой на вашего бота и токен для доступа к нему через API.

При необходимости можно ещё раз настроить бота, задав приветственное сообщение — то сообщение, которое увидит пользователь, когда зайдёт в приват к вашему боту.

/setname — change a bot’s name
/setdescription — change bot description
/setabouttext — change bot about info

Итак. Мы создали бота и у нас есть токен для доступа к нему. Приступим.

Для работы с API будем использовать библиотеку telegram-bot-api. Установим её, выполнив команду:

go get github.com/Syfaro/telegram-bot-api

Для начала напишем бота, который будет отвечать пользователю его же сообщением.

Меню Команд в Боте: Примеры

Бот готов. Дальше открывается простор для творчества. Всё, что нам надо сделать — это получить сообщение от пользователя, интерпретировать его и выдать ответ.

Сделаем так, чтобы бот приветствовал пользователей, входящих в канал.

Добавим немного инстаграма.

Пусть наш бот, получив команду /instarandom, кидает ссылку на популярное фото в instagram.

Для доступа к API Instagram необходимо получить ClientID.

Идем в раздел для разработчиков https://instagram.com/developer/, регистрируемся там сами и регистрируем своё приложение, а затем копируем Client ID.

Если нет желания регистрировать своё приложение, то можно воспользоваться ClientID, который указан в библиотеке go-instagram. Однако вы можете получать ошибки при доступе к API по этому ключу, так как им наверняка многие пользуются, а у каждого ClientID есть ограничение на количество запросов в час.

Кстати, команду можно не регистрировать, так как бот все равно получит сообщение с ней, просто у пользователя в клиенте Telegram команда не появится в списке доступных команд бота.

Устанавливаем библиотеку g0-instagram.

go get github.com/carbocation/go-instagram/instagram

Создаём два канала. В первый будем помещать сообщения для функции get_ig_popular, которая будет обращаться к инстаграму и получать ссылку на популярное фото. Во второй — ответы от этой функции.

Так как обращаться к инстаграму мы будем в отдельной горутине, то ей необходимо передать (через канал) сообщение Telegram, в котором пользователь отправил команду /instarandom, чтобы она его вернула вместе со ссылкой на фото. А затем мы из основной программы ответим на сообщение переданной ссылкой.

Еще по теме:  Если удалить аккаунт Телеграмма останутся ли время посещения

type InstagramResponse struct url string
m tgbotapi.Message
>var (
// Канал, куда будем помещать запросы к инстаграму
instagram_req chan tgbotapi.Message

3 Best Telegram Bots You Must Try Right Now 🔥


// Канал, куда будем помещать ответы на запросы к инстаграму
instagram_res chan InstagramResponse
)// Читает канал с запросами к инстаграму
// Получает популярное фото и отправляет в канал ответов ссылку
func get_ig_popular() // создаем и настраиваем клиента
instagram_client := instagram.NewClient(nil)
instagram_client.ClientID = «ClientID»
for for msg := range instagram_req // запрашиваем популярные фото
media, _, err := instagram_client.Media.Popular()
if err != nil log.Println(err)
continue
>
// возвращаем ссылку на первое фото из списка
if len(media) > 0 instagram_res InstagramResponse
>
>
>
>

И изменения в main.

func main() // создаем канал для запросов к инстаграму
instagram_req = make(chan tgbotapi.Message, 5)
go get_ig_popular()
instagram_res = make(chan InstagramResponse, 5)
.
// читаем обновления из канала
for select case update := . case resp := instagram_res:
// отправляем инстаграм-ссылку пользователю
msg := tgbotapi.NewMessage(resp.m.Chat.ID, resp.url)
msg.ReplyToMessageID = resp.m.MessageID
bot.SendMessage(msg)
>
import (
“fmt”
“github.com/Syfaro/telegram-bot-api”
“github.com/carbocation/go-instagram/instagram”
“log”
)

Используя библиотеку telegram-bot-api, довольно несложно разрабатывать бота для Telegram, так как нет необходимости погружаться в особенности работы с API, хотя при желании это можно сделать. Также нет необходимости получать картинку напрямую, чтобы затем её пересылать пользователю, потому что Telegram-клиенты сами выкачивают содержимое ссылок и показывают его пользователю.

Ссылки

  1. Telegram
  2. Telegram Bot Platform
  3. Telegram открыл платформу для ботов
  4. Инструкция: Как создавать ботов в Telegram
  5. Telegram Bot API
  6. Bots FAQ
  7. telegram-bot-api — библиотека для работы с Telegram Bot Api в Go
  8. go-instagram

Источник: medium.com

Как отображать список команд при наборе сообщения для бота Telegram? [дубликат]

пример списка команд

Как добавить в функциональность бота, чтобы при в вводе сообщения отображался выпадающий список команд? Использую telebot.

Отслеживать
8,533 4 4 золотых знака 28 28 серебряных знаков 53 53 бронзовых знака
задан 24 ноя 2017 в 21:37
26 1 1 серебряный знак 3 3 бронзовых знака

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

команда1 — описание команда2 — ещё описание
Отслеживать
ответ дан 25 ноя 2017 в 6:24
8,533 4 4 золотых знака 28 28 серебряных знаков 53 53 бронзовых знака
Спасибо вам за помощь! Помогло

25 ноя 2017 в 13:38

    Важное на Мете

Связанные

Похожие

Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.

Источник: ru.stackoverflow.com

Создаем бота для Telegram

В этой статье расскажем о том, как создать Telegram бота, решающего задачу по предоставлению актуальных сводных данных из нескольких источников.

Еще по теме:  Летняя распродажа цветным шрифтом в Телеграмме

13 024 просмотров

Первым шагом при создании бота является его регистрация в системе Telegram. Для этого необходимо обратиться опять же к боту – BotFather. Он предназначен для создания новых учетных записей ботов и управления существующими ботами (редактирование, настройка, удаление и др.):

Отправим команду /newbot

BotFather попросит прислать название нового бота и его имя, которое должно оканчиваться строкой «bot». После получения необходимой информации BotFather вернет сообщение, содержащее токен вашего бота. Необходимо сохранить его с ограничением доступа, т.к. этот ключ используется для управления ботом, и, зная его, любой человек сможет изменить логику работы вашей программы.

На данном этапе ваш бот уже создан, и можно даже написать ему сообщение. Но по сути это пока макет, пустая оболочка, которая не может реагировать на информацию и команды пользователя. Поэтому перейдем к следующему шагу – добавим функциональности.

Но предварительно понадобится провести некоторые настройки рабочего места. Так как бота мы разрабатывали в период блокировки Telegram, просто так работать с его API и программировать бота не получалось. Одним из решений обхода блокировки было использование VPN. Я выбрал бесплатный VPN-сервис Windscribe – он не требует сложной настройки, работает стабильно и предоставляет 10 Гб трафика в месяц, которых вполне хватает для решения большинства задач:

В качестве источников информации для нашего бота возьмем несколько площадок: сайт Федеральной налоговой службы и сайт Росреестра. Необходимую информацию об изменениях будем получать из RSS-лент данных сайтов, которые размещены в новостных разделах.

RSS (Rich Site Summary — обогащённая сводка сайта) – динамический файл в формате XML, привязанный к домену сайта и формирующийся по определенным правилам. При публикации нового материала (статья / комментарий) RSS-лента этого типа материала дополняется и обновляется. Обычно в ней содержится краткое описание новой информации и ссылка на полную версию.

При желании вы можете дополнить список источников теми сайтами, которые обычно используете в работе. Например, многие современные сайты построены на базе CMS (Content Management System — система управления контентом) WordPress, которая по умолчанию создает несколько RSS каналов. Главные из них – новые записи и новые комментарии, обычно расположенные по адресам Имя_сайта/feed/Имя_сайта/comments/feed/ соответственно.

Для написания бота я предлагаю использовать язык программирования python. Для доступа к API Telegram вам понадобится библиотека telebot а для чтения RSS-ленты – feedparser:

pip install pyTelegramBotAPI pip install feedparser

Теперь можно приступать к описанию логики бота. При получении сообщения от пользователя бот должен реагировать по-разному, в зависимости от типа сообщения (команда / текст / что-то иное). Для обработки различных реакций в библиотеке telebotреализован специальный механизм так называемых хэндлеров (handler), использующий декораторы Python.

Еще по теме:  Что такое топ в Телеграмме

Реализуем обработку нескольких основных команд (start / help), а также команды read_rss, которая и будет решать поставленную задачу. Ниже показан код основного модуля программы:

После импорта библиотек создается экземпляр бота, в параметрах которого необходимо указать токен, полученный на первом шаге. Три обработчика сообщений с параметром commands=… ] отслеживают получение соответствующих команд от пользователя.

Функция infinity_polling() запускает бесконечный цикл получения новых записей со стороны Telegram. При этом бот старается не прекращать работу при возникновении каких-либо ошибок.

В ответ на команды start и help бот будет отправлять сообщения с приветствием или списком доступных действий. Это реализовано функцией send_message с параметрами: ID чата, в котором получено сообщение и сам текст сообщения:

При получении команды read_rss бот вызывает процедуру чтения RSS – feed_parser(), описанную в отдельном модуле utils:

import feedparser def feed_parser(): NewsFeed = <‘РосРеестр’: ‘https://rosreestr.ru/site/rss/’, ‘Федеральная Налоговая Служба’: ‘https://www.nalog.ru/rn62/rss/’>message = dict() for key in NewsFeed.keys(): current_news = feedparser.parse(NewsFeed[key]).entries[0] message[key] = current_news.title + ‘n’ + current_news.link return message

Функция feedparser.parse() принимает в качестве параметра адрес RSS-ленты сайта и создает объект, который по умолчанию содержит несколько последних записей(entries), расположенных в прямом порядке (новейшие записи идут в начале). Нас интересует только самая новая статья на каждой площадке, получаемая строкой current_news = feedparser.parse(NewsFeed[key]).entries[0]. Отдельный модуль utils понадобился для того, чтобы не загромождать основной обработчик событий. В дальнейшем в этом модуле можно будет описать дополнительные функции.

На данном этапе бот с минимальной функциональностью готов и может решать поставленную в начале статьи задачу. Запустите код на исполнение и отправьте боту команду /read_rss. Должно получить что-то вроде этого:

При необходимости формат сообщения можно привести к удобному для себя виду (объединить источники в одно сообщение, выводить краткий текст новости, титульное изображение и др.).

В интерфейсе BotFather можно отредактировать параметры вашего бота: имя, описание, поле «About», иконку и список основных команд. Это добавит ему уникальности и позволит сделать более удобным.

При желании функциональность бота можно существенно расширить и настроить под свои нужды – например, дополнительно получать сводку погоды по выбранным городам (на случай, если придется поехать в командировку). Можно агрегировать данные из других источников, в зависимости от направления проводимого вами аудита. Например, получать новости по аудиту IT-технологий и присылать отформатированные отчеты. Все зависит только от вас.

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

Источник: vc.ru

Рейтинг
( Пока оценок нет )
Загрузка ...