Share This
Связаться со мной
Крути в низ
Categories
//Создание Telegram бота на Python для признаний в любви

Создание Telegram бота на Python для признаний в любви

07.11.2021Category : Python

Используем свои знания Python для достижения счастья в личной жизни.

sozdanie telegram bota na python dlja priznanij v ljubvi 3b6861d - Создание Telegram бота на Python для признаний в любви

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

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

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

Получение API ключа для Telegram бота от BotFather

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

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

Перед этим нам нужно будет создать бота в Telegram. Для этого в приложении Telegram найдите бота под названием «BotFather».

sozdanie telegram bota na python dlja priznanij v ljubvi df24268 - Создание Telegram бота на Python для признаний в любви

После запуска бота нам будет показан список всех доступных команд. Для создания нового бота нужно использовать команду /newbot.

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

sozdanie telegram bota na python dlja priznanij v ljubvi ebedaa7 - Создание Telegram бота на Python для признаний в любви

Марк Лутц «Изучаем Python»

Скачивайте книгу у нас в телеграм

Скачать ×

Указав имя бота, нужно задать имя пользователя. Оно должно оканчиваться на слово bot, то есть быть в формате xxxbot. Заметьте, что изменить это имя в дальнейшем будет нельзя.

Как только ваш бот будет создан, вы сможете найти его в Telegram по имени (в моем случае это myfirstbot123).

Далее нам надо скопировать куда-нибудь в безопасное место уникальный токен, предоставленный нам для управления ботом при помощи API.

sozdanie telegram bota na python dlja priznanij v ljubvi ab6a9d1 - Создание Telegram бота на Python для признаний в любви

Интеграция Python с Telegram

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

Мы применим библиотеку python-telegram-bot. Эта библиотека использует модуль logging, который сперва надо настроить. А затем мы сохраним в коде наш API ключ Telegram.

# импортируем необходимые библиотеки import logging from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, CallbackQueryHandler, CallbackContext from telegram import InlineKeyboardButton, InlineKeyboardMarkup, Update # настраиваем модуль logging logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s') # сохраняем наш api токен TOKEN = 'INSERT YOUR TOKEN HERE!'

Далее зададим несколько функций, которые помогут нам начать работу с нашим ботом.

Первая необходимая команда — это /start. Эта команда выполняется, когда пользователь запускает бот. Для простоты давайте при запуске бота просто вернем сообщение «Testing 123». Мы встраиваем это сообщение с помощью метода update.message.reply_text. Благодаря этому всякий раз, получая команду или сообщение, наш бот будет отвечать на него текстом.

То же самое мы делаем для команды /hello, которая возвращает сообщение Hello World! и смайлик 😀, как только пользователь запустит ее. Справочник по юникодам эмодзи вы можете найти здесь. Обратите внимание, что для облегчения отладки я также настроил регистратор ошибок, чтобы мне всегда показывалось сообщение об ошибке.

def start(update, context):     # посылает сообщение в ответ на команду /start     update.message.reply_text('Testing 123')      def hello(update, context):     # посылает сообщение в ответ на команду /hello      update.message.reply_text('Hello World! U0001F600') # для отладки def error(update, context):     logger.warning('Update "%s" caused error "%s"', update, context.error)

На последнем шаге создадим функцию main(). Метод Updater считает наш API-ключ и зарегистрирует все обработчики, которые мы настроили для нашего бота. Обратите внимание, что для каждой команды, которую мы собираемся создать, нам нужно будет добавить обработчик этой самой команды. Бот запустится при запуске updater.start_polling().

# to start the bot def main():     # setup updating together with our telegram api token     updater = Updater(TOKEN, use_context=True) # get the dispatcher to register handlers     dp = updater.dispatcher # add command handlers for different command     dp.add_handler(CommandHandler("start", start))     dp.add_handler(CommandHandler("hello", hello)) # error logging     dp.add_error_handler(error) # start the bot     updater.start_polling() # set the bot to run until you force it to stop     updater.idle() if __name__ == '__main__':     main()

Собрав все воедино, протестируем нашего бота в Telegram. Запускаем бота и получаем сообщение Testing123. Аналогично, в ответ на команду /hello мы получаем сообщение Hello World! 😀.

sozdanie telegram bota na python dlja priznanij v ljubvi 745b31a - Создание Telegram бота на Python для признаний в любви

Программируем кнопку yes/no

В случае признания в любви мы ждем однозначного ответа: «да» или «нет». Пока что наш Telegram бот может возвращать сообщения только после того, как пользователь выполнит определенную команду. Есть ли у бота возможность отображать меню, чтобы пользователь мог выбрать и нажать нужную кнопку? Да, в Telegram боте есть такая функция. Она так и называется — buttons (кнопки).

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

Приведенный ниже код даст нашему боту возможность отобразить вопрос “BE MY GIRL OK?” (думаю, эти слова любви в переводе не нуждаются — прим. переводчика) вместе с двумя кнопками «YES» и «NO» при запуске команды /confession. Не забудьте добавить обработчик этой команды в основной код функции, как указано выше.

# отображение кнопки def confession(update, context: CallbackContext)-> None:     keyboard = [         [InlineKeyboardButton("Yes", callback_data='yes'),         InlineKeyboardButton("No", callback_data='no')]     ]     reply_markup = InlineKeyboardMarkup(keyboard)     update.message.reply_text('BE MY GIRL OK?', reply_markup=reply_markup) dp.add_handler(CommandHandler("confession", confession))

sozdanie telegram bota na python dlja priznanij v ljubvi 78f8971 - Создание Telegram бота на Python для признаний в любви

Как можно увидеть из данного скриншота, сообщение “BE MY GIRL OK?” отображается вместе с двумя кнопками.

Нажатие на эти кнопки в настоящий момент нам ничего не даст, поскольку мы этот процесс еще не настроили. Для этого мы настроим другую команду — /confession_reply. Она будет работать в зависимости от нажатия пользователем определенных кнопок (а именно «YES» или «NO»), используя программный синтаксис if-else.

Если пользователь нажимает Yes, то мы отвечаем вот таким вот эмодзи: 👫💝.

В ответе на нажатие No я позволил себе некоторую дерзость. Мой ответ будет: “Please try again, we make typing errors sometimes 😤 (Пожалуйста, попробуйте еще раз, ведь мы иногда делаем опечатки)”.

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

def confession_reply(update, context):     query = update.callback_query     if query.data == 'yes':         context.bot.edit_message_text(chat_id=query.message.chat_id,                         message_id=query.message.message_id,                         text='U0001F46BU0001F49D', disable_web_page_preview = 0)     else:         context.bot.edit_message_text(chat_id=query.message.chat_id,                         message_id=query.message.message_id,                         text='Please try again, we make typing errors sometimes U0001F624' , disable_web_page_preview = 0) dp.add_handler(CallbackQueryHandler(confession_reply))

sozdanie telegram bota na python dlja priznanij v ljubvi c026907 - Создание Telegram бота на Python для признаний в любви

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

Размещение Telegram бота (необязательно)

Эта часть в принципе является необязательной. Но до сих пор мы запускали нашего бота с локального компьютера, а это значит, что как только мы его выключим, он прекратит свою работу. Чтобы решить эту проблему, нам нужно разместить нашего бота на облачном сервере, которой обеспечит его бесперебойную работу в режиме 24/7. И когда придет время свидания, он нас не подведет.

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

Идея признания в любви

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

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

sozdanie telegram bota na python dlja priznanij v ljubvi 6e07746 - Создание Telegram бота на Python для признаний в любви

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

sozdanie telegram bota na python dlja priznanij v ljubvi 819d2d8 - Создание Telegram бота на Python для признаний в любви

И вы также можете задаться вопросом, почему названия команд такие странные, например как /sob, /banhmi или даже /potato? И почему между командами такие странные интервалы? Ответ дается в моей последней команде /throwback .

sozdanie telegram bota na python dlja priznanij v ljubvi a764eaa - Создание Telegram бота на Python для признаний в любви

Как видно из последнего скриншота, я дал командам такие имена, чтобы из их последних букв сложилась фраза: “BE MY GIRL OK?”. Чтобы к тому моменту, когда моя подруга уже догадается об истинном смысле этого бота, она нажала на последнюю команду /semolaide (на китайском языке это значит «Что это») и получила решающий вопрос.

sozdanie telegram bota na python dlja priznanij v ljubvi a47a75b - Создание Telegram бота на Python для признаний в любви

Заключение

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

Всем удачи!

Перевод статьи «Building a Telegram Bot with Python for a love confession».

  • 0 views
  • 0 Comment

Leave a Reply

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

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Свежие комментарии

    Рубрики

    About Author 01.

    blank
    Roman Spiridonov

    Моя специальность - Back-end Developer, Software Engineer Python. Мне 39 лет, я работаю в области информационных технологий более 5 лет. Опыт программирования на Python более 3 лет. На Django более 2 лет.

    Categories 05.

    © Speccy 2020 / All rights reserved

    Связаться со мной
    Close