我正在尝试发出激活随机数猜测游戏的命令。显然,我陷入了前几行。我已经写了我认为会起作用的内容,但是这可能是公然的错误。我希望它可以将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()参数必须是字符串,类似字节的对象或数字,而不是“消息”
我不太确定它在告诉我什么。如前所述,我希望“消息”为整数,但出现错误。但我们将不胜感激! [仍然是初学者,请不要太苛刻:(]
答案 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")