Бот для телеграм гороскоп

Телеграм-бот на Python

В пер­вой части мы сде­ла­ли горо­скоп на Python, кото­рый выда­ёт нам про­гноз на день по зна­ку зоди­а­ка. Сего­дня пой­дём даль­ше: теперь этот же гене­ра­тор горо­ско­пов будет встро­ен в Теле­грам в виде бота.

Да. То, что обыч­но на кур­сах про­да­ют за 50 тысяч руб­лей, мы вам сей­час рас­ска­жем за 15 минут бес­плат­но.

Как всё будет работать

В этом про­ек­те три зве­на: наш ком­пью­тер с Python, сер­вер Теле­гра­ма и Телеграм-клиент.

На ком­пью­те­ре рабо­та­ет интер­пре­та­тор Python, а внут­ри интер­пре­та­то­ра кру­тит­ся наша про­грам­ма на Python. Она отве­ча­ет за весь кон­тент: в неё зало­же­ны все шаб­ло­ны тек­ста, вся логи­ка, всё пове­де­ние.

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

Когда кли­ент с Теле­гра­мом запра­ши­ва­ет у бота горо­скоп, запрос при­хо­дит на сер­вер, а сер­вер отправ­ля­ет его на наш ком­пью­тер. Запрос обра­ба­ты­ва­ет­ся про­грам­мой на Python, ответ идёт на сер­вер Теле­гра­ма, сер­вер отда­ёт ответ кли­ен­ту. Изи:

Обра­ти­те вни­ма­ние, что рабо­тать наш бот будет толь­ко тогда, когда вклю­чён ком­пью­тер и на нём запу­ще­на про­грам­ма на Python. Если ком­пью­тер выклю­чит­ся, про­па­дёт интер­нет или вы отклю­чи­те интер­пре­та­тор, то бот рабо­тать пере­ста­нет: запро­сы будут при­хо­дить, но никто на них не отве­тит. В одной из сле­ду­ю­щих частей мы сде­ла­ем так, что­бы это всё рабо­та­ло на уда­лён­ном сер­ве­ре и было все­гда доступ­но.

Что будем делать

Если запи­сать поша­го­во наш план, то он будет выгля­деть так:

  1. Реги­стри­ру­ем бота в Теле­гра­ме.
  2. Уста­нав­ли­ва­ем Python-библиотеку для рабо­ты с Теле­гра­мом.
  3. Добав­ля­ем биб­лио­те­ку в про­грам­му с горо­ско­пом и учим про­грам­му реа­ги­ро­вать на сооб­ще­ния в чате.
  4. Пишем там же код, кото­рый пока­жет кноп­ки для выбо­ра зна­ков зоди­а­ка.
  5. Сде­ла­ем так, что­бы по кноп­кам появ­лял­ся горо­скоп для это­го зна­ка.

Теперь по оче­ре­ди раз­бе­рём каж­дый пункт.

1. Регистрация нового бота

В Теле­гра­ме нахо­дим канал @BotFather — он отве­ча­ет за реги­стра­цию новых ботов:

Нажи­ма­ем Start и пишем коман­ду /newbot. Нас по оче­ре­ди спро­сят про назва­ние бота и его ник­нейм (мы при­ду­ма­ли толь­ко с тре­тьей попыт­ки, пото­му что осталь­ные были заня­ты):

2. Установка библиотеки

Есть два основ­ных спо­со­ба рабо­тать с теле­гра­мом в Python: через биб­лио­те­ку telebot и с помо­щью Webhook. Мы будем исполь­зо­вать биб­лио­те­ку — так про­ще и быст­рее.

Что­бы её уста­но­вить, запус­ка­ем команд­ную стро­ку от име­ни адми­ни­стра­то­ра (если у вас Windows) и пишем коман­ду pip install pytelegrambotapi

Подключаем библиотеку и получаем сообщения

Что­бы про­грам­ма на Python уме­ла управ­лять Телеграм-ботами, нуж­но в самое нача­ло кода доба­вить стро­ки:

import telebot; bot = telebot.TeleBot(‘токен’);

Един­ствен­ное, о чём нуж­но не забыть — заме­нить сло­во «токен» на насто­я­щий токен, кото­рый дал нам @BotFather. Откры­ва­ем про­грам­му горо­ско­па и добав­ля­ем.

Теперь научим бота реа­ги­ро­вать на сло­во «При­вет». Для это­го доба­вим после стро­чек с импор­том новый метод и сра­зу про­пи­шем в нём реак­цию на нуж­ное сло­во. Если не зна­е­те, что такое метод и зачем он нужен, — читай­те ста­тью про ООП.

И послед­нее, что нам оста­лось сде­лать до запус­ка, — доба­вить после мето­да такую строч­ку:

Она ска­жет про­грам­ме, что­бы она непре­рыв­но спра­ши­ва­ла у бота, не при­шли ли ему какие-то новые сооб­ще­ния. Запус­ка­ем про­грам­му и про­ве­ря­ем, как рабо­та­ет наш бот.

Добавляем кнопки

Что­бы поль­зо­ва­те­лям наше­го бота было удоб­но, пока­жем им сра­зу все зна­ки зоди­а­ка в виде кно­пок. А потом сде­ла­ем так, что когда на них нажи­ма­ешь — появ­ля­ет­ся горо­скоп для это­го зна­ка на сего­дня.

Добав­ля­ем код с кноп­ка­ми в раз­дел, кото­рый реа­ги­ру­ет на «При­вет»:

Добавляем обработчик кнопок

Ско­рее все­го, вы заме­ти­ли, что в каж­дой кноп­ке у нас напи­са­но callback_data=’zodiac’ . Это зна­чит, что при нажа­тии на любую кноп­ку у нас будет вызы­вать­ся один и тот же метод, кото­рый отве­ча­ет за горо­скоп. Если вы хоти­те сде­лать чест­ный горо­скоп, при­дёт­ся в каж­дой кноп­ке про­пи­сать своё назва­ние обра­бот­чи­ка, а потом задать его пове­де­ние, тоже для каж­дой кноп­ки.

Давай­те сде­ла­ем обра­бот­чик кно­пок, кото­рый будет реа­ги­ро­вать на ‘zodiac’ и выда­вать слу­чай­ный текст, как в исход­ной про­грам­ме. Для это­го доба­вим новый метод в про­грам­му:

Убираем лишнее

Теперь у нас есть гото­вый бот, и нам оста­лось толь­ко убрать лиш­ний код, кото­рый рань­ше отве­чал за вывод зна­ков зоди­а­ка в кон­со­ли. После чист­ки полу­ча­ем гото­вую про­грам­му:

Как вид­но, боль­шую часть кода зани­ма­ет тупое пере­чис­ле­ние всех зна­ков зоди­а­ка. Мы мог­ли бы авто­ма­ти­зи­ро­вать это через цик­лы, но на ули­це такая хоро­шая пого­да, что мы это отло­жим.

Что дальше

Впе­ре­ди — без­гра­нич­ные воз­мож­но­сти:

  • мож­но сде­лать инди­ви­ду­аль­ный горо­скоп для каж­до­го зна­ка;
  • научить бота новым коман­дам;
  • при­сы­лать све­жий горо­скоп каж­дое утро;
  • нала­дить непре­рыв­ную рабо­ту на веб-сервере.
Читайте также:  Гороскоп по дню рождению по месту рождения

Напи­ши­те в ком­мен­та­ри­ях, что бы вы хоте­ли от тако­го бота? Что дол­жен уметь иде­аль­ный бот с горо­ско­пом?

Источник

Телеграм-бот на Python

15 минут — и можете запускать своего первого бота.

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

Да. То, что обычно на курсах продают за 50 тысяч рублей, мы вам сейчас расскажем за 15 минут бесплатно.

Как всё будет работать

В этом проекте три звена: наш компьютер с Python, сервер Телеграма и Телеграм-клиент.

На компьютере работает интерпретатор Python, а внутри интерпретатора крутится наша программа на Python. Она отвечает за весь контент: в неё заложены все шаблоны текста, вся логика, всё поведение.

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

Когда клиент с Телеграмом запрашивает у бота гороскоп, запрос приходит на сервер, а сервер отправляет его на наш компьютер. Запрос обрабатывается программой на Python, ответ идёт на сервер Телеграма, сервер отдаёт ответ клиенту. Изи:

Обратите внимание, что работать наш бот будет только тогда, когда включён компьютер и на нём запущена программа на Python. Если компьютер выключится, пропадёт интернет или вы отключите интерпретатор, то бот работать перестанет: запросы будут приходить, но никто на них не ответит. В одной из следующих частей мы сделаем так, чтобы это всё работало на удалённом сервере и было всегда доступно.

Что будем делать

Если записать пошагово наш план, то он будет выглядеть так:

  1. Регистрируем бота в Телеграме.
  2. Устанавливаем Python-библиотеку для работы с Телеграмом.
  3. Добавляем библиотеку в программу с гороскопом и учим программу реагировать на сообщения в чате.
  4. Пишем там же код, который покажет кнопки для выбора знаков зодиака.
  5. Сделаем так, чтобы по кнопкам появлялся гороскоп для этого знака.

Теперь по очереди разберём каждый пункт.

1. Регистрация нового бота

В Телеграме находим канал @BotFather — он отвечает за регистрацию новых ботов:

Нажимаем Start и пишем команду /newbot. Нас по очереди спросят про название бота и его никнейм (мы придумали только с третьей попытки, потому что остальные были заняты):

2. Установка библиотеки

Есть два основных способа работать с телеграмом в Python: через библиотеку telebot и с помощью Webhook. Мы будем использовать библиотеку — так проще и быстрее.

Чтобы её установить, запускаем командную строку от имени администратора (если у вас Windows) и пишем команду pip install pytelegrambotapi

Подключаем библиотеку и получаем сообщения

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

import telebot;
bot = telebot.TeleBot(‘токен’);

Единственное, о чём нужно не забыть — заменить слово «токен» на настоящий токен, который дал нам @BotFather. Открываем программу гороскопа и добавляем.

Программа-гороскоп

Теперь научим бота реагировать на слово «Привет». Для этого добавим после строчек с импортом новый метод и сразу пропишем в нём реакцию на нужное слово. Если не знаете, что такое метод и зачем он нужен, — читайте статью про ООП .

И последнее, что нам осталось сделать до запуска, — добавить после метода такую строчку:

Она скажет программе, чтобы она непрерывно спрашивала у бота, не пришли ли ему какие-то новые сообщения. Запускаем программу и проверяем, как работает наш бот.

Добавляем кнопки

Чтобы пользователям нашего бота было удобно, покажем им сразу все знаки зодиака в виде кнопок. А потом сделаем так, что когда на них нажимаешь — появляется гороскоп для этого знака на сегодня.

Добавляем код с кнопками в раздел, который реагирует на «Привет»:

Добавляем обработчик кнопок

Скорее всего, вы заметили, что в каждой кнопке у нас написано callback_data=’zodiac’. Это значит, что при нажатии на любую кнопку у нас будет вызываться один и тот же метод, который отвечает за гороскоп. Если вы хотите сделать честный гороскоп, придётся в каждой кнопке прописать своё название обработчика, а потом задать его поведение, тоже для каждой кнопки.

Давайте сделаем обработчик кнопок, который будет реагировать на ‘zodiac’ и выдавать случайный текст, как в исходной программе. Для этого добавим новый метод в программу:

Убираем лишнее

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

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

Что дальше

Впереди — безграничные возможности:

  • можно сделать индивидуальный гороскоп для каждого знака;
  • научить бота новым командам;
  • присылать свежий гороскоп каждое утро;
  • наладить непрерывную работу на веб-сервере.

Напишите в комментариях, что бы вы хотели от такого бота? Что должен уметь идеальный бот с гороскопом?

Источник

Поделиться с друзьями
Гадания и гороскопы
Adblock
detector