Помогите с sqlite3

triazov

Активный
Автор темы
250
57
В функции /profile должно выдавать всю информацию из базы данных
Но ошибок нет как и вывода чего то

@kapusta_gamebot:
import sqlite3
import telebot



bot = telebot.TeleBot("нету")

conn = sqlite3.connect('db/kapustagame_one.db', check_same_thread=False)
cursor = conn.cursor()


def db_table_val(user_id: int, user_name: str, user_surname: str, username: str):
    cursor.execute('INSERT INTO users (user_id, user_name, user_surname, username) VALUES (?, ?, ?, ?)', (user_id, user_name, user_surname, username))
    conn.commit()

def user_exists(user_id):
    """Проверяем, есть ли юзер в БД"""
    result = cursor.execute("SELECT 1 FROM users WHERE user_id = ?", [user_id]).fetchone()
    return bool(result)

@bot.message_handler(commands=['start'])
def start_message(message):
    bot.send_message(message.chat.id, 'Добро пожаловать в KapustaGame🥬\nЗдесь ты можешь заработать разные призы🎁\nДля регистрации напишите /register')

@bot.message_handler(content_types=['text'])
def get_text_messages(message):

    if message.text.lower() == '/register':
        
        if (user_exists(message.chat.id)):
            bot.send_message(message.chat.id, 'Не удалось🚫! Вы уже зарегистрированны!')

        else:
            bot.send_message(message.chat.id, 'Ваш аккаунт зарегистрирован в базу данных✅\nИнформацию о аккаунте можно узнать в /profile')
            
            us_id = message.from_user.id
            us_name = message.from_user.first_name
            us_sname = message.from_user.last_name
            username = message.from_user.username
            kap = 0
            mon = 0
            db_table_val(user_id=us_id, user_name=us_name, user_surname=us_sname, username=username)

@bot.message_handler(commands=['profile'])
def handle_profile_command(message):
    # Получаем информацию о пользователе из базы данных
    user_id = message.chat.id
    cursor.execute('SELECT id, user_id, user_name, user_surname, username, kapusta, money FROM users WHERE user_id=?', (user_id,))
    profile = cursor.fetchone()

    # Формируем сообщение с информацией о профиле
    if profile:
        id, user_id, user_name, user_surname, username, kapusta, money = profile
        response = f'Ваш профиль🤔\n🆔 Ваш ID: {id}\n Ваш id в телеграмме: {user_id}\n Ваше имя в телеграмме: {user_name}\nВаша фамилия в телеграмме: {user_surname}\nВаш username: {username}\n🥬 Баланс Капусты: {kapusta}\nБаланс RUB: {money}'
    else:
        response = 'Профиль не найден'

    # Отправляем сообщение с информацией о профиле
    bot.send_message(message.chat.id, response)

# Обрабатываем сообщения с командами

print('Бот запущен успешно!')
bot.polling(none_stop=True)

up
 
Последнее редактирование:

Python_newbie

Новичок
12
6
В функции /profile должно выдавать всю информацию из базы данных
Но ошибок нет как и вывода чего то

@kapusta_gamebot:
import sqlite3
import telebot



bot = telebot.TeleBot("нету")

conn = sqlite3.connect('db/kapustagame_one.db', check_same_thread=False)
cursor = conn.cursor()


def db_table_val(user_id: int, user_name: str, user_surname: str, username: str):
    cursor.execute('INSERT INTO users (user_id, user_name, user_surname, username) VALUES (?, ?, ?, ?)', (user_id, user_name, user_surname, username))
    conn.commit()

def user_exists(user_id):
    """Проверяем, есть ли юзер в БД"""
    result = cursor.execute("SELECT 1 FROM users WHERE user_id = ?", [user_id]).fetchone()
    return bool(result)

@bot.message_handler(commands=['start'])
def start_message(message):
    bot.send_message(message.chat.id, 'Добро пожаловать в KapustaGame🥬\nЗдесь ты можешь заработать разные призы🎁\nДля регистрации напишите /register')

@bot.message_handler(content_types=['text'])
def get_text_messages(message):

    if message.text.lower() == '/register':
      
        if (user_exists(message.chat.id)):
            bot.send_message(message.chat.id, 'Не удалось🚫! Вы уже зарегистрированны!')

        else:
            bot.send_message(message.chat.id, 'Ваш аккаунт зарегистрирован в базу данных✅\nИнформацию о аккаунте можно узнать в /profile')
          
            us_id = message.from_user.id
            us_name = message.from_user.first_name
            us_sname = message.from_user.last_name
            username = message.from_user.username
            kap = 0
            mon = 0
            db_table_val(user_id=us_id, user_name=us_name, user_surname=us_sname, username=username)

@bot.message_handler(commands=['profile'])
def handle_profile_command(message):
    # Получаем информацию о пользователе из базы данных
    user_id = message.chat.id
    cursor.execute('SELECT id, user_id, user_name, user_surname, username, kapusta, money FROM users WHERE user_id=?', (user_id,))
    profile = cursor.fetchone()

    # Формируем сообщение с информацией о профиле
    if profile:
        id, user_id, user_name, user_surname, username, kapusta, money = profile
        response = f'Ваш профиль🤔\n🆔 Ваш ID: {id}\n Ваш id в телеграмме: {user_id}\n Ваше имя в телеграмме: {user_name}\nВаша фамилия в телеграмме: {user_surname}\nВаш username: {username}\n🥬 Баланс Капусты: {kapusta}\nБаланс RUB: {money}'
    else:
        response = 'Профиль не найден'

    # Отправляем сообщение с информацией о профиле
    bot.send_message(message.chat.id, response)

# Обрабатываем сообщения с командами

print('Бот запущен успешно!')
bot.polling(none_stop=True)

up
Проблема в том, что message.chat.id и message.from_user.id - это разные айдишникию Ты добавляешь в базу один айдишник, а при поиске используешь другой
 
  • Bug
Реакции: tripple sixx