使用get_cog获取已加载的RNG cog时返回None的问题排查
解决
get_cog无法找到RNG Cog的问题 哦,我一眼就发现问题所在了!你在循环里调用的cog.title()正是导致RNG Cog找不到的关键原因。
问题根源
当你对字符串'RNG'调用title()方法时,它会被转换成'Rng'(首字母大写,其余小写)。但你的bot.cogs字典里存储的键是全大写的'RNG',而get_cog()方法是严格匹配键名大小写的,所以用'Rng'去查找自然找不到对应的Cog对象,只能返回None。
而help RNG能正常工作,是因为Discord.py的help命令内部做了大小写不敏感的匹配处理,和get_cog的严格匹配逻辑不一样。
修正方案
直接使用bot.cogs里的原始键名去调用get_cog,不需要额外的大小写转换:
cog_list = sorted(bot.cogs.keys()) for cog_name in cog_list: cog = bot.get_cog(cog_name) print(cog)
或者更高效的方式,直接遍历bot.cogs的键值对,省去单独调用get_cog的步骤:
# 直接排序并遍历键值对 for cog_name, cog in sorted(bot.cogs.items()): print(cog_name, cog)
这样修改后,你就能正确获取到<rng.RNG object at [...]>的输出了。
内容的提问来源于stack exchange,提问作者MajorTanya
相关产品推荐
相关产品推荐

