Telegram Bot | Как сделать чтобы бот отвечал на сообщения пользователя который вызвал команду?
Описание проблемы:
- Мой бот находится в группе где есть несколько участников, и у него есть команда /start с помощью которой он создает базу данных и тд. И если пользователь вызвал команду где бот ждет ответ, и его перебьют то он получит неправильную информацию или выдаст ошибку.
Ситуация:
- Пользователь А вызывает команду /start.
- Бот выдает сообщения после которого ждет ответ от Пользователя А.
- Пользователь А не успевает написать ответ.
- Пользователь Б перебивает(написал сообщение раньше) Пользователя А.
- Из-за чего бот берет и ставит в базу данных информацию Пользователя Б вместо Пользователя который вызвал команду.
- так получается что база данных не соответствует правильным данным, или же выдает ошибку.
Так вот, хотел спросить, если есть какое либо решение для того чтобы бот мог ждать ответ пользователя который вызвал команду несмотря на того если в группе будут переписываться другие пользователи.
@bot.message_handler(commands=['start'])
def start(message):
conn = sqlite3.connect('profile_info.db')
cur = conn.cursor()
cur.execute(
'CREATE TABLE IF NOT EXISTS users(user_id INTEGER PRIMARY KEY, nick varchar(50), tag varchar(50), lang varchar(10))')
conn.commit()
cur.execute('SELECT * FROM users WHERE user_id=?', (message.from_user.id,))
user_data = cur.fetchone()
if user_data:
bot.send_message(message.chat.id, 'Вы уже зарегистрированы.')
else:
bot.send_message(message.chat.id, 'Введи свое имя.')
bot.register_next_step_handler(message, user_nick)
cur.close()
conn.close()
def user_nick(message):
global nick
nick = message.text.strip()
bot.send_message(message.chat.id, 'Введи свой тэг:')
bot.register_next_step_handler(message, user_tag)
def user_tag(message):
global tag
tag = message.text.strip()
bot.send_message(message.chat.id, 'Введи свой язык бота:')
bot.register_next_step_handler(message, user_lang)
def user_lang(message):
lang = message.text.strip()
conn = sqlite3.connect('profile_info.db')
cur = conn.cursor()
cur.execute(
"INSERT INTO users (user_id, nick, tag, lang) VALUES ('%s','%s', '%s', '%s')" % (message.from_user.id, nick, tag, lang))
conn.commit()
cur.close()
conn.close()
bot.send_message(message.chat.id, 'готово')