discord.py 重写 |我怎样才能把它变成一个整数?

discord.py rewrite | How would I make this into an integer?

我正在尝试创建一个激活随机数猜谜游戏的命令。显然,我卡在了前几行。我写了我认为可行的东西,但它可能是明显错误的。我希望它将 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!')

每当我在我的 discord 服务器中执行命令时,我的 shell 都会给我这个错误:

discord.ext.commands.errors.CommandInvokeError: Command raised an exception: TypeError: int() argument must be a string, a bytes-like object or a number, not 'Message'

我不太确定它在告诉我什么。如前所述,我希望 "Message" 是一个整数,但我得到了错误。但帮助将不胜感激! [还是初学者,不要太苛刻:(]

wait_for('message') returns 一个 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")