我在网上读到,由于速率限制,在on_ready活动中使用change_presence可能会导致你的Discord机器人被禁止.我认为这是因为在这个事件中进行了很多API调用.

我目前的解决方案是在事件开始时使用asyncio.sleep(),希望先进行初始化API调用,然后在一段时间后运行代码.

我现在想知道这是否真的有帮助,或者它是否和没有睡眠一样糟糕?

代码如下:

@commands.Cog.listener()
async def on_ready(self):
    await asyncio.sleep(5)
    await self.bot.change_presence(activity=discord.Activity(type=discord.ActivityType.watching, name="❌"))

推荐答案

最简单的方法是在构建bot时传递它.例子:

from discord.ext import commands

bot = commands.Bot(
    command_prefix="!",
    activity=discord.Activity(type=discord.ActivityType.watching, name="❌"),
    intents=discord.Intents.default(),
)

Python-3.x相关问答推荐

使用Polars阅读按日期键分区的最新S3镶木地板文件

我在创建Pandas DataFrame时感到困惑

如何将参数/值从测试方法传递给pytest的fixture函数?

msg-seviri l1.5本机文件

如何在 python 中将带有时区信息的时间戳转换为 utc 时间

以某种方式分割字符串

tkinter treeview 如何在获取所选项目时将设置的对象作为对象返回

提高时间复杂度的一些建议

如何从形状汇总图中提取实际值

使用一周的特定第一天将每日日期转换为每周

通过 requests 库调用 API 获取访问令牌

Python:遍历子列表

无法在 Windows 8 中使用 Python 3.3 找到 vcvarsall.bat

登录csv文件的正确方法是什么?

如何使用 d.items() 更改 for 循环中的所有字典键?

为 True 相交两个布尔数组

将 args、kwargs 传递给 run_in_executor

如何使用 python 库连接到 poloniex.com websocket api

try 在 Mac OS 中运行此命令pipenv install requests时出错

Python:如何在 Windows 资源管理器中打开文件夹(Python 3.6.2、Windows 10)