Функция на покупку временной роли.
Работает по принципу:
Человек покупает роль указывая срок на какой он покупает роль.
Бот проверяет баланс пользователя и стоимость роли.
Умножает на количество дней - скидка за большой срок
И записывает все эти данные в отдельную базу
После чего каждые 3 минуты бот должен проверять всю базу данных на наличие просроченных ролей и снимать их.
Проблема заключается в том, что когда я использую оператор $lte то visual studio code говорит что там ошибка и говорит что ничего не будет работать. Ругается он конкретно на знак $. Без данного знака он перестает ругаться, но не знает что обозначает lte и я не думаю что так это будет работать, видь для базы данных это больше не оператор.
Подскажите пожалуйста как использовать данный оператор.
И как вы думаете, не будет ли проблем если бот будет находить 2-3х пользователей с просроченной ролью?
Или нужно будет под каждую найденную запись делать отдельную задачу?
@client.command(
name = "buy",
aliases = ["купить", "regbnm", "Купить", "бай", "Regbnm"],
brief = "Купить роль",
usage = "!купить <@role> <Количество дней>"
)
async def buy(ctx, role, days=1):
if role == None:
ctx.send("Вы не указали роль!")
return
tme = days * 86400
tim = time.time()
if days >= 7:
day = days * 0.9
if days >= 14:
day = days * 0.8
if days >= 30:
day = days * 0.75
else:
day = days
timeend = tim + tme
author = ctx.author
post = {
"roleid": role.id,
"member": author.id,
"timeb": tim,
"timeend": timeend
}
datar = collrole.find_one({"role": role})
datau = colluser.find_one({"_id": author.id})
if datar["trade"] == False:
ctx.send("Данная роль не на продаже!")
return
balance = datau["bal"]
pricerole = datar["price"]
price = pricerole * day
if balance <= price:
ctx.send("У вас не хватает *****")
return
colluser.update_one({"_id": author.id},
{"$set": {"bal": balance - price}})
collrt.insert_one(post)
await client.add_roles(author, role)
await ctx.message.add_reaction("✅")
@tasks.loop(minutes=3)
async def role_check(ctx):
timenow = time.time()
collrt.find({"timeend": {$lte:f"{timenow}"}})