我做了一项检查,应该更改用户状态:
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 中运行它,你能告诉我如何在机器人启动时运行检查吗?先感谢您!
在发帖之前,我没有注意到我有第二个功能,例如状态,但带有等级,并且我忘记更改
"UPDATE users SET ststus ..."
status
为rang
在 aiogram 2.x 上:
在 aiogram 3.x 上:
status() - 据我了解,检查状态是否需要提升。