Telegram Bot + MySQLITE SOS
Всех приветствую. Поставил для себя задачу написать телеграмм-бота, но не имею достаточно знаний и умений. Предполагаемая логика бота достаточно простая (как мне казалось). Пользователь запускает команду /start -> просьба №1 ввести данные (эти данные заносятся в базу MySQLite) -> просьба №2 ввести данные (эти данные заносятся в базу MySQLite) -> пользователя благодарят или подтверждают, что данные внесены. Но застрял на проблеме, запускается все без ошибок, но данные в базу не заносит и на последнем шаге, вместо "Вы успешно ввели все данные" все падает в "Ошибка".
Я думаю на переменные и на то, что как-то неправильно передаю данные в БД.
Также пробовал различные вариации кода, в одном случае символ "%" не распознаётся В другом telebot пишет "A request to the Telegram API was unsuccessful. Error code: 400. Description: Bad Request: chat not found"
Буду очень благодарен, если кто-нибудь подскажет решение проблемы.
p.s. Еще очень хочется в самом начале поставить ветвление, буду рад, если подскажете как это реализовать (т.е. пользователю предлагается "Какие данные ввести" с Reply клавиатурой, а при выборе одного из вариантов начинается вышеуказанная цепочка)
import telebot
import sqlite3
bot = telebot.TeleBot("Token")
sql = sqlite3.connect('DataBase.db', check_same_thread=False)
cursor = sql.cursor()
user_data = {}
class User:
def __init__(self, datas):
self.datas = datas
self.datass = ''
@bot.message_handler(commands=['start'])
def send_welcome(message):
msg = bot.send_message(message.chat.id, "Введите данные №1")
bot.register_next_step_handler(msg, process_one_step)
def process_one_step(message):
try:
user_id = message.from_user.id
user_data[user_id] = User(message.text)
msg = bot.send_message(message.chat.id, 'Введите данные №2')
bot.register_next_step_handler(msg, process_two_step)
except Exception as e:
bot.send_message(message.chat.id, 'Ошибка')
def process_two_step(message):
try:
user_id = message.from_user.id
user = user_data[user_id]
user_data[user_id] = User(message.text)
db = "INSERT INTO BotTable (user_id, dataone, datatwo) VALUES (%s, %s, %s)"
val = (user_id, user.datas, user.datass)
cursor.execute (db, val)
sql.commit()
bot.send_message(message.chat.id, 'Вы успешно ввели все данные')
except Exception as e:
bot.send_message(message.chat.id, 'Ошибка')
bot.enable_save_next_step_handlers(delay=2)
bot.load_next_step_handlers()
if __name__=='__main__':
bot.polling(none_stop=True)
