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

Телеграм-бот на 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 уме­ла управ­лять Телеграм-ботами, нуж­но в самое нача­ло кода доба­вить строки:

Един­ствен­ное, о чём нуж­но не забыть — заме­нить сло­во «токен» на насто­я­щий токен, кото­рый дал нам @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’ и выдавать случайный текст, как в исходной программе. Для этого добавим новый метод в программу:

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

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

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

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

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

чтобы не пропустить интересные проекты!

Источник

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Читайте также:  Гороскоп овен январь женщина овен 2017 год

Источник

Простой Telegram-бот на Python за 30 минут

На Хабре, да и не только, про ботов рассказано уже так много, что даже слишком. Но заинтересовавшись пару недель назад данной темой, найти нормальный материал у меня так и не вышло: все статьи были либо для совсем чайников и ограничивались отправкой сообщения в ответ на сообщение пользователя, либо были неактуальны. Это и подтолкнуло меня на написание статьи, которая бы объяснила такому же новичку, как я, как написать и запустить более-менее осмысленного бота (с возможностью расширения функциональности).

Часть 1: Регистрация бота

Самая простая и описанная часть. Очень коротко: нужно найти бота @BotFather, написать ему /start, или /newbot, заполнить поля, которые он спросит (название бота и его короткое имя), и получить сообщение с токеном бота и ссылкой на документацию. Токен нужно сохранить, желательно надёжно, так как это единственный ключ для авторизации бота и взаимодействия с ним.

Часть 2: Подготовка к написанию кода

Как уже было сказано в заголовке, писать бота мы будем на Python’е. В данной статье будет описана работа с библиотекой PyTelegramBotAPI (Telebot). Если у вас не установлен Python, то сперва нужно сделать это: в терминале Linux нужно ввести

Если же вы пользуетесь Windows, то нужно скачать Python с официального сайта .

После, в терминале Linux, или командной строке Windows вводим

Теперь все готово для написания кода.

Часть 3: Получаем сообщения и говорим «Привет»

Небольшое отступление. Телеграмм умеет сообщать боту о действиях пользователя двумя способами: через ответ на запрос сервера (Long Poll), и через Webhook, когда сервер Телеграмма сам присылает сообщение о том, что кто-то написал боту. Второй способ явно выглядит лучше, но требует выделенного IP-адреса, и установленного SSL на сервере. В этой статье я хочу рассказать о написании бота, а не настройке сервера, поэтому пользоваться мы будем Long Poll’ом.

Открывайте ваш любимый текстовый редактор, и давайте писать код бота!

Первое, что нужно сделать это импортировать нашу библиотеку и подключить токен бота:

Теперь объявим метод для получения текстовых сообщений:

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

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

Теперь добавим в наш метод немного функционала: если пользователь напишет нам «Привет», то скажем ему «Привет, чем я могу помочь?», а если нам напишут команду «/help», то скажем пользователю написать «Привет»:

Данный участок кода не требует комментариев, как мне кажется. Теперь нужно добавить в наш код только одну строчку (вне всех методов).

Теперь наш бот будет постоянно спрашивать у сервера Телеграмма «Мне кто-нибудь написал?», и если мы напишем нашему боту, то Телеграмм передаст ему наше сообщение. Сохраняем весь файл, и пишем в консоли

Где bot.py – имя нашего файла.

Теперь можно написать боту и посмотреть на результат:

Часть 4: Кнопки и ветки сообщений

Отправлять сообщения это несомненно весело, но ещё веселее вести с пользователем диалог: задавать ему вопросы и получать на них ответы. Допустим, теперь наш бот будет спрашивать у пользователя по очереди его имя, фамилию и возраст. Для этого мы будем использовать метод register_next_step_handler бота:

И так, данные пользователя мы записали. В этом примере показан очень упрощённый пример, по хорошему, хранить промежуточные данные и состояния пользователя нужно в БД, но мы сегодня работаем с ботом, а не с базами данных. Последний штрих – запросим у пользователей подтверждение того, что все введено верно, да не просто так, а с кнопками! Для этого немного отредактируем код метода get_age

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

Остаётся только дописать в начало файла одну строку:

Вот и всё, сохраняем и запускаем нашего бота:

Источник

Оцените статью