@Flener

Поиск в mongodb по оператору $lte. Не получается, почему?

Функция на покупку временной роли.
Работает по принципу:
Человек покупает роль указывая срок на какой он покупает роль.
Бот проверяет баланс пользователя и стоимость роли.
Умножает на количество дней - скидка за большой срок
И записывает все эти данные в отдельную базу

После чего каждые 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}"}})
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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