@bartmangame

Как после определённой кнопки заносить message.text в бд sqlite?

Не понимаю как можно реализовать запись в бд после нажатия определённой кнопки. Вообще вроде-бы что-то вышло, но проблема в том что записывается все сообщения вводимые пользователем, а мне надо именно после этой кнопки.
Вот код:
import sqlite3
import telebot
from telebot import types

db = sqlite3.connect('database.db', check_same_thread = False) 
cursor = db.cursor()
cursor.execute('''CREATE TABLE IF NOT EXISTS database (
	user_id INTEGER PRIMARY KEY NOT NULL,
	name TEXT,
	story TEXT
)''')

db.commit()

token = '1563349957:AAHZeyJrQteHs18UT5hYKU'
bot = telebot.TeleBot(token)

menu = types.ReplyKeyboardMarkup(True, True)
menu.add(telebot.types.InlineKeyboardButton(text='Story'))

@bot.message_handler(commands = ['start'])
def start(message):
	cursor.execute(f'INSERT INTO database (user_id, name) VALUES ({message.from_user.id}, {message.from_user.first_name})')
	db.commit()
	bot.send_message(message.chat.id, text=u'Привет, чтобы рассказать иторию нажми кнопку ниже', reply_markup=menu)
@bot.message_handler(content_types = ['text'])
def messages(message):
	if message.text == 'Story':
		bot.send_message(message.chat.id, text=u'Напиши свою историю сюда')
	if message.text == 'Напиши свою историю сюда?':
		text = message.text
				cursor.execute(f'UPDATE database SET story = "{text}" WHERE user_id = "{message.from_user.id}"')
				db.commit()
bot.polling()
  • Вопрос задан
  • 66 просмотров
Решения вопроса 2
SoreMix
@SoreMix
yellow
@bot.message_handler(content_types = ['text'])
def messages(message):
  if message.text == 'Story':
    msg = bot.send_message(message.chat.id, text=u'Напиши свою историю сюда')
    bot.register_next_step_handler(msg, update_database)

def update_database(message):
    # В message.text уже будет история пользователя
Ответ написан
MinTnt
@MinTnt
Нужно использовать..
bot.register_next_step_handler(message, process_name_step)

def process_name_step(message)

https://github.com/eternnoir/pyTelegramBotAPI/blob...

Кратко как работает: оно перенаправляет на выполнение следующей указанной функции, где она после получения message выполнит заданные действия, и перейдёт на главную(основную)(та что стоит под хандлером)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы