Для того чтобы бот реагировал только на сообщения, содержащие номер телефона, можно использовать регулярные выражения для проверки текста сообщения. Вот пример кода на Python, используя библиотеку python-telegram-bot:
```python
import re
from telegram.ext import Updater, MessageHandler, Filters
def handle_message(update, context):
text = update.message.text
pattern = "\d{10}" # Регулярное выражение для проверки наличия 10 цифр, предполагая, что номер телефона имеет 10 цифр.
if re.search(pattern, text):
# Если сообщение содержит номер телефона, можно добавить нужную логику реакции или ответа.
context.bot.send_message(chat_id=update.effective_chat.id, text="Спасибо за предоставленный номер телефона!")
else:
# Иначе, игнорировать сообщение
pass
def main():
updater = Updater(token='YOUR_TOKEN', use_context=True)
dispatcher = updater.dispatcher
message_handler = MessageHandler(Filters.text & ~Filters.command, handle_message)
dispatcher.add_handler(message_handler)
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
```
Чтобы создать бота, который отвечает пользователю определенным сообщением только после получения его номера телефона, можно использовать состояния (states) бота. Вот пример кода на Python, используя библиотеку python-telegram-bot:
```python
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters, ConversationHandler
PHONE_NUMBER = range(1) # Уникальное значение для определения состояния запроса номера телефона
def start(update, context):
reply_text = "Привет! Пожалуйста, отправь мне свой номер телефона."
update.message.reply_text(reply_text)
return PHONE_NUMBER
def handle_phone_number(update, context):
phone_number = update.message.contact.phone_number
# Отправить пользователю нужное сообщение
context.bot.send_message(chat_id=update.effective_chat.id, text="Спасибо за предоставленный номер телефона!")
return ConversationHandler.END
def cancel(update, context):
# Отменить текущую операцию и сбросить состояние
context.bot.send_message(chat_id=update.effective_chat.id, text="Операция отменена.")
return ConversationHandler.END
def main():
updater = Updater(token='YOUR_TOKEN', use_context=True)
dispatcher = updater.dispatcher
conversation_handler = ConversationHandler(
entry_points=[CommandHandler('start', start)],
states={
PHONE_NUMBER: [MessageHandler(Filters.contact, handle_phone_number)]
},
fallbacks=[CommandHandler('cancel', cancel)]
)
dispatcher.add_handler(conversation_handler)
updater.start_polling()
updater.idle()
if __name__ == '__main__':
main()
```
В приведенном примере бот запрашивает пользователя отправить свой номер телефона и после получения номера отвечает пользователю нужным сообщением. Также, бот предлагает команду "/cancel" для отмены текущей операции.