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

discord.py中get_guild在命令内失效,仅on_ready中可用问题求助

问题解决:Discord机器人get_guild()在命令中返回None

核心原因

最常见的问题是机器人未正确配置意图(Intents),导致服务器数据没有被缓存到机器人实例中。on_ready()事件触发时机器人刚完成初始化,可能还能临时获取到数据,但后续命令调用时缓存未同步,就会返回None。

解决方案

1. 配置正确的意图

在Discord开发者门户(机器人设置页面)开启GUILDS意图,然后在代码中显式声明:

import discord
from discord.ext import commands

# 初始化意图,开启服务器相关权限
intents = discord.Intents.default()
intents.guilds = True

# 传入意图创建机器人实例
Bot = commands.Bot(command_prefix="你的前缀", intents=intents)

2. 优先使用ctx.guild(更可靠)

既然命令是在目标服务器内触发的,直接通过上下文ctx获取当前服务器对象,无需手动传入ID:

@Bot.command()
async def leaderboard(ctx):
    server = ctx.guild
    print(server)  # 正常输出当前服务器信息

额外检查

  • 确认机器人确实在目标服务器内,且拥有足够的权限
  • 检查my_sv_id是否为整数类型(Discord服务器ID必须是整数,不能是字符串)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 13:48:21