如何修复“未定义名称错误名称‘changePlaying’

Posted

技术标签:

【中文标题】如何修复“未定义名称错误名称‘changePlaying’【英文标题】:How to fix "NameError name 'changePlaying' is not defined 【发布时间】:2019-06-13 05:53:28 【问题描述】:

我正在使用 cogs 来缩短和组织我的 Discord 机器人。然而,在尝试“事件”齿轮时,我面临一个 NameError of changePlaying not being defined 尽管它实际上是关于 on_ready 命令

A:我忘记导入 discord.ext,因此导入了它。 B:我尝试在 changePlaying 事件内外更改可能状态列表的位置

PlayingList = [Maximus.py.","!help"]
async def changePlaying(self):
    while True:
        await self.bot.change_presence(game=Game(name=random.choice(PlayingList)))
        await asyncio.sleep(120)


async def on_ready(self):
    print('Logged in as')
    print(self.bot.user.name)
    print(self.bot.user.id)
    print('-----------------------------------------')
    print('Log in complete')
    for x in range(5):
        print("")
    self.bot.loop.create_task(changePlaying(self))

嗯,我认为很明显预期的结果是什么,但要澄清机器人应该启动。它确实上线并且确实听命令但状态栏没有改变

【问题讨论】:

【参考方案1】:

鉴于方法的self 参数,我看到它们在齿轮中。您应该使用PlayingList 作为cog 的属性,即在其__init__ 中添加self.PlayingList = ["Maximus.py.","!help"],然后通过方法中的self. 访问它。

所以答案是:你没有正确使用方法。你必须做self.changePlaying() 而不是changePlaying(self)

顺便说一句,如果您不打算通过执行来修改它,请使用元组而不是列表。并且变量名不应该以大写字母开头,因为它通常保留给类。见PEP 8。

【讨论】:

啊我不知道大写字母的变量。我会更正并感谢您的回答!非常感激! :)

以上是关于如何修复“未定义名称错误名称‘changePlaying’的主要内容,如果未能解决你的问题,请参考以下文章

如何修复漏洞

如何修复WMI

PHP网站漏洞怎么修复 如何修补网站程序代码漏洞

如何修复这些漏洞? (npm audit fix 无法修复这些漏洞)

如何修复AppScan漏洞

如何在DOS环境下修复系统