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

discord.py框架下bot.owner_id返回None问题如何解决

问题产生原因

  • discord.py框架下的Bot实例默认不会在初始化阶段主动拉取应用所有者信息,未提前拉取的情况下bot.owner_id默认为None
  • 初始化Bot时没有手动传入owner_id配置参数,框架不会自动填充该字段
  • 调用bot.owner_id的时机早于Bot完成和Discord服务器的连接认证(例如在on_ready事件触发前调用),还未拉取到对应的应用元数据
  • 如果你配置的是多所有者参数owner_ids而不是单所有者的owner_id,bot.owner_id也会固定返回None,需要读取bot.owner_ids集合获取所有者ID列表

排查修复方案

  • 方案1:初始化Bot时硬编码传入所有者ID,稳定性最高,不需要额外网络请求
    代码示例:
    # 替换为你自己的Discord用户ID
    bot = commands.Bot(command_prefix="!", intents=your_intents, owner_id=123456789012345678)
    
  • 方案2:在使用bot.owner_id前先主动拉取应用信息,适合不想硬编码ID的场景,拉取后会自动缓存到Bot实例中
    修复后的指令代码示例:
    @bot.command(aliases=["bi"])
    async def bot_info(ctx):
      # 未缓存owner_id时先拉取应用信息
      if not bot.owner_id:
          app_info = await bot.application_info()
          bot.owner_id = app_info.owner.id
      # 后续原有逻辑
      embed.add_field(name="Owner ID", value=str(bot.owner_id))
    
  • 方案3:排查调用逻辑的执行时机,确保所有读取bot.owner_id的操作都在on_ready事件触发之后执行
  • 方案4:如果是多所有者场景,将取值逻辑改为读取bot.owner_ids,初始化时传入集合格式的多所有者ID:
    bot = commands.Bot(command_prefix="!", intents=your_intents, owner_ids={123456789, 987654321})
    

内容的提问来源于stack exchange,提问作者benz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 23:57:02