Первый телеграм бот🤖
Просто заинтересовался таким языком, как ruby. Решил сделать какой-нибудь проект. Давно хотел заняться ботами, но никак руки не доходили. Время пришло.
Должен пояснить, что руби я не учил🙃. По статистике язык не очень популярный (хотя мне много раз говорили, что на руби написан гитхаб), так что я решил не проходить курсы или видеогайды на ютьюбе, а познать язык на практике.
Но для начала нужно понять, что мне нужно использовать.
На чём будем писать? Ну явно не на рельсах. Есть какая-нибудь библиотека для ботов? Есть, "telegram-bot-ruby". На чём писать разобрались, где этот бот будет находиться? У тебя есть лишний сервер? У меня нет, так что идея была закинуть бота в облако. А конкретнее на Heroku, тоже новая для меня вещь. Как я понял, для подобных проектов на руби Heroku очень классное решение. Все компоненты есть, осталось написать самого бота.
Как я бота писал
Итак, для начала нужно было получить токен. Как это сделать? Вот так:
Что будет делать бот? Отвечать на вопросы на рандом. На практике оказалось, что это очень полезная вещь. Если не можешь выбрать что-то, долго сомневаешься, спроси бота и всё.
Код:
require 'telegram/bot' TOKEN = '2033359127:AAHliuwKNZ11-zyGbyGOR3-RXvsOMnPd5ww'
Записываем токен и подключаем библиотеку.
ANSWERS = [ "Да, кончно", "100%", "Да", "100000000%", "Несомненно", #-=-=-=-=- "Мб", "50/50", "Скорее да, чем нет", "Скорее нет, чем да", #-=-=-=-=- "Нет, пфф", "Да неет", "Точно нет", "0%", "Нет", ]
Создаём массив с ответами (лучше чтобы ответов было много).
Telegram::Bot::Client.run(TOKEN) do |bot| bot.listen do |message| case message.text when '/start', '/start start' bot.api.send_message( chat_id: message.chat.id, text: "Привет, #{message.from.first_name}") when 'Это точно случайные ответы?' bot.api.send_message( chat_id: message.chat.id, text: "Конечно!!! 10000000%") else bot.api.send_message( chat_id: message.chat.id, text: ANSWERS.sample) end end end
Ну а тут самое важное: ловим сообщение, проверяем его. Если сообщение "/start" или "/start start", приветствуем пользователя. Если юзер написал: "Это точно случайные ответы?" отвечаем, что конечно это так. В остальных случаях выводим случайный ответ:
text: ANSWERS.sample
Итак, код есть, оставалось залить его на Heroku
Для начала я создал "Procfile" (без расширений, просто Procfile). Это файл, который говорит Хероку что именно делать (какой файл выполнять).
Дальше зарегистрировался на сервисе, скачал CLI, настроил Buildpack, создал приложение, закоммитил код, и написал
git push heroku master
Готово! Бот развёрнут в облаке. Заняло у меня всё это один вечер.
Итог
Конечно я не написал как скачать CLI и настроить buildpack, но, во-первых это не гайд, во-вторых об этом полно роликов на ютьюбе, лучше я не расскажу. Просто решил попробовать новый ЯП, и новую область. Писать ботов мне понравилось. На столько понравилось, что на той же неделе я решил написать ещё одного бота, на этот раз на golang, но это уже другая история. Исходники