Урок №3: Базовые концепции бота

В данном уроке мы научимся обрабатывать стандартные команды telegram бота, обращаться к пользователю по имени, форматировать текст, а также его обрабатывать.

В прошлых уроках мы научились уже подключать нашего бота к python.

Обработка команды /start.

Теперь я предлагаю для начала обработать такую команду, как /start. Так как с именно этой команды запускается весь бот.

Для того чтобы отследить некую команду, мы должны прописать декоратор для функции. Тут мы обращаемся к боту и к такому декоратору, как message_handler() и далее сюда же мы передаем один параметр commands. Он в качестве значения передает некий список, и тут же мы можем указать какие команды мы будем обрабатывать. Мы же с вами будем обрабатывать команду /start. Также прошу учесть, что внутри надо писать просто название команды без символа /, он сюда не требуется(@bot.message_handler(commands =['start'])). Также если вы хотите передать несколько команд, то внутри квадратных скобок перечислите их через запятую (Например: @bot.message_handler(commands =['start', 'hello'])).

Теперь та функция, которую мы опишем ниже, будет вызываться каждый раз, когда будем вводиться такая команда, как /start (либо же все те команды, которые вы перечислили в декораторе).Теперь мы создаем ниже функцию. Она может называться как угодно. Я назову функцию first. Эта функция будет принимать по умолчанию один параметр, который назовем, например, message (def first(message)). Это тот параметр, который будет хранить в себе полностью всю информацию про самого пользователя и работает с нашим ботом, а также будет хранить всю информацию про наш чат с пользователем.

Давайте для начала в этой функции сделаем простую вещь: Отправим пользователю сообщение. Например: Пользователь вводит команду /start, а мы каждый раз будем отправлять ему сообщение: "Приветствуем вас в нашем telegram боте".

Чтобы нам реализовать это, внутри функции мы будем обращаться к нашему боту и далее мы обращаемся к такому методу, как send_message(). Данный метод принимает несколько параметров. Параметр, который мы должны с вами указать это id того чата, с которым мы сейчас взаимодействуем. Для этого мы обращаемся к параметру, как message, потом мы обращаемся к чату и получаю id текущего чата. Далее нам необходимо указать какой текст мы будем отправлять пользователю. В нашем случае это будет 'Приветствуем вас в нашем telegram боте'.

После написания кода давайте запустим бота и проверим его работоспособность.

Урок №3: Базовые концепции бота
Урок №3: Базовые концепции бота

Бот успешно заработал

теперь всегда, когда мы будем отправлять команду /start, бот будет отвечать нам на нее нашим сообщением.

Обращение к пользователю по имени.

Как говорилось ранее, в параметре message храниться полностью вся информация про самого пользователя, который работает с нашим ботом и информация про наш чат с пользователем. Если же мы вместо текста будем выводить наш параметр message, то получим объект, где записаны различные ключи и значения. Тут мы можем найти всю информацию про наш чат и про пользователя.

Урок №3: Базовые концепции бота
Урок №3: Базовые концепции бота

В случае если мы хотим вывести имя пользователя, то сначала надо обратиться к объекту message, к ключу first_name и тогда мы получим имя пользователя(также мы можем получить его фамилию, логин, на каком языке он общается и многое другое. Но сейчас остановимся только на его имени).

Теперь давайте в нашем тексте будем выводить имя пользователя (т.е. "Приветствуем вас, имя пользователя, в нашем telegram боте"). Чтобы это сделать в самом тексте мы обратимся в фигурных скобках к параметру message, далее внутри этого объекта необходимо обратиться к значению from_user, т.к. это еще один отдельный объект, а уже там мы обратимся к first_name.

давайте перезапустим бота и проверим его.

Урок №3: Базовые концепции бота
Урок №3: Базовые концепции бота

Форматирование текста.

Чтобы отформатировать текст в метод send_message нам надо передать 3-й параметр, который называется parse_mode и в качестве значения прописываем 'html'. Теперь мы можем отформатировать наш текст.

  • <b>.....</b>(делает текст жирным)
  • <i>.....</i> (делать текст курсивом).

Например, я сделаю имя пользователя жирным, а весь текст напишу курсивом.

Перезапускаем бота и смотрим что получилось.

Урок №3: Базовые концепции бота
Урок №3: Базовые концепции бота

Обработка команды /help и /Помощь.

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

Давайте еще обработаем команды /help и /помощь, где мы будем отправлять ссылку на нашу telegram группу. И по такому же принципу отформатируем текст.

Перезапускаем бота и смотрим что получилось.

Урок №3: Базовые концепции бота
Урок №3: Базовые концепции бота

Обработка текста.

Чтобы наш бот отвечал пользователю не на команды, а на обычный текст, то мы пишем тот же самый декоратор, только теперь в него мы не будем ничего передавать. Далее мы также запустим функцию с любым названием, например, txt с параметром message. Внутри функции мы будем проверять условия. Например, если человек пишет 'привет', то мы должны ему ответить тоже самое, что отвечали при команде /start, если же человек напишет 'help' или 'помощь', то мы должны ему ответить тоже самое, что отвечали в команде /help.

Для этого мы пишем условие с командой, message.text.lower()(message.text считывает текст нашего пользователя, а .lower убирает все пробелы. Так как если вам надо будет считать не слово, а предложение, то .lower писать не надо) и далее мы проверяем текст на совпадения. Если же текст совпал, то мы выводим ответ на сообщение пользователя. Вывод сообщения будет точно такой же.

Теперь давайте проверим как работает наш бот.

Урок №3: Базовые концепции бота
Урок №3: Базовые концепции бота

После каждого урока вы можете заходить на моего telegram бота, чтобы посмотреть результат работы, после каждого урока: http://t.me/pythonte1egram_bot.

Также вы можете подписаться на telegram канала, где будут выкладываться все коды на python с моих уроков: https://t.me/pythotelegram.

88
Начать дискуссию