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