在 discord.py ratelimit 上做一些事情

问题描述

我希望你们都有一个美好的白天/夜晚。

我有一个在云端运行的 discord 机器人,当我的共享 IP 达到每秒 50 个请求的速率限制时,我的机器人会被阻止一段时间(我知道,这是一个糟糕的系统,但它就是我所在的地方)。如果发生这种情况,我希望它在另一个站点上向我发送消息。我有一种发送消息的方法(使用 Twitter 的 Tweepy 模块),但是当我使用以下代码时没有任何反应:

@client.event
    async def on_error(ctx,error):
      if isinstance(error,discord.errors.HTTPException):
        #do something

我做错了吗?谢谢!

解决方法

由于您的速率限制只能由某些命令触发,并且您只能在之后在控制台中收到消息,因此使用 on_command_error 事件是有意义的。

看下面的代码:

@client.event
async def on_command_error(ctx,error):
    if isinstance(error,discord.HTTPException):
        await ctx.send("You are ratelimited") # Send whatever you want.