Разбираемся с Tg ботом вместе. Python
Решил разобраться с написанием телеграмм бота и поделиться успехами с Вами.
Как уже было сказано ранее основная цель освоить телеграмм бота и создать некоторые шаблоны которые могут пригодиться в будущем для создания полноценного бота.
Всё начинается с малого
Ⅰ. Регистрация бота
Поиск в tg @BotFather
Регистрация
Запомнить токен(Ваш доступ к боту)
Ⅱ. Подготовка
Пишем на Python'е с использованием библиотеки PyTelegramBotAPI. Я использую PyCharm, его можно скачать на официальном сайте https://www.jetbrains.com/ru-ru/pycharm/. Так же для установки библиотеки PyTelegramBotAPI вводим следующую команду в командной строке
pip install pytelegrambotapi
Ⅲ. Базовые элементы. Привет
Импортируем библиотеку и подключаем нашего бота
import telebot
bot = telebot.TeleBot('%токен%')
Описываем метод получения текстовых сообщений:
@bot.message_handler(content_types=['text', 'document', 'audio']) #получает
def get_text_messages(message): #обрабатывает
Опишем функцию обработки полученного сообщения. При получении слова "Паника" бот будет отвечать "заразна !". Для помощи пользователю будем выводить ещё текст о том что надо делать.
if message.text == "Паника":
bot.send_message(message.from_user.id, "Заразна!")
else:
bot.send_message(message.from_user.id, "Напиши Паника")
Обратим внимание на переменную message.from_user.id она хранит уникальный для каждого пользователя id, именно с помощью него мы сможем отвечать нужному человеку и его я планирую в будущем хранить в базе данных пользователей
Наш бот будет у сервера Telegram постоянно спрашивать "Мне кто-нибудь написал?" Если это случится, наш бот получит переданное сообщение. Для этого допишем:
bot.polling(none_stop=True, interval=0)
Работает !
Ⅳ. Диалог
Давайте научим нашего бота вести диалог с пользователем. В будущем я планирую это использовать как шаблон для регистрации. Бот будет задавать человеку ряд вопросов, получать на них ответы и сохранять
Заведем ряд переменных в которых будем хранить данные регистрации:
name = ''
surname = ''
city = ''
age = 0
Аналогично как в предыдущем пункте опишем функцию начала регистрации start по команде /reg
@bot.message_handler(content_types=['text'])
def start(message):
if message.text == '/reg':
bot.send_message(message.from_user.id, "Как тебя зовут?")
bot.register_next_step_handler(message, get_name) #следующий шаг – функция get_name
else:
bot.send_message(message.from_user.id, 'Напиши /reg')
Далее опишем ряд последовательных функций - этапов нашей регистрации:
def get_name(message): #получаем имя
global name
name = message.text
bot.send_message(message.from_user.id, 'Какая у тебя фамилия?')
bot.register_next_step_handler(message, get_surname) #следующий шаг – функция get_surname
def get_surname(message): #получаем фамилию
global city
name = message.text
bot.send_message(message.from_user.id, 'Из какого ты города?')
bot.register_next_step_handler(message, get_city)
def get_city(message): #получаем город
global city
city = message.text
bot.send_message(message.from_user.id,'Сколько тебе лет?')
bot.register_next_step_handler(message, get_age)
def get_age(message): #получаем возраст
global age
try:
age = int(message.text) #проверяем, что возраст введен корректно
except Exception:
bot.send_message(message.from_user.id, 'Цифрами, пожалуйста')
bot.register_next_step_handler(message, get_age)
В каждой из этих функций мы с помощью переменной message получаем интересующие нас данные, сохраняя их и с помощью bot.register_next_step_handler переходим к следующей функции. В функции get_age проверяем чтобы полученное значение действительно было числом.
В следующей части рассмотрим работу с кнопками и сохранение данных в базе данных.