【问题标题】:How to fix "NameError name 'changePlaying' is not defined如何修复“未定义名称错误名称‘changePlaying’
【发布时间】: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))

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

【问题讨论】:

    标签: python-3.6 discord.py


    【解决方案1】:

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

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

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

    【讨论】:

    • 啊我不知道大写字母的变量。我会更正并感谢您的回答!非常感激! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-24
    • 1970-01-01
    • 2022-01-01
    • 2019-09-26
    • 2021-04-02
    • 2015-01-28
    • 1970-01-01
    相关资源
    最近更新 更多