Message from user python

Разбираемся с Tg ботом вместе. Python

Решил разобраться с написанием телеграмм бота и поделиться успехами с Вами.

Как уже было сказано ранее основная цель освоить телеграмм бота и создать некоторые шаблоны которые могут пригодиться в будущем для создания полноценного бота.

Всё начинается с малого

Ⅰ. Регистрация бота

Ⅱ. Подготовка

Пишем на 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)

Ⅳ. Диалог

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

Читайте также:  Wordpress failed opening required wp blog header php

Заведем ряд переменных в которых будем хранить данные регистрации:

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 проверяем чтобы полученное значение действительно было числом.

В следующей части рассмотрим работу с кнопками и сохранение данных в базе данных.

Источник

Message¶

class telegram. Message ( message_id , date , chat , from_user = None , forward_from = None , forward_from_chat = None , forward_from_message_id = None , forward_date = None , reply_to_message = None , edit_date = None , text = None , entities = None , caption_entities = None , audio = None , document = None , game = None , photo = None , sticker = None , video = None , voice = None , video_note = None , new_chat_members = None , caption = None , contact = None , location = None , venue = None , left_chat_member = None , new_chat_title = None , new_chat_photo = None , delete_chat_photo = None , group_chat_created = None , supergroup_chat_created = None , channel_chat_created = None , migrate_to_chat_id = None , migrate_from_chat_id = None , pinned_message = None , invoice = None , successful_payment = None , forward_signature = None , author_signature = None , media_group_id = None , connected_website = None , animation = None , passport_data = None , poll = None , forward_sender_name = None , reply_markup = None , dice = None , via_bot = None , proximity_alert_triggered = None , sender_chat = None , video_chat_started = None , video_chat_ended = None , video_chat_participants_invited = None , message_auto_delete_timer_changed = None , video_chat_scheduled = None , is_automatic_forward = None , has_protected_content = None , web_app_data = None , is_topic_message = None , message_thread_id = None , forum_topic_created = None , forum_topic_closed = None , forum_topic_reopened = None , forum_topic_edited = None , general_forum_topic_hidden = None , general_forum_topic_unhidden = None , write_access_allowed = None , has_media_spoiler = None , user_shared = None , chat_shared = None , * , api_kwargs = None ) [source] ¶ Bases: telegram.TelegramObject This object represents a message. Objects of this class are comparable in terms of equality. Two objects of this class are considered equal, if their message_id and chat are equal.

  • telegram.Bot.edit_message_caption()
  • telegram.Bot.edit_message_live_location()
  • telegram.Bot.edit_message_media()
  • telegram.Bot.edit_message_reply_markup()
  • telegram.Bot.edit_message_text()
  • telegram.Bot.forward_message()
  • telegram.Bot.send_animation()
  • telegram.Bot.send_audio()
  • telegram.Bot.send_contact()
  • telegram.Bot.send_dice()
  • telegram.Bot.send_document()
  • telegram.Bot.send_game()
  • telegram.Bot.send_invoice()
  • telegram.Bot.send_location()
  • telegram.Bot.send_message()
  • telegram.Bot.send_photo()
  • telegram.Bot.send_poll()
  • telegram.Bot.send_sticker()
  • telegram.Bot.send_venue()
  • telegram.Bot.send_video_note()
  • telegram.Bot.send_video()
  • telegram.Bot.send_voice()
  • telegram.Bot.set_game_score()
  • telegram.Bot.stop_message_live_location()
  • The arguments and attributes voice_chat_scheduled , voice_chat_started and voice_chat_ended , voice_chat_participants_invited were renamed to video_chat_scheduled / video_chat_scheduled , video_chat_started / video_chat_started , video_chat_ended / video_chat_ended and video_chat_participants_invited / video_chat_participants_invited , respectively, in accordance to Bot API 6.0.
  • The following are now keyword-only arguments in Bot methods: _timeout , api_kwargs , contact , quote , filename , loaction , venue . Use a named argument for those, and notice that some positional arguments changed position as a result.
  • message_id ( int ) – Unique message identifier inside this chat.
  • from_user ( telegram.User , optional) – Sender of the message; empty for messages sent to channels. For backward compatibility, this will contain a fake sender user in non-channel chats, if the message was sent on behalf of a chat.
  • sender_chat ( telegram.Chat , optional) – Sender of the message, sent on behalf of a chat. For example, the channel itself for channel posts, the supergroup itself for messages from anonymous group administrators, the linked channel for messages automatically forwarded to the discussion group. For backward compatibility, from_user contains a fake sender user in non-channel chats, if the message was sent on behalf of a chat.
  • date ( datetime.datetime ) – Date the message was sent in Unix time. Converted to datetime.datetime .
Читайте также:  Mysql показать все таблицы php

Changed in version 20.3: The default timezone of the bot is used for localization, which is UTC unless telegram.ext.Defaults.tzinfo is used.

Changed in version 20.3: The default timezone of the bot is used for localization, which is UTC unless telegram.ext.Defaults.tzinfo is used.

Changed in version 20.3: The default timezone of the bot is used for localization, which is UTC unless telegram.ext.Defaults.tzinfo is used.

Changed in version 20.0: Accepts any collections.abc.Sequence as input instead of just a list. The input is converted to a tuple.

Changed in version 20.0: Accepts any collections.abc.Sequence as input instead of just a list. The input is converted to a tuple.

Changed in version 20.0: Accepts any collections.abc.Sequence as input instead of just a list. The input is converted to a tuple.

Changed in version 20.0: Accepts any collections.abc.Sequence as input instead of just a list. The input is converted to a tuple.

Changed in version 20.0: Accepts any collections.abc.Sequence as input instead of just a list. The input is converted to a tuple.

Источник

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