@yotonick

Как доставать данные из бд?

В общем, нужно чтобы программа сохраняла переменную work1 в базу данных, после чего при вводе /checkwork брала значение из базы данных, и выводила сообщением, ибо после перезапуска переменные слетают.

import telebot
from telebot import types
#TOKEN

nick = ''
name = ''
age = 0
work1 = 0

bot = telebot.TeleBot("TOKEN")

@bot.message_handler(commands=['start', 'help'])
def send_welcome(message):
	bot.reply_to(message, "Бот находится на стадии разработки, доступные на данный момент команды: /регистрация")

@bot.message_handler(func=lambda m: True)
def echo_all(message):
	if message.text == 'Ты лох':
		bot.reply_to(message, 'Нет!')
	elif message.text == '/reg':
		bot.send_message(message.from_user.id,"Какой твой ник?")
		bot.register_next_step_handler(message, reg_nick)
	elif message.text == '/work':
		bot.send_message(message.from_user.id,"Вы заработали 1 монету.")
		global work1
		work1 = work1 + 1
	elif message.text == '/checkwork':
		work21 = 'Ваш баланс: ' + str(work1) + ' монет.'
		bot.send_message(message.from_user.id, text = work21)
	#bot.reply_to(message, message.text)


def reg_nick(message):
	global nick
	nick = message.text
	bot.send_message(message.from_user.id,"Какое твоё имя?")
	bot.register_next_step_handler(message, reg_name)

def reg_name(message):
	global name
	name = message.text
	bot.send_message(message.from_user.id,"Ваш возраст?")
	bot.register_next_step_handler(message, reg_age)

def reg_age(message):
	global age
	#age = message.text
	while age == 0:
		try:
			age = int(message.text)
		except Exception:
			bot.send_message(message.from_user.id,"Вводите цифрами!")
			break	
			
	keyboard = types.InlineKeyboardMarkup()
	key_yes = types.InlineKeyboardButton(text = 'Да', callback_data='yes')
	keyboard.add(key_yes)
	key_no = types.InlineKeyboardButton(text = 'Нет', callback_data='no')
	keyboard.add(key_no)
	question = 'Вам ' + str(age) + ' лет? Ваш ник: ' + nick + ' ? Ваше имя: ' + name + ' ?'
	bot.send_message(message.from_user.id, text = question, reply_markup=keyboard)


@bot.callback_query_handler(func=lambda call: True)
def callback_worker(call):
	if call.data == "yes":
		bot.send_message(call.message.chat.id, "Запишу вас в базу данных!")
	elif call.data == "no":
		bot.send_message(call.message.chat.id, "Попробуем ещё раз!")		
		bot.send_message(call.message.chat.id,"Какой твой ник?")
		bot.register_next_step_handler(call.message, reg_nick)


bot.infinity_polling()
  • Вопрос задан
  • 128 просмотров
Решения вопроса 1
AlexNest
@AlexNest Куратор тега Python
Работаю с Python/Django
Как доставать данные из бд?

с помощью специального модуля подключится к базе -> сделать запрос -> записать данные в переменную -> как-то их обработать/
В общем, нужно чтобы переменную work1 сохраняло в базу данных, а после чего при вводе /checkwork брало значение из базы данных, и выводило сообщением, ибо после перезапуска переменные слетают.

Ну, нужно - хорошо. Делайте. Вы в принципе не реализовали логику работы с базой, так-что поправлять нечего, за вас писать никто ничего не будет (кроме фриилансеров за деньги).
Так-что вот доки (выбираете одну библиотеку, в зависимости от выбранной базы), изучайте и пишите.
https://docs.python.org/3/library/sqlite3.html
https://www.psycopg.org/docs/
https://www.w3schools.com/python/python_mysql_gets...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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