猜谜游戏,discord.py 机器人
问题描述
我正在尝试制作一个不和谐的机器人猜谜游戏(使用 python),但它一直失败.我查看了许多类似的帖子,但没有发现任何帮助.
Im trying to make a discord bot guessing game (using python) but it keeps failing. I have looked at many similar posts and haven't found anything that helps.
@bot.command(name='play')
async def play(ctx):
number = random.randint(1,100)
await ctx.send('I have a number in mind between 1 and 100, guess')
for i in range(0,5):
guess = await client.wait_for('message') **(see below the code)
if guess.content == number:
await ctx.send('You got it!')
elif guess.content < number:
await ctx.send('Higher!')
elif guess.content > number:
await ctx.send('Lower!')
else:
await ctx.send("You lost, type $play to play again.")
** 通常它会说: , check=check,但这似乎不起作用,它说,检查未定义或类似的东西
** normaly it would say: , check=check, but that doesnt seem to work, it says, check not defined or something like that
代码似乎卡在:for i in range(0,5):
,或:guess = await client.wait_for('message')
有人可以帮忙吗?或者发布一个有效的猜谜游戏+解释?
could someone help?, or post a guessing game that works + explanation?
解决方案
正如评论中提到的,你需要包含你自己的check
.如下所示:
As mentioned in the comments, you need to include your own check
. This looks like the following:
def check(m):
return m.author == ctx.author and m.channel == ctx.message.channel
这确保只有来自命令作者的消息被识别和接受.我们将其包含在代码中.
This ensures that only the message from the author of the command is recognized and accepted. We include this in the code.
另外,你不能使用 </>number
,你会得到如下错误:
Also, you can't use </> number
, you will get the following error:
TypeError: '<' not supported between instances of 'str' and 'int'.
要解决这个问题,只需将 number
更改为 str:
To fix this, simply change number
to a str:
</> str(number)
可能的代码是:
@bot.command(name='play')
async def play(ctx):
def check(m):
return m.author == ctx.author and m.channel == ctx.message.channel
number = random.randint(1, 100)
await ctx.send('I have a number in mind between 1 and 100, guess')
for i in range(0, 5):
guess = await bot.wait_for('message', check=check)
if guess.content == number:
await ctx.send('You got it!')
elif guess.content < str(number):
await ctx.send('Higher!')
elif guess.content > str(number):
await ctx.send('Lower!')
else:
return # Or something else
else:
await ctx.send("You lost, type $play to play again.")
相关文章