Создание бота в телеграме: руководство для начинающих

 

https://www.process.st/wp-content/uploads/2018/05/How-to-Build-Your-First-Telegram-Bot-A-Guide-for-Absolute-Beginners-01.png

Я был одержим научной фантастикой, когда был подростком, поэтому кодирование всегда меня привлекало. Меня нравилась сама мысль о том, что можно написать программу, которая ведет себя случайным образом – для меня, это было нечто в области фантастики!

Эта навязчивая идея подпитывала мои первые попытки в кодировании, и в результате появилось много забавных ботов. Например, этот, который описывает страшные места, путем объединения слов наугад, и этот, который рисует PNG в цветах блоков.

https://www.process.st/wp-content/uploads/2018/05/Snip20180516_10.png

Ничего необычного. Я едва ли мастер-программист, и вам тоже не обязательно им быть. Благодаря базовому пониманию кодирования и API-интерфейсов вы можете создать действительно полезное программное обеспечение для удовольствия и прибыли. В этом уроке мы рассмотрим создание бота в Telegram с нуля.

Бот Telegram можно использовать с Intercom API, чтобы предоставить агентам поддержки доступ к своим клиентам, которые используют Telegram. Он также может включать автоматизацию, которая объединяет полезные ресурсы с чатом в прямом эфире, например, в примере ниже из orat.io :

https://www.process.st/wp-content/uploads/2018/05/Oratio-Telegram-Support.png

Telegram – отличный дом для ботов, ориентированных на клиентов, с более чем 200 000 000 активных пользователей в месяц и годовой прирост в 50% . Это платформа, которую может использовать ваша аудитория, что поможет вам избежать разногласий и будет способствовать взаимопониманию. Кроме того, создание ботов для Telegram – самый простой способ создания ботов.

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

Первый бот, который я сделал для Telegram, использовал RSS, чтобы найти материалы на канале Hacker News, которые соответствуют поисковому запросу:

https://www.process.st/wp-content/uploads/2018/05/Snip20180516_81.png

Можете воспользоваться этим ботом – он здесь и он жив!

Благодаря знаниям из этого руководства и дальнейшему прочтению статьи вы сможете создать чат-чат поддержки для своей компании, читатель RSS-каналов, панель управления для вашего умного дома или бот, который отвечает, используя только котировки Шекспира. Маленькие программные проекты, подобные этому, очень интересны и бесконечно расширяемы. Чем больше вы читаете и придумываете новых функций, тем дальше вы можете продвинуть своего бота.

В этом руководстве вы узнаете:

  • Как написать код для бота с нуля
  • Как добавить новые команды в словарь бота
  • Основные команды терминала для создания файлов и навигации по папкам
  • Немного языка программирования Ruby
  • Как расширить Ruby с помощью Gems (пакет инструментов)
  • Как заставить ваш бот удалял случайные ответы из списка
  • Несколько простых команд git, которые помогут вам управлять и передавать ваши файлы
  • Как развернуть бота на сервере и запустить его 24/7

Перед запуском вам понадобятся:

  • Баш-терминал.  Поставляется в комплекте с такими операционными системами как macOS и Linux, но не Windows. Если вы следуете этому руководству на компьютере под управлением Windows, у которого нет обновления для Windows 10 , вы можете использовать .
  • Рубин. Обратитесь к официальной документации Ruby для руководств по конкретным ОС. Я лично использую Homebrew на macOS, но пользователи Windows могут установить его с помощью виртуального эмулятора, который вы можете выбрать здесь (https://www.slant.co/topics/1552/~best-terminal-emulators-for-windows) .
  • Bundler. Bundler помогает управлять пакетами инструментов (gems) для Ruby, которые добавляют дополнительные функции вашим приложениям. Для этого вам понадобится добавить интерфейс к API Telegram к вашему боту. Просто введите  gem install bundler в свой, чтобы установить его.
  • Текстовый редактор. Теоретически вы можете использовать Notepad или TextEdit, но большинство из них рекомендовало бы специально созданный редактор, такой как Atom , который выделяет синтаксис и помогает сделать ошибки кода более очевидными.

С этим все, давайте пойдем дальше.

Шаг 1. Загрузите приложение Telegram для рабочего стола

Скачать Telegram для рабочего стола

Телеграмм – это преимущественно мобильное приложение, но для удобства вы можете установить его на том же компьютере, который вы используете для написания кода. Таким образом, вы можете быстро протестировать его, не используя телефон. И вы сможете скопировать и вставить ключ API-робота Telegram прямо в текстовый редактор.

Как же получить этот ключ API?

Шаг 2. Чат с BotFather, чтобы получить ключ API

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

https://www.process.st/wp-content/uploads/2018/05/Snip20180510_36.png

Отправьте команду запуска BotFather, набрав /start .

Вы увидите список команд, которые помогут вам создавать, редактировать и управлять ботами. Поскольку это ваш первый раз, вам нужно /newbot .

https://www.process.st/wp-content/uploads/2018/05/Snip20180510_33.png

По сравнению с процессом создания бот-сервера Twitter, бота Mastodon или любого другого бота, с которым я экспериментировал, Telegram упрощает первоначальную настройку. Наверное, это доказывает, что Telegram ― это отличный инструмент для работы с ботом!

После предоставления команды /newbot вы можете выбрать имя и имя пользователя для своего бота. Название – это то, что ваши пользователи будут видеть бота, как в списке своих контактов, и имя пользователя, как они его найдут. Подумайте о имени пользователя, как и в Twitter; оно должно быть уникальным, и лучше всего, если оно короткий и легко запоминается.

https://www.process.st/wp-content/uploads/2018/05/Snip20180510_37.png

После этого вам будет предоставлен ключ API вашего бота. Ключ API – это то, благодаря чему Telegram может распознать, что код, который вы пишете, связан с этим конкретным ботом. У каждого бота есть свой API-ключ, и вы не должны делиться им ни с кем, иначе люди могут захватить вашего бота и заставить его творить ужасные вещи.

На этом чат BotFather завершен, переходим к коду!

Шаг 3: Настройка GEMS и каталога бота

Откройте терминал и введите mkdir telegram-bot . Это создаст новый каталог для файлов вашего бота. Лучше всего держать их в одной папке, чтобы можно было легко ей управлять. Перейдите в каталог cd telegram-bot и выполните следующие действия:

touch Gemfile
touch bot.rb
atom .

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

https://www.process.st/wp-content/uploads/2018/05/Snip20180510_39.png

Нажмите Gemfile на боковой панели Atom и вставьте следующее:

Это нужно Bundler, чтобы захватить интерфейс Ruby API Telegram от rubygems.org.

Чтобы завершить настройку gem, вернитесь к своему терминалу и введите bundle . Вот что вы должны увидеть:

https://www.process.st/wp-content/uploads/2018/05/Snip20180510_40.png

Вот и все, что касается настройки gems, теперь мы наконец попадаем в код.

Кодирование вашего первого бота Telegram

Фактический код, который будет постоянно работать на сервере, находится внутри файла bot.rb. Сейчас он пуст, но здесь мы собираемся связать gems с Telegram, который мы только настроили и создадим бота.

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

https://www.process.st/wp-content/uploads/2018/05/Snip20180510_41.png

Так будет выглядеть в Telegram то, что делает код выше:

https://www.process.st/wp-content/uploads/2018/05/Snip20180510_42.png

Давайте посмотрим, что делает каждая часть кода:

(Замените TOKEN маркером API, который вы скопировали из BotFather)

Ruby позволяет довольно легко угадать, какой код будет выполняться. Три приведенные выше строки добавляют функциональность ботов Telegram к вашему файлу, а затем создают новый бот-объект из класса TelegramBot, аутентифицированный вашим токеном (генератор одноразовых паролей в системах аутентификации), поэтому программа знает, куда отправлять данные.

Следующая часть – одна большая петля. Сначала это кажется сложным, сейчас я объясню вам все по порядку.

 

Первая строка говорит боту продолжать слушать команды. И когда он получает команду передать его в переменную message . Строка puts записывает команду на ваш терминал, чтобы вы могли видеть, что происходит во время запуска бота.

Действия ответчика бота хранятся в case-заявлении. Ввод case case подается через переменную message после того, как он был очищен методом get_command_for . Текст ответа бота устанавливается в зависимости от сохраненной команды и затем отправляется с send_with до перезапуска цикла.

С помощью этой настройки теперь вы можете найти своего бота на Telegram и отправить команды /start и /greet и посмотреть его в действии.

Для этого сохраните изменения в Atom и запустите ruby bot.rb в терминале. Пока этот терминал открыт и работает, ваш бот отправляет ответы!

Настройка нового блестящего бота

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

Части, на которые следует обратить внимание при настройке, это строки when /command/i и текст между кавычками в строках reply.txt . Это те сообщения, которые принимает ваш бот, и которые он отправляет обратно в качестве ответов.

Итак, если вы хотите сказать что-то другое как ответ на команду /greet , вы должны изменить значение reply.text под командной строкой приветствия ( when /greet/i ). Вот вариант, который вы могли бы попробовать:

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

https://www.process.st/wp-content/uploads/2018/05/Snip20180514_63.png

Превращение вашего бота в нечто удивительное

Вы можете добавить столько команд, ответов и функций своему боту, сколько захотите. Большинство из них – это задачка для вашего воображения. Если вы хотите узнать много других интресных вещей, которые применимы к вашему боту, начните с Learn Ruby the Hard Way, чтобы понять основные принципы языка кодирования. С небольшой практикой и надежной зависимостью от StackOverflow вы сможете:

  • Подключите другие API-интерфейсы, чтобы извлекать данные из таких источников, как Airtable , Slack , RSS или Twitter . Здесь наблюдается действительно захватывающая функциональность – вы можете создать бота, который действует как диалоговый интерфейс к набору данных или функций, например, боту, который возвращает результаты поиска из Twitter или сообщения в Slack.
  • Храните пользовательский ввод в базе данных. Вы можете создать бот Telegram, который предлагает автоматическую поддержку пользователям или отвечает на запросы, и сохраняет их адреса электронной почты в базе данных. Sequel gem позволяет легко создавать, писать, редактировать и читать базы данных.
  • Постройте свою текстовую игру. Colossal Cave Adventure – одна из первых игр с использованием бота , была перенесена на Telegram. Проверьте здесь и посмотрите источник здесь .

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

Запуск бота 24/7

Прямо сейчас, ваш бот работает на вашем компьютере. Это нормально, пока вам не потребуется перезагрузить компьютер, ваш wi-fi или ваш компьютер перейдёт в спящий режим. Когда это произойдет, это завершит процесс работы бота, и пользователи не получат от него ответа.

Процесс перемещения вашего бота из среды разработки (ваш компьютер, на котором вы использовали Atom для записи бота) в производственную среду (сервер), называется развертыванием. Существует несколько вариантов развертывания вашего бота, но в обоих случаях мы начнем с загрузки файлов в Bitbucket . Bitbucket позволяет использовать git , систему управления версиями, которая поможет вам безопасно сделать и отслеживать изменения в коде вашего бота. Загружая файлы бота в Bitbucket, вы можете использовать Bitbucket как способ захватить файлы бота, когда вы вошли в систему.

Подпишитесь на Bitbucket и создайте свой сервер.

https://www.process.st/wp-content/uploads/2018/05/Snip20180514_64.png

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

Теперь следуйте инструкциям Bitbucket. Вот как это сделал я:

https://www.process.st/wp-content/uploads/2018/05/Snip20180514_65.png

После ввода этих двух выделенных команд и предоставления моего пароля Bitbucket, файлы загружаются по запросу. Когда ваш код живет в облаке, пришло время выбрать способ развертывания.

Развертывание с помощью Raspberry Pi

https://www.process.st/wp-content/uploads/2018/05/Raspberry-Pi-on-Desk.png

Этот одноплатный компьютер Raspberry Pi на моем столе содержит кучу ботов

Raspberry Pi – отличная инвестиция, если вы планируете создавать и развертывать боты – вы можете получить ее всего за 7 долларов плюс стоимость SD-карты. Он использует очень мало энергии , поэтому вы можете держать его на месте и не беспокоиться о стоимости. Возможно, возникнет соблазн купить пакет, который поставляется с клавиатурой, мышью и футляром, но вам нужно всего лишь зарядное устройство USB, SD-карту, кабель Ethernet и сам компьютер. Вероятно, у вас, наверное, больше всего этого в вашем офисе.

Развертывание с помощью облачного сервера

Вам не нужно владеть компьютером, на котором работает ваш бот, вы можете использовать память и мощность чужой машины для запуска бота удаленно. Популярные решения для развертывания в облаке включают Amazon Web Services (AWS), DigitalOcean и Heroku.

Самые подходящие для начального уровня – DigitalOcean и Heroku. Нажмите здесь, чтобы получить учетную запись DigitalOcean, которая поставляется с кредитом в размере 10 долларов – достаточно для запуска сервера в течение двух месяцев, пока вы его протестируете.

Когда вы подписываетесь на DigitalOcean , вы узнаете, как подключиться к серверу через SSH и запустить консоль.

https://www.process.st/wp-content/uploads/2018/05/Snip20180514_66.png

Затем, вам нужно проделать определённые действия на вашем ПК, независимо от того, какой сервер вы используете. После того, как вы настроили серверь, давайте перейдем к фактическому развертыванию.

Процесс развертывания

На новом сервере – будь то Raspberry Pi или облачный сервер, например, Digital Ocean, вам нужно установить Ruby, Bundler и Git:

Затем создайте новый каталог для своего бота, перейдите туда и загрузите файлы из Bitbucket со следующими командами:

https://www.process.st/wp-content/uploads/2018/05/Snip20180514_67.png

Не забудьте заменить URL выше (https: // benjbran …) URL-адресом вашего сервера. Вы найдете всю команду clone через Bitbucket, так что вам не придется делать это вручную.

Затем введите bundle для установки зависимостей gem, а затем ruby bot.rb чтобы запустить бот, который теперь будет работать постоянно.

Примечание. Если вы получаете доступ к своему серверу через SSH, вам нужно запустить бот с nohup ruby bot.rb  и убедиться, что бот не перестает работать, когда сеанс SSH завершается. Теперь вы можете закрыть окно, зная, что ваш бот тихонько подает звуковой сигнал в фоновом режиме.

Это всё, что нужно для создания вашего первого Бота в Telegram. По пути вы узнали о Ruby, gems, Telegram API и о том, как развернуть бота на сервере. Любые вопросы или предложения? Дай мне знать в комментариях!

 

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">