我开发了一个discode bot,它可以随机分配一个角色,但是不起作用

时间:2020-04-15 10:12:57

标签: python python-3.x discord.py-rewrite

我随机尝试创建一个不和谐的机器人,该机器人在发生错误的时候为我分配了一个哈利波特的宿舍。无论我多么努力地修复它,都无法修复。 discord.py的版本为1.3.2,当前正在使用Python 3.8。我该如何解决该错误?

错误

discord.ext.commands.errors.missingrequiredargument:ctx是缺少的必需参数。

CODE

app.py
...

@client.command(pass_context=True, name="add")
async def enter(self, ctx):
    await ctx.send("Wait..")
    await asyncio.sleep(3.0)
    num = r.randint(1, 4)

    if num == 1:
        #Gryffindor
        egg = r.randint(1, 2)
        if egg == 1:
            await ctx.send("Um... it's hard... It's very difficult...")        
            await asyncio.sleep(2.0)
            await ctx.send("No Slytherin? Really?")
            await asyncio.sleep(1.0)
            await ctx.send("So, I can't help it.")
            await asyncio.sleep(1.0)
        else:
            await ctx.send("Hmm...")
            await ctx.send("Slytherin shouldn't go.")

        await asyncio.sleep(1.0)
        role = discord.utils.get(ctx.guild.roles, name="「?」Gryffindor")
        user = ctx.message.author
        await user.add_roles(role)
        await ctx.send("Gryffindor!")

    if num == 2:
        # Slytherin
        await ctx.send("There's nothing to see!")
        await asyncio.sleep(0.5)
        role = discord.utils.get(ctx.guild.roles, name="「?」Slytherin")
        user = ctx.message.author
        await user.add_roles(role)
        await ctx.send("Slytherin!")

    if num == 3:
        # Hufflepuff
        await ctx.send("Hmm...")
        await asyncio.sleep(1.4)
        role = discord.utils.get(ctx.guild.roles, name="「?」Hufflepuff")
        user = ctx.message.author
        await user.add_roles(role)
        await ctx.send("Hufflepuff!")

    if num == 4:
        #Lebenclaw
        await ctx.send("Well, it would be hard for difficult ...")
        await asyncio.sleep(1.2)
        role = discord.utils.get(ctx.guild.roles, name="「?」Lebenclaw")
        user = ctx.message.author
        await user.add_roles(role)
        await ctx.send("Lebenclaw!")

1 个答案:

答案 0 :(得分:0)

bot = discord.Client()

这正是您的问题。 您当前使用的是 @client.command(pass_context=True, name="add")

是discord.ext.commands库,这意味着您正在使用discord.py的附件(但已包含在安装中)。这是其文档:documentation

我们该如何解决? 这很容易: 代替 client = discord.Client() 请执行以下操作:(此代码摘自官方示例:here

from discord.ext import commands

client = commands.Bot(command_prefix='!')

始终将整个代码包含在问题中,或者至少包含一个可重现的示例。

编辑: 似乎您正在使用旧的代码段,也不再需要使用pass_context