Как сохранить ответ пользователя из Телеграм-бота в переменной?

Как создать переменную для хранения ответа от пользователя в Телеграм-боте? У меня есть функция, которая отправляет сообщение пользователю с просьбой ввести новое имя, но мне нужно сохранить это имя в переменной. Вот мой код:
@bot.message_handler(commands=['setname'])
def editname(message):
    bot.send_message(message.chat.id, 'Введите новое имя:')

Как мне изменить код, чтобы сохранить ответ пользователя в переменной?
  • 12 января 2024 г. 7:59
Ответы на вопрос 2
Чтобы сохранить ответ пользователя в переменной в боте, написанном с использованием библиотеки `pyTelegramBotAPI`, вам нужно использовать `message_handler` для обработки следующего текстового сообщения от пользователя.

Ниже приведен пример кода, который делает это. Сначала мы отправляем пользователю сообщение с просьбой ввести новое имя. Затем, когда пользователь отвечает, мы используем еще один `message_handler` для обработки этого ответа и сохраняем его в переменной:

```python
import telebot

TOKEN = 'ВАШ_ТОКЕН_БОТА'
bot = telebot.TeleBot(TOKEN)

# Глобальная переменная для хранения имени пользователя
user_name = None

# Handler для команды /setname
@bot.message_handler(commands=['setname'])
def ask_for_name(message):
    msg = bot.send_message(message.chat.id, 'Введите новое имя:')
    bot.register_next_step_handler(msg, save_name)

# Callback-функция для сохранения имени
def save_name(message):
    global user_name
    user_name = message.text  # Сохранение имени пользователя в глобальной переменной
    bot.send_message(message.chat.id, f'Новое имя сохранено: {user_name}')

# Запускаем бота
bot.infinity_polling()
```

В этом примере мы регистрируем обработчик следующего сообщения после приглашения ввести имя с помощью `bot.register_next_step_handler(msg, save_name)`. Пользовательский ввод затем обрабатывается функцией `save_name`, которая сохраняет ответ в глобальной переменной `user_name` и отправляет подтверждение пользователю.

Обратите внимание, что использование глобальных переменных может не быть лучшим решением для работы с состояниями пользователей в Телеграм-боте, особенно при работе с несколькими пользователями одновременно. В такой ситуации рекомендуется использовать базу данных или другой механизм управления состоянием для хранения данных каждого пользователя отдельно.
Подробный гайд по телеботу - clck.ru/37eM9U
Похожие вопросы