discord.py 分片启动时打印对应分片编号的实现方法
重要说明:以下方案全部基于Python语言的discord.py框架实现,无JavaScript相关内容
分片启动日志实现方法
discord.py 自带的AutoShardedBot原生提供了单分片就绪的事件监听能力,不需要额外爬取内部变量,直接绑定事件即可拿到当前启动完成的分片ID。
核心实现逻辑
- 监听
on_shard_ready事件,该事件会在每一个分片完成网关连接、初始化就绪时单独触发 - 事件回调会自动传入当前就绪的分片ID(整数类型,从0开始计数),直接传入print语句即可
- 你现有的分片初始化代码不需要做任何修改,只需要补充事件监听代码
完整代码示例
from discord.ext import commands # 原有初始化代码保持不变 client = commands.AutoShardedBot(shard_count=2, command_prefix = '$') # 新增单分片就绪监听 @client.event async def on_shard_ready(shard_id): # 直接使用事件传入的shard_id打印日志 print(f"Shard number {shard_id} has started.") # 后续接你已有的其他业务逻辑、机器人启动代码即可 # client.run("你的机器人Token")
效果说明
如果你设置了shard_count=2,机器人启动过程中控制台会依次输出:
Shard number 0 has started.
Shard number 1 has started.
如果后续调整分片总数,这段监听代码不需要做任何改动,框架会自动适配所有分片的触发逻辑。如果需要感知全部分片启动完成的节点,可以额外监听on_ready事件,该事件会在所有分片全部就绪后触发一次。
内容的提问来源于stack exchange,提问作者cats585
相关产品推荐
相关产品推荐

