Почему перезарядка кнопки через CooldownMapping работает на всех участников?
После нажатия на кнопку КД запускается на всех участников сервера, а не на конкретного юзера. При этом в параметрах указан базис на юзера.
self.cooldown = commands.CooldownMapping.from_cooldown(1, 10, type=commands.BucketType.user)
Также пробовались остальные базисы, но разницы между ними никакой не наблюдалось. Отдельно пробовалось type=commands.BucketType.member
- тоже не помогло.
Полный код:
class MyClass(View):
def __init__(self, bot: discord.Bot):
super().__init__(timeout=None)
self.bot=bot
self.cooldown = commands.CooldownMapping.from_cooldown(1, 10, type=commands.BucketType.user)
@button(label="Button1", custom_id="button_one", style=discord.ButtonStyle.green)
async def callback(self, button: discord.ui.Button, Interaction: discord.Interaction):
bucket=self.cooldown.get_bucket(Interaction.message)
retry = bucket.update_rate_limit()
if retry:
return await Interaction.response.send_message('')
#код дальше
Ответы (1 шт):
Автор решения: nastexe
→ Ссылка
Извиняюсь за спешный вопрос.
На всякий случай добавлю решение: нужно было добавить условие Interaction.message.author = Interaction.user
, чтобы оно работало корректно.