如何修复“未定义名称错误名称‘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’的主要内容,如果未能解决你的问题,请参考以下文章