Как записывать введенное сообщение пользователем в базу данных (pytelegrambotapi)
У меня есть код, который работает и переносит сообщение пользователя в базу данных, но не совсем тот что, нужен:
@bot.message_handler(commands=['name'])
def nickname(message):
bot.send_message(message.chat.id, 'Введите имя')
db.update_nickname(message.from_user.id, message.text)
bot.send_message(message.chat.id, 'Имя успешно задано!')
SQL запрос выглядит следующим образом:
def update_nickname(self, user_id, nickname):
with self.connection:
return self.cursor.execute("UPDATE `subscriptions` SET `nickname` = ? WHERE `user_id` = ?", (nickname, user_id))
В моем примере он заносит в ячейку "nickname" базы данных значение '/name' так как handler вызван на данную команду. Как мне заносить туда значение которое пользователь введет с клавиатуры после сообщения "Введите имя".
Ответы (1 шт):
Автор решения: Violet
→ Ссылка
для получения "аргумента" команды можно использовать split(maxsplit=1):
message.text.split(maxsplit=1)
[In]: /name тест
[Out]: ['name', 'тест']
message.text.split(maxsplit=1)[1]
>> тест
либо используйте bot.register_next_step_handler:
@bot.message_handler(commands=['name'])
def nickname(message):
msg = bot.send_message(message.chat.id, 'Введите имя')
bot.register_next_step_handler(msg, nickname_2)
def nickname_2(message):
db.update_nickname(message.from_user.id, message.text)
bot.send_message(message.chat.id, 'Имя успешно задано!')