Не происходит проверка aiogram

Сделал проверку, которая должна изменять статус пользователя:

async def status_up(msg: Message):
    print('started')
    status = db.status(msg.from_user.id).fetchone()[0] # Какой статус на данный момент
    refs = db.count_referals(msg.from_user.id).fetchone()[0] # Кол-во рефов
    states = ['? Гость', '? Новичек', '? Освоившийся', '? Профессионал', '? Просветлённый', '? Ветеран', '?PREMIUM'] # Список со статусами
    frase= msg.answer(f'Ваш статус был повышен! Подробнее в вашем профиле.\nВаш новый статус - {status}')
    # Если статус еще не равен первому в списке, ранг равен 1 и рефералов 0, то начисляется
    # новый статус и всякие плюшки(см. ниже)
    if status != states[0] and db.rang(msg.from_user.id).fetchone()[0]==1 and refs == 0:
        db.status(msg.from_user.id, status=1)
        await frase
        db.RPC(msg.from_user.id, count=0.01) # Кол-во заработка
        db.clicks(msg.from_user.id, limit=100) # Кол-во кликов
    if status != states[1] and db.rang(msg.from_user.id).fetchone()[0]==2 and refs == 3:
        db.status(msg.from_user.id, status=2)
        await frase
        db.RPC(msg.from_user.id, count=0.07)
        db.clicks(msg.from_user.id, limit=100)
    if status != states[2] and db.rang(msg.from_user.id).fetchone()[0]==3 and refs == 5:
        db.status(msg.from_user.id, status=3)
        await frase
        db.RPC(msg.from_user.id, count=0.14)
        db.clicks(msg.from_user.id, limit=150)
    if status != states[3] and db.rang(msg.from_user.id).fetchone()[0]==4 and refs == 25:
        db.status(msg.from_user.id, status=4)
        await frase
        db.RPC(msg.from_user.id, count=0.25)
        db.clicks(msg.from_user.id, limit=150)
    if status != states[4] and db.rang(msg.from_user.id).fetchone()[0]==5 and refs == 75:
        db.status(msg.from_user.id, status=5)
        await frase
        db.RPC(msg.from_user.id, count=0.33)
        db.clicks(msg.from_user.id, limit=200)
    if status != states[5] and db.rang(msg.from_user.id).fetchone()[0]==6 and refs == 120:
        db.status(msg.from_user.id, status=6)
        await frase
        db.RPC(msg.from_user.id, count=0.40)
        db.clicks(msg.from_user.id, limit=200)
    if status != states[6] and db.rang(msg.from_user.id).fetchone()[0]==7 and refs == 350:
        db.status(msg.from_user.id, status=7)
        await frase
        db.RPC(msg.from_user.id, count=0.55)
        db.clicks(msg.from_user.id, limit=275)

# Цикл который я запускаю для запуска функции
async def test(msg: Message):
    while True:
        print('working...')
        await status_up(msg)
        await asyncio.sleep(1)

Вот таким кодом я изменяю статусы в БД:

    def status(self, usd, status=None):
        '''Смена статуса для пользователей'''
        states = ['? Гость','? Новичек','? Освоившийся','? Профессионал','? Просветлённый','? Ветеран', '?PREMIUM']
        if status is not None:
            if status == 1:
                self.cur.execute(f"UPDATE users SET status =? WHERE user_id=?", (states[0], usd))
                return self.conn.commit()
            elif status == 2:
                self.cur.execute(f"UPDATE users SET status =? WHERE user_id=?", (states[1], usd))
                return self.conn.commit()
            elif status == 3:
                self.cur.execute(f"UPDATE users SET status =? WHERE user_id=?", (states[2], usd))
                return self.conn.commit()
            elif status == 4:
                self.cur.execute(f"UPDATE users SET status =? WHERE user_id=?", (states[3], usd))
                return self.conn.commit()
            elif status == 5:
                self.cur.execute(f"UPDATE users SET status =? WHERE user_id=?", (states[4], usd))
                return self.conn.commit()
            elif status == 6:
                self.cur.execute(f"UPDATE users SET status =? WHERE user_id=?", (states[5], usd))
                return self.conn.commit()
            elif status == 7:
                self.cur.execute(f"UPDATE users SET status =? WHERE user_id=?", (states[6], usd))
                return self.conn.commit()
        else:
            """Выводит значение в остальных случаях"""
            return self.conn.execute("SELECT status FROM users WHERE user_id=?", (usd,))

ошибок не выводит, бот в целом работает после запуска этой функции, пока что запускаю в /start и может подскажете как запускать проверку при старте бота? Заранее спасибо!


Ответы (2 шт):

Автор решения: Nqweqweqwe

Перед тем как выложить не заметил что у меня есть вторая функция как status но с рангом, и я забыл изменить в "UPDATE users SET ststus ..." status на rang

→ Ссылка
Автор решения: NTA

На aiogram 2.x:

from aiogrma import Bot, Dispatcher, executor, types
''' код '''

executor.start_polling(dp, on_startup=status)

На aiogram 3.x:

from aiogram import Bot, Dispatcher, types
import asyncio

''' код '''

async def main():
    await dp.start_polling(bot)

status()
asyncio.run(main())

status() - проверка, нужно ли повысить статус, как я понял.

→ Ссылка