discord.py переписать |Проблема с получением сообщения автора - PullRequest
0 голосов
/ 18 февраля 2019

Я выполняю команду числовой игры на своем сервере, и кто-то посоветовал мне добавить трудности.Итак, у меня есть 3 трудности для пользователя на выбор.У меня уже есть немного кода, который получил ответ автора и работал, поэтому я снова использовал его в своем коде, и теперь я в тупике.Это может быть очевидно очевидно, но я не могу его найти:

@client.command(name='numgame',
                brief='Guess a number between 1 and 100',
                pass_ctx=True)
async def numgame(ctx):
    if ctx.author.id != 368442355382222849:
        await ctx.send('Command currently disabled')
        return

    await ctx.send('Difficulties: a] 1-10 b] 1-50 c] 1-100')
    msg = await client.wait_for('message', check=check(ctx.author), timeout=30)
    diff = str(msg.content)
    if diff == 'a':
        max = 10
        number = random.randint(1,10)
        await ctx.send('You have 5 guesses')
        await ctx.send('Pick a number between 1 and 10')
    elif diff == 'b':
        max = 50
        number = random.randint(1,50)
        await ctx.send('You have 5 guesses')
        await ctx.send('Pick a number between 1 and 50')
    elif diff == 'c':
        max = 100
        number = random.randint(1,100)
        await ctx.send('You have 5 guesses')
        await ctx.send('Pick a number between 1 and 100')
    else:
        ctx.send('Please try the command again...')
        return
    msg = None

Вот чек, который я использую:

    def check(author):
        def inner_check(message):
            # author check
            if message.author != author:
                return False

            # inner check
            try: 
                int(message.content) 
                return True 
            except ValueError: 
                return False

Когда я отвечаю на бот в чате с "a"," b "или" c ", я не получаю ответа.Я отключил команду для всех, кроме меня, пока пытался ее исправить, но понятия не имею, с чего начать.

Буду признателен за ответ, так как сам не вижу решения, спасибо![Я не показывал реальную игру с числами, потому что она неактуальна и длинна]

1 Ответ

0 голосов
/ 19 февраля 2019

Просто создайте новую функцию проверки, которая делает то, что вы хотите.

def abc_check(author):
    def inner_check(message):
        return author == message.author and message.content in ('a', 'b', 'c')
    return inner_check
...