首页 > 解决方案 > Discord.py:MissingRequiredArgument:self 是缺少的必需参数

问题描述

我想在用户执行命令时更改存在。我在自己的班级中有 Discord 机器人。要改变存在,我需要 self 参数。但是当我写

    @bot.command()
    async def change(self, ctx):
        await self.client.change_presence(activity=discord.Game("P-Hub"))

我得到错误:

discord.ext.commands.errors.MissingRequiredArgument: ctx is a required argument that is missing.

当我写:

    @bot.command()
    async def change(ctx, self):
        await self.client.change_presence(activity=discord.Game("P-Hub"))

我收到此错误:

discord.ext.commands.errors.MissingRequiredArgument: self is a required argument that is missing.

整个代码是:

    class DiscordBot():
        def __init__(self, client, token):
            self.client = client
            self.token = token

        def run(self):
            self.client.run(self.token)

       @bot.command()
            async def change(ctx, self):
                await self.client.change_presence(activity=discord.Game("P-Hub"))

       @bot.event
           async def on_ready():
           print("My Ready is Body")

       @bot.listen()
           async def on_message(message):
               print(str(message.author) + ": " + message.content)

       if __name__ == '__main__':
           client = DiscordBot(bot, 'token')
           client.run()

有没有人有办法解决吗?

标签: python-3.xdiscorddiscord.py

解决方案


你为什么把它放在课堂上?当您像示例一样离开时,它可以正常工作。如果是关于在同一个脚本中运行 2 个机器人,那么使用这个问题将对您有所帮助。

@bot.event
async def on_ready():
    print("My Ready is Body")

@bot.command()
async def change(ctx):
    await self.client.change_presence(activity=discord.Game("P-Hub"))

bot.run('token')

如果您需要使用多个文件,请查看cogs


推荐阅读