Задать вопрос
@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)
  • Вопрос задан
  • 74 просмотра
Подписаться 2 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Инженер по тестированию
    5 месяцев
    Далее
  • Яндекс Практикум
    Java-разработчик
    10 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик расширенный
    14 месяцев
    Далее
Решения вопроса 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.

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

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

Похожие вопросы
ITK academy Нижний Новгород
от 80 000 до 120 000 ₽
ITK academy Воронеж
от 50 000 до 90 000 ₽