Написать бота для Telegram самому

Стало модно использовать мессенджеры как платформу для, так называемой, «разговорной коммерции»: теперь помимо смузи и коворкинга уважающий себя стартап должен обзавестись ботом или, как минимум, каналом в телеграмме.

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

Зачем бот нам?

Разработка

Создание

  • в режиме WebHook сервер Телеграма будет отправлять данные вашему боту, каждый раз при поступлении запроса. Это удобный и надежный вариант, а, главное, быстрый, но, к сожалению, этот режим требует https-подключения и сертификата.
  • в режиме polling бот будет сам ходить на сервер Телеграма и забирать новые данные. Этот режим гораздо проще, но реакция бота будет не мнгновенной, а в среднем с полсекундной задержкой. Кроме того, нужно учесть, что иногда бывают сбои в ответе с сервера, поэтому бота следует сделать устойчивым к таким ошибкам.

Запуск бота

Чтобы запустить бота, необходимо подключить пакет и передать боту необходимые данные: токен и режим обновления.

Пишем TELEGRAM бота на Python

const TelegramBot = require(‘./lib/telegram.js’);

const bot = new TelegramBot(‘YOUR_TOKEN’, );

console.log(‘Hi my name is %s!’, me.username);

Вызов функции getMe() происходит при успешной авторизации токена бота и выдачи управления программе. При этом в качестве аргумента функция getMe().then() принимает функцию function(me). Ее первым аргументом является объект, с помощью которого можно получить различную информацию о вашем боте и, в данном случае, вывести её в консоль.Далее, чтобы научить бота отправлять сообщения, нужно использовать метод bot.sendMessage(chatId, ‘Hello World. ’); А чтобы бот понимал входящие запросы, достаточно использовать bot.on(‘message’, function (msg)<>). Более подробно методы описаны в документации node-telegram-bot-api.

Красивые кнопочки

Чтобы вместо стандартной пользователь видел inline клавиатуру, необходимо при отправке сообщений передать методу sendMessage ее параметры:

Где text — текст на кнопке, callback_data — данные, которые получит бот при нажатии на кнопку.

b_57999815af1d6.jpg

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

bot.on(‘callback_query’, function (msg)

if (msg.data === ‘rus’)

if (msg.data === ‘eng’)

Изменение сообщения

Иногда требуется не отправлять заново сообщения, а поправить уже существующее (для удобства отображения данных). Для этого мы решили воспользоваться методом bot.editMessageText(text, opt); где text — измененный текст сообщения, opt — Дополнительные опции для запроса к telegram, такие как наличие клавиатуры, форматирование текста и другое.

b_5799982eecc33.jpgb_57999838e1d05.jpg

Отправка текста и фото в одном сообщении

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

b_57999863466c3.jpg

Чтобы телеграм подгрузил картинку в сообщение, необходимо установить параметр disable_web_page_preview: false.

Для форматирования текста нужно установить параметр parse_mode. Он имеет два значения: markdown и html. При значении markdown используется форматирование вида:

`inline fixed-width code`

«`pre-formatted fixed-width code block«`

const text = ‘[текст](url)’;

Магазин ботов

Чтобы всю эту красоту увидел мир, а не только ваши пользователи, вы можете написать статью на хабр загрузить вашего бота в магазин ботов – storebot.Регистрация и публикация простая – достаточно залогиниться на сайте storebot.met и после «далее-делее-готово» нажать в меню «AddBot». Это вам не модерация в AppStore.

Бонус для самых классных

b_57999872d2444.jpg

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

Создание Telegram-бота на Java: от идеи до деплоя

Создание Telegram-бота на Java: от идеи до деплоя - 1

Что же такое вообще боты? Подробно почитать об этом можно здесь. Для начала вам необходимо ознакомиться с официальной документацией к библиотеке для разработки ботов на Telegram(далее API). Лежит она здесь. Там все очень доступно и понятно. Казалось бы, пиши да радуйся! Но не все так просто.

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

Но дело в том. что в своем большинстве создаются боты, которые могут предоставить справочную информацию и прочее. Наш бот — полноценное веб-приложение, к которому можно привязать базу данных, выполнять запросы на различные API, парсить сайты, выполнять сложные вычисления и прочее. Дело ограничено только вашей фантазией.

Еще по теме:  Как скопировать ссылку из Телеграмма в инстаграм с телефона

Я надеюсь что в этих строках я немного разъяснил вам о чем собираюсь писать. Бота в Telegram зарегистрировать очень просто, этот процесс подробно описан в документации по ссылке выше. Для нашего приложение необходимо знать только имя бота и токен, который вы получите при регистрации. По сути бот — просто консольное веб-приложение. Никакого фронтенда, чистая обработка команд.

Если вы желаете хорошо освоить Hibernate или научиться парсить JSON, то такой проект для вас. Начнем с того чтобы подключить зависимость в pom.xml (подразумеваем что вы используете Maven). Сделать это можно так:

org.telegram telegrambots 3.5

Затем создаем класс Bot , унаследуем его от класса TelegramLongPollingBot , переопределив его методы:

Ну и содержимое метода main :

public static void main(String[] args) < ApiContextInitializer.init(); TelegramBotsApi telegramBotsApi = new TelegramBotsApi(); try < telegramBotsApi.registerBot(Bot.getBot()); >catch (TelegramApiRequestException e) < e.printStackTrace(); >>

Вписав в методы getBotUsername() и getBotToken() мы запускаем бота. Пока он только перенаправляет нам любые сообщения, которые мы отправим ему, этакое «зеркало».

Работает это все следующим образом: когда вы запускаете приложение, оно начинает раз в n количество секунд отправлять на сервер Telegram GET запрос по следующему URL: https://api.telegram.org/BotToken/getMe, где BotToken – токен вашего бота, получая в ответ JSON, в котором находятся все сообщения. Каждое такое сообщение обрабатывается библиотекой и приходит в метод OnUpdateReceived(Update update) объектом Update . С ним то мы и работаем.

В этом вся прелесть Telegram-ботов, они могут работать на любом компьютере, для тестирования нужно просто запустить приложение, не нужно деплоить его на хостинг после каждого изменения. Это очень удобно. Само собой бота можно настроить на работу по вебхуку, руководство можно найти на просторах Интернета, мы будем для простоты работать по LongPolling.

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

А можете научиться интегрироваться к CRM-системам и делать ботов для малого бизнеса, все ограничено вашей фантазией. Идем дальше. Те, кто пользовался ботами знают, что с ними удобно взаимодействовать командами, начинающимися со знака «/» , например /start . Но есть способ удобнее — кнопки. Есть два вида кнопок: те, что появляются под полем ввода, ReplyKeyboardMarkup и кнопки, которые находятся непосредственно под сообщением, к которому привязаны, InlineKeyboardMarkup . В документации вы можете поверхностно ознакомиться с их описанием. ReplyKeyboardMarkup. По сути это — массив массивов кнопок, List> . Вот пример кода, который создает клавиатуру

public synchronized void setButtons(SendMessage sendMessage) < // Создаем клавиуатуру ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup(); sendMessage.setReplyMarkup(replyKeyboardMarkup); replyKeyboardMarkup.setSelective(true); replyKeyboardMarkup.setResizeKeyboard(true); replyKeyboardMarkup.setOneTimeKeyboard(false); // Создаем список строк клавиатуры Listkeyboard = new ArrayList<>(); // Первая строчка клавиатуры KeyboardRow keyboardFirstRow = new KeyboardRow(); // Добавляем кнопки в первую строчку клавиатуры keyboardFirstRow.add(new KeyboardButton(“Привет”)); // Вторая строчка клавиатуры KeyboardRow keyboardSecondRow = new KeyboardRow(); // Добавляем кнопки во вторую строчку клавиатуры keyboardSecondRow.add(new KeyboardButton(“Помощь”); // Добавляем все строчки клавиатуры в список keyboard.add(keyboardFirstRow); keyboard.add(keyboardSecondRow); // и устанваливаем этот список нашей клавиатуре replyKeyboardMarkup.setKeyboard(keyboard); >

В методе sendMsg() мы вызываем этот метод, передавая ему сообщение, таким образом устанавливая для такого сообщения клавиатуру.

Когда мы отправим это сообщение пользователю, то он увидит текст сообщения, который мы установили, а также 2 кнопки, на которых будет написано Привет и Помощь, друг под дружкой. По нажатию на эти кнопки боту будет отправлено сообщение, текст которого представляет собой то, что написано на кнопке. То есть если клиент нажмет «Помощь», то боту придет сообщение с текстом “Помощь“. Для него это как будто бы клиент сам написал текст “Помощь“ и отправил бы ему. Ну а затем вы обрабатываете такие сообщения.

InlineKeyboardMarkup Это тоже массив массивов, он похож на предыдущий Markup, но логика работы здесь немного другая. Такая клавиатура привязывается к определенному сообщению и существует только для него. Вот метод для установки Inline-клавиатуры

private void setInline() < List> buttons = new ArrayList<>(); List buttons1 = new ArrayList<>(); buttons1.add(new InlineKeyboardButton().setText(“Кнопка“).setCallbackData(17)); buttons.add(buttons1); InlineKeyboardMarkup markupKeyboard = new InlineKeyboardMarkup(); markupKeyboard.setKeyboard(buttons); >

Создаем List в List , добавляем в первую строку Inline-кнопку. Такая кнопка может содержать URL, ссылку на канал или же CallbackQuery , о которой я напишу чуть позже. Здесь мы устанавливаем текст для нашей кнопки, который будет видеть пользователь, а затем устанавливаем данные, которые будут отправлены боту. В нашем примере пользователь видит «Привет», а боту при нажатии отправится число 17, это и есть наш CallbackQuery . Пару слов о CallbackQuery . Для получения таких данных из объекта Update нужно выполнить update.getCallbackQuery() , этот метод возвращает CallbackQuery , из которого уже можно получить данные, переданные боту. Не нужно пытаться получить эти данные через метод update.getMessage().getText() , получите NullPointerException .

Если есть сообщение, отправляем на обработку в новый поток сообщение, если есть CallbackQuery , отправляем его на обработку в соответствующий поток. На CallbackQuery можно отправлять ответ. У каждого объекта в Telegram есть свой id. Для отправки ответа на определенный CallbackQuery нужно знать лишь его id, который мы получим из соответствующего объекта. Для отправки ответа вызовем такой метод:

Еще по теме:  Двухфакторная идентификация Телеграм забыл

public synchronized void answerCallbackQuery(String callbackId, String message) < AnswerCallbackQuery answer = new AnswerCallbackQuery(); answer.setCallbackQueryId(callbackId); answer.setText(message); answer.setShowAlert(true); try < answerCallbackQuery(answer); >catch (TelegramApiException e) < e.printStackTrace(); >>

ВАЖНО: Текст в ответе на CallbackQuery должен быть не длиннее 200 символов! При отправке такого ответа клиент получит всплывающее окно, в котором будет написано сообщение.

Такое окно может исчезнуть через несколько секунд само после появления, а может висеть до тех пор, пока пользователь не нажмет ок. Для переключения этих режимов мы вызываем метод answer.setShowAlert(true) . При true окошко висит до нажатия ок, при false исчезает через 5 секунд. В принципе это все базовые фишки библиотеки Telegram bot.

Такие вещи как отправка мультимедиа, геолокации и тд вы при желании сможете освоить из документации. Давайте перейдем к деплою нашего бота на хостинге. Для своего проекта я выбрал Heroku, тк по моему мнению это достаточно удобный хостинг, который имеет свой CLI. Он бесплатен, но на таком тарифе ваш бот при отсутствии запросов будет уходить в спячку через 30 минут.

Когда же к нему будет отправлен запрос, он просыпается. Это происходит довольно быстро, вы даже не заметите(если конечно коннект к БД не поднимается заново). Ограничение на бесплатный тариф — 5MБ база данных, 100МБ дисковое пространство, 2ТБ траффика в месяц, 1 дино. Дино — это ваше запущенное приложение.

Скажу сразу, именно стадия деплоя вызвала у меня трудности, так как я до этого никогда не разворачивал свои приложения. Heroku при деплое требует наличия файла с именем Procfile(без расширения). Создаем его в корне проекта, пишем туда worker: sh target/bin/workerBot workerBot – имя, которое мы указываем в pom.xml Будет запускаться sh скрипт, генерируемый с помощью Maven плагина appassembler-maven-plugin. В скрипте описан запуск скомпилированного jar. Имя запускаемого класса указывается между , имя скрипта между pom.xml:

. . org.codehaus.mojo appassembler-maven-plugin 1.1.1 target com.home.server.TelegramBot workerBot package assemble

Перед началом этого процесса вам следует зарегистрироваться на Heroku, установить Git и Heroku CLI.

Если вашему приложению необходима БД, то при оформлении нового приложения не забудьте добавить нужную вам БД. Далее вам необходимо узнать host, username, password и port вашей БД, а после указать в своем приложении. Далее перед деплоем выполните сборку вашего проекта с помощью Maven.

mvn clean install

Для начала мы переходим в каталог нашего проекта, инициализируем репозиторий командой git init Затем добавляем в этот репозиторий свой проект

git add .
После коммитим изменения
git commit -m “First commit in project”
Далее вам нужно залогиниться на heroku, пишем в командной строке
heroku login

Вводим свои данные, указаные при регистрации. После вам нужно узнать URL вашего репозитория на heroku, делается это в настройках. Затем пишем

git remote add heroku [url]
Для вашего репозитория добавится удаленный репозиторий heroku. Далее пишем
git push heroku master
Ждем… При успешном деплое приложения выполняем команду

heroku ps:scale worker=1

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

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

Создание Телеграм-бота для чата: разработка и настройка, как скопировать и сделать ссылку на него

FAQ

Автор fast12v0_steleg На чтение 7 мин Просмотров 160 Опубликовано 09.01.2020

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

Для чего нужны боты в Telegram

Программы-помощники способны выполнять постоянно повторяющиеся действия.

Создание бота в Telegram

  • проводить опросы среди пользователей;
  • делать приветствие на русском языке и рассылку в свой чат;
  • поддерживать общение;
  • загружать книги, видео;
  • разрабатывать спортивный прогноз;
  • находить информацию, соответствующую запросу;
  • присылать оповещения об обновлениях;
  • управлять системой «умный дом»;
  • организовывать доставку еды;
  • делать ставки на спорт, исходя из связей с предыдущими матчами;
  • проводить обучение, развлекать;
  • заниматься отладкой продаж товара в интернет-магазине;
  • проводить оплату через банк;
  • зарабатывать деньги на Битрикс24 или других бизнес сервисах с выводом на киви и электронные кошельки;
  • заниматься майнингом криптовалют;
  • загружать коды на прокси;
  • показывать курс валют, реагировать на его изменение в обменнике.

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

К достоинствам его использования также относят:

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

Способы создания бота

Сделать робота можно несколькими способами. Рассмотрим каждый из них подробно.

Еще по теме:  Аккаунты Телеграм json tdata что значит

Вручную

Написать бота для telegram могут те, кто знаком с языками программирования (Питон, с++, Java и т. д.). Кроме этого понадобится регистрировать хостинг. Для большинства клиентов такой вариант является проблематичным. Юзеры, не обладающие необходимыми навыками, идут более простым путем – пользуются специальными сервисами.

Веб-конструкторы

Не так давно разработка ботов для telegram была доступна только программистам. Сегодня, с появлением онлайн-конструкторов, сделать это может даже новичок-«чайник».

Самыми популярными сервисами являются:

  1. Flow XO используется для создания, сопровождения скриптов. Разработчики предлагают юзать платной и бесплатной версиями. Здесь есть большой выбор готовых шаблонов. Юзеру остается только определить, что ему подходит.
  2. Chatfuel – бесплатный сервис, позволяющий разработать робота для Фейсбук и Телеграм. Несмотря на огромный функционал, конструктор прост в применении. За время существования этого веб-сервиса, им уже воспользовалось около 15 млн. человек. Созданного помощника можно интегрировать с Твиттер, Ютуб, Инстаграм и другими социальными сетями.
  3. Recast AI считается одним из самых доступных и простых создателей ботов. Сервис способен автоматически распознавать естественный язык. Разработчики предлагают платные и бесплатные тарифы. Их функции примерно одинаковы, а цена небольшая. Отличием является то, что версия, за которую нужно платить, используется для корпоративных клиентов и командной работы.

Инструкция по созданию бота

Как создать бота в Телеграме

Разработку и настройку робота для Телеграм нельзя назвать слишком сложным заня-тием. Поэтому этот мессенджер так популярен у различных компаний и организаций.

Старт и добавление в Telegram

Создание телеграм-бота лучше проводить на компьютере, так как понадобятся дополнительные файлы, с которыми на Айфоне или Андроиде работать неудобно.

Если программа инсталлирована, а ее активация проведена, приступайте к написанию помощника. Если нет, то нужно скачать и активировать приложение.

Алгоритм разработки автобота следующий:

Теперь осталось только сохранить, настроить бота в телеграме и использовать его по назначению.

Детальная инструкция видна на видео:

Команды

Основная задача роботов – отвечать на запросы участника.

Для этого помощникам прописывают соответствующие команды в меню /commands:

  1. Вбить имя и текст, который будет появляться в качестве ответа на задание.
  2. Подождать, пока «builder» пришлет пост об успешном создании.

Настройка меню

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

Прописывают функции при помощи /commands:

  1. Выбрать категорию «настроить menu».
  2. Добавить новый пункт, присвоив имя.
  3. Проверить созданное действие.

Работа с новым ботом

Способы создания в Телеграм

После того, как помощник создан, можно приступать к работе с ним: проведению опросов, откладыванию постов или их автоматическому размещению.

Автопостинг

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

Чтобы сделать это, для начала потребуется:

  1. Задать роботу команду, прописав /autoposting.
  2. В нижней части экрана расположены ярлычки, соответствующие определенным соцсетям. Среди них нужно выбрать те, откуда планируется делать репост.
  3. Прописать гиперссылку на конкретную страницу сайта, с которого будут транслироваться новости. Вводить учетные данные для этого не нужно.

Создание отложенного поста

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

Чтобы увеличить количество читателей, систематизировав выход материалов, предусмотрена функция отложенного постинга. Это значит, что запланированная новость печатается сейчас, но подписчики смогут ее увидеть в заранее установленное время.

Для этого нужно:

  1. Открыть бот и прописать /newpost.
  2. Ввести необходимый текст.
  3. В нижней части экрана выбрать команду «Отложить пост».
  4. Указать точное время в данный момент.
  5. Выбрать, во сколько сообщение должно быть добавлено.
  6. Сохранить информацию.

Прописывать время своего часового пояса нужно только при первом размещении. Бот запомнит информацию и в последующие разы придется указывать исключительно момент выхода публикации. До этого статья будет храниться в архиве.

Создание опроса

При помощи роботов можно делать голосование для сбора информации в Телеграм.

Для этого нужно:

  1. Написать имя соответствующего помощника и перейти к диалогу с ним.
  2. Отправить роботу основной вопрос.
  3. Придумать варианты ответов.
  4. В самом конце набрать /done.
  5. Дождаться ссылки и перейти по ней, указав группу, где нужно разместить опросник.

Плюсы и минусы ManyBot и BotMother

Конструктор для создания ботов

Создание бота в telegram может осуществ-ляться разными методами. Самым простым и распространенным является использова-ние специальных конструкторов. У каждого из них есть свои достоинства и недостатки.

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

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

Другим доступным сервисом является BotMother, у которого сложно выявить минусы. Единственное, что отмечают пользователи – возможность создания free-бота в одном экземпляре и недоступность бесплатных функций. Стоимость зависит от выбранного тарифа.

Вывод

Боты – полезные и удобные программы, позволяющие упростить жизнь администра-торов каналов Телеграм. С их помощью получится делать рассылку, скачивать и удалять информацию, создавать опросы, автопостинг, зарабатывать, выполнять автопродажи и прочее.

Помощники создаются при помощи языков программирования. Те, кто в этом полный ноль, заказывают написание стандартных макросов у фрилансеров или пользуются специальными конструкторами.

Детальная инструкция видна на видео:

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

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