Задать вопрос
@qx00qx

Как отправить sql запрос к базе данных на вывод даты регистрации пользователя?

Создаю телеграмм бота на фреймворке aiogram, использую БД sqlite3, необходимо реализовать профиль пользователя в котором будет указана дата регистрации юзера в боте
Когда запускаю код выдает ошибку:

line 58, in user_profile
    text=f"Профиль\n\nТвой телеграмм :{message.from_user.id}\nКол-во приглашенных пользователей: <b>{db.count_referals(message.from_user.id)}</b>\n Дата регистрации:{db.data_reg(message.from_user.id)}",
                                                                                                                                                                        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: Database.data_reg() missing 1 required positional argument: 'join_date'


Основной код:

import logging
from aiogram import Bot, Dispatcher, executor, types
from keyboards import *
from config import bot_token, project_name
from aiogram.contrib.fsm_storage.memory import MemoryStorage
from db import Database
from aiogram.utils.markdown import hbold

logging.basicConfig(level=logging.INFO)

storage = MemoryStorage()

bot = Bot(bot_token)
dp = Dispatcher(bot, storage=storage)
db = Database('db.db')


async def on_startup(_):
    print("""Бот запущен""")


@dp.message_handler(commands=['start'])
async def start_bot(message: types.Message):
    if message.chat.type == 'private' and not db.user_exists(message.from_user.id):
        start_command = message.text
        refer_id = str(start_command[7:])
        if str(refer_id) == "":
            db.add_user(message.from_user.id)
        else:
            if str(refer_id) != str(message.from_user.id):
                db.add_user(message.from_user.id, refer_id)
                try:
                    await bot.send_message(refer_id, "По вашей ссылке зарегистрировался новый воркер! ")
                except:
                    pass
            else:
                await bot.send_message(message.from_user.id,
                                       text=f"{hbold('Вы не можете зарегистрироваться по своей реф.ссылке')}",
                                       parse_mode="HTML")
    else:
        db.add_user(message.from_user.id)

    await bot.send_sticker(message.from_user.id,
                           sticker="CAACAgIAAxkBAAEIzsdkT8E_izGwbCjNH_LJqQZVaK3fDQACLwADzKrwKJ375rEMzv0ELwQ")
    await message.answer(text=f"{message.from_user.first_name}, Добро пожаловать в <b>{project_name}</b>",
                         reply_markup=menu, parse_mode='HTML')


@dp.callback_query_handler(text='ib1')
async def user_profile(message: types.Message):
    await bot.send_message(message.from_user.id,
                           text=f"Профиль\n\nТвой телеграмм :{message.from_user.id}\nКол-во приглашенных пользователей: <b>{db.count_referals(message.from_user.id)}</b>\n Дата регистрации:{db.data_reg(message.from_user.id)}",
                           parse_mode='HTML')


Код функции:
def data_reg(self, user_id, join_date):
        with self.connection:
            return self.cursor.execute("SELECT user_id, join_date EXTRACT(DAY FROM date) as day FROM users VALUES (?, ?)",
                                       (user_id, join_date,))
  • Вопрос задан
  • 283 просмотра
Подписаться 1 Простой 1 комментарий
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
SELECT user_id, join_date EXTRACT(DAY FROM date) as day FROM users VALUES (?, ?)

SELECT запросы c условием пишутся не так.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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