Discord.py — Применить время восстановления к .event on_message

#python #discord

#питон #Discord

Вопрос:

Я хочу применить время восстановления к on_message. Я перешел от выполнения команды с предисловием (например, .claim 000) к простому «000» или любому другому коду на DM.

Старый код:

 @commands.command(name='claim',pass_context=True)   
@commands.cooldown(1, 5, commands.BucketType.user)
    async def redeem(self, ctx, code):
        if isinstance(ctx.channel, discord.channel.DMChannel)
 

Новый код:

 @bot.event
@bot.cooldown(1, 5, commands.BucketType.user)
async def on_message(message):
 

Однако тип new .event игнорирует предикат восстановления. Есть ли способ применить это к нему?

Ответ №1:

Я не думаю, что есть способ сделать это, поскольку встроенные кулдауны были созданы для работы с commands framework, что вызывает вопрос, почему вы переходите с (лучшей) среды для команд только на on_message? В любом случае, вам, вероятно, придется использовать свою собственную систему перезарядки, что не должно быть слишком сложно сделать. Вам просто нужно указать пользователя: вероятно, последнее использование.

Комментарии:

1. Это для возврата кода через DM к боту. Я думаю, что это лучший пользовательский интерфейс, позволяющий отвечать на него кодом, а не вводить команду.