You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Discord机器人Cogs中NameError: name 'changePlaying'未定义问题

解决Discord.py Cog中changePlaying未定义的NameError问题

我帮你分析下问题根源,再一步步给出修复方案:

1. 核心错误:类方法调用缺少self前缀

你在on_ready里直接写changePlaying(self)是不对的——changePlaying是你的Cog类的成员方法,必须通过self来引用它,Python才能找到这个方法。把这行代码改成:

self.bot.loop.create_task(self.changePlaying())

这是解决NameError的关键。

2. 修正PlayingList的语法错误

你写的PlayingList = [Maximus.py.","!help"]有两处语法问题:

  • 字符串Maximus.py没加引号
  • 多了一个多余的点
    修正后应该是:
PlayingList = ["Maximus.py", "!help"]

3. 适配Discord.py的版本变化

在较新的Discord.py版本中,change_presence的game参数已经被替换成activity,所以这行代码需要调整:

await self.bot.change_presence(activity=discord.Game(name=random.choice(PlayingList)))

4. 确保必要的导入

要让代码正常运行,文件顶部必须导入这些模块:

import discord
from discord.ext import commands
import random
import asyncio

完整的修正后Cog示例

把所有修改整合后,你的Events Cog应该是这样的:

import discord
from discord.ext import commands
import random
import asyncio

class Events(commands.Cog):
    def __init__(self, bot):
        self.bot = bot
        self.PlayingList = ["Maximus.py", "!help"]  # 建议把列表设为类属性,更规范

    async def changePlaying(self):
        while True:
            await self.bot.change_presence(activity=discord.Game(name=random.choice(self.PlayingList)))
            await asyncio.sleep(120)

    @commands.Cog.listener()
    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(self.changePlaying())

# 注册Cog的必要函数
def setup(bot):
    bot.add_cog(Events(bot))

最后检查

  • 确认你的Cog类正确继承了commands.Cog
  • on_ready上方必须加@commands.Cog.listener()装饰器,否则Discord.py不会识别这个事件
  • 主文件里要通过bot.load_extension("events")加载这个Cog

这样修改后,机器人就能正常切换状态栏,NameError也会消失。

内容的提问来源于stack exchange,提问作者Mooles

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:05:08