discord.py重写|如何将其变成整数?

时间:2019-02-15 20:12:04

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

我正在尝试发出激活随机数猜测游戏的命令。显然,我陷入了前几行。我已经写了我认为会起作用的内容,但是这可能是公然的错误。我希望它可以将Discord服务器上的消息更改为int,因此它将在我的if语句中起作用。

这是我第一次使用discord.py制作机器人,所以我遇到了许多障碍。我不确定该错误告诉我什么,所以我无法尝试任何修复。这是代码:

async def numgame(context):
    number = random.randint(1,100)
    for guess in range(0,5):
        await context.send('Pick a number between 1 and 100')
        Message = await client.wait_for('message')
        Message = int(Message)
        if Message.cleant_content > number:
            await context.send(guess + ' guesses left...')
            asyncio.sleep(1)
            await context.send('Try going lower')
            asyncio.sleep(1)
       elif Message.clean_content < number:
            await context.send(guess + ' guesses left...')
            asyncio.sleep(1)
            await context.send('Try going higher')
            asyncio.sleep(1)
        else:
            await context.send('You guessed it! Good job!')
    if number != Message:
        await context.send('Tough luck!')

每当我在不和谐服务器上执行命令时,shell都会给我这个错误:

  

discord.ext.commands.errors.CommandInvokeError:命令引发了异常:TypeError:int()参数必须是字符串,类似字节的对象或数字,而不是“消息”

我不太确定它在告诉我什么。如前所述,我希望“消息”为整数,但出现错误。但我们将不胜感激! [仍然是初学者,请不要太苛刻:(]

1 个答案:

答案 0 :(得分:1)

wait_for('message')返回一个Message对象,int尚不知道如何处理。您需要将Message.content转换为int。下面是您的代码,并进行了其他一些更改:

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

@bot.command()
async def numgame(context):
    number = random.randint(1,100)
    for guess in range(0,5):
        await context.send('Pick a number between 1 and 100')
        msg = await client.wait_for('message', check=check)
        attempt = int(msg.content)
        if attempt > number:
            await context.send(str(guess) + ' guesses left...')
            await asyncio.sleep(1)
            await context.send('Try going lower')
            await asyncio.sleep(1)
       elif attempt < number:
            await context.send(str(guess) + ' guesses left...')
            await asyncio.sleep(1)
            await context.send('Try going higher')
            await asyncio.sleep(1)
        else:
            await context.send('You guessed it! Good job!')
            break 
    else:
        await context.send("You didn't get it")