在我的机器人程序中,我有一条命令只会打印出所有已加载齿轮的名称(以及以后的描述)。
对于大多数人来说,它工作得很好,但是似乎有一个名为RNG
for c in bot.cogs:
if c is None:
continue
else:
cog_list.append(c)
cog_list = sorted(cog_list)
print(cog_list)
>>> ['General', 'Misc', 'RNG']` # (all loaded cogs, so this is correct)
for cog in cog_list:
cog = bot.get_cog(cog.title())
print(cog)
>>> <general.General object at [...]> # 'General' cog
>>> <misc.Misc object at [...]> # 'Misc' cog
>>> None # 'RNG' cog, but it's not found?
# (expected <rng.RNG object at [...]>)
仅显示RNG齿轮已实际加载,这是print(bot.cogs)
的输出:
{'General': <general.General object at [...]>, 'Misc': <misc.Misc object at [...]>, 'RNG': <rng.RNG object at [...]>}
我从文档中知道,未找到齿轮时会返回None
,但是正如我可以清楚地看到的那样,RNG齿轮已非常重载并且所包含的命令运行正常。
现在,我想知道是否是它的名字,但是对机器人进行help RNG
的工作也很好。
有没有办法让get_cog
找到我的RNG模块?
答案 0 :(得分:2)
一些更具描述性的命名可以帮助您了解正在发生的事情
for cog_name in cog_list:
print(cog_name.title())
打印
General
Misc
Rng
请注意,RNG
已成为Rng
。这是因为.title()
字符串方法使用字符串Title Case构成,其中每个单词都大写。因此,在搜索中,您正在查找Rng
并期望它找到RNG
,但这不起作用,因为搜索区分大小写。