делаю телеграм бота на питоне, сделал простую генерацию 2 чисел(типо сложите 2 числа ), и сделал чек сообщения но каким то хуем он чекает приведущие сообщения.
Pandazz, генерируешь 2 числа -> записываешь их в бд -> записываешь стадию прохождения капчи пользователем -> сверяешь стадию при новом сообщении -> если стадия совпадает то складываешь 2 числа которые записал в бд и сверяешь с сообщением пользователя
Pandazz, потому что не понятно в чем у него проблема. Я даже не знаю как можно не догадаться сделать генерацию двух чисел, получить их сумму и ждать пока пользователь введет их? State в aiogram должен вроде справиться или же БД и вообще по разному можно это реализовать.
Вот: msg = bot.reply_to(message,"Введите число:") bot.register_next_step_handler(msg, функция в которую передастся ответ) Код msg = bot.reply_to(message,"Введите число:") bot.register_next_step_handler(msg, функция в которую передастся ответ)
Здесь проблема как мне кажется в другом. Нужно реализовать систему, которая ждет определенный результат капчи для конкретного пользователя. Допустим Пупкин должен сложить 2+2, а Вовочка 3+3, и нужно ответ правильный (с которым вы будете сверять их ответы) хранить отдельно. Вот как бы я это сделал: Заходит чел вы получаете его чат айди, и результат капчи загоняете в бд, когда он вводит ответ бот ищет строку в бд где есть его чат айди, и в ней же сравнивает введенную им капчу и с правильным ответом Пример сгенерированной бд: id=1; user_chat_id=12312309, captcha_answer=6, id=2; user_chat_id=43531232, captcha_answer=4, И Вовочка у нас тут по чат-айди первый, получаем сообщение от Вовочки допустим 7, а в строке бд это 6, значит капча не пройдена. А у Пупкина сообщение 4, и по чат-айди опять же находим эту строку в бд, все совпало значит капча пройдена идем дальше. П.С:Лучше использовать те же строки в бд, просто заменять ответы капчи. Т.е если пользователю попалась новая капча тогда мы обновляем строку в бд captcha_answer и ждем сообщение новое от пользователя.
Reverlight, есть ещё вариант он может быть полегче. Вместо ввода ответа на капчу, сделать инлайн кнопки с рандомным порядком, и при выборы одной из них где правильный ответ капча будет пройдена. Так можно обойти бд. Но я думаю через саму телегу можно будет спалить эту систему. Так что в таком случаи может быть проблема.