You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 07:12:52