@masoyouin

Не выводит telebot информацию с sqlite3 и не выдает ошибок поможете?

Не выводит telebot информацию с sqlite3 и не выдает ошибок
Команда /profile
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)
  • Вопрос задан
  • 71 просмотр
Решения вопроса 1
SoreMix
@SoreMix
yellow
Декоратор для текстовых сообщений @bot.message_handler(content_types=['text']) стоит выше обработчика команды @bot.message_handler(commands=['profile']).

Когда падает текстовое сообщение (/profile - тоже текст), срабаывает
@bot.message_handler(content_types=['text'])
def get_text_messages(message):

а не handle_profile_command.

Функцию для обработки всего текста стоит поместить ниже других
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы