Я разработал бот-диск, который случайным образом назначает роль, но он не работает - PullRequest
0 голосов
/ 15 апреля 2020

Я случайно пытался создать бот-дискорд, который бы назначил мне общежитие для Гарри Поттера, когда я столкнулся с ошибкой. Как бы я ни пытался это исправить, это не могло быть исправлено. Версия discord.py 1.3.2, и Python 3.8 в настоящее время используется. Как я могу исправить ошибку?

Ошибка

discord.ext.commands.errors.missingrequiredargument: ctx - обязательный аргумент, который отсутствует.

КОД

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 голосов
/ 15 апреля 2020
bot = discord.Client()

Это именно ваша проблема. В настоящее время вы используете @client.command(pass_context=True, name="add")

библиотеку discord.ext.commands, что означает, что вы используете дополнение к discord.py (но оно включено в вашу установку). Вот его документация: документация

Как мы можем это исправить? Это довольно просто: вместо client = discord.Client() выполните следующее: (Этот код взят из официального примера: здесь

from discord.ext import commands

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

Всегда включайте весь свой код в вопросы или, по крайней мере, минимально воспроизводимый пример.

Редактировать: Также кажется, что вы используете старый фрагмент кода, вам больше не нужно использовать pass_context.

...