如何在discord.py中获取用户输入


@client.command()
async def blackjack(ctx):
y= random.choice(deck)
x=random.choice(deck)
z=random.choice(deck)
a=random.choice(deck)
await ctx.send(f'{x, y}')
await ctx.send(f'{a, z}')
m = await client.wait_for("message", check=None)

if m == "Stand":
B = x+y
S = a+z
if S < B:
while S < B or S < 21: 
await ctx.send(S= a+z+random.choice(deck))
if S > 21:
ctx.send("You win")
else:
ctx.send("You Lose")
else:
ctx.send("You Lose")

这是我的代码片段,我试图让用户输入他是否想站起来或抽另一张牌。我还没有实现一个绘图功能,因为站功能似乎不工作。我的牌被正确地定义为数字和。

我认为问题出在用户输入上,因为我不太熟悉discord.py

中的输入。如果程序可以工作,它将等待用户的反应,如果他们想站起来抽牌,直到超过21张或超过玩家,并打印出玩家是输还是赢。

如有任何帮助,不胜感激

我想你没有加支票,你保留为NONE。

所以你应该这样做:

@client.command()
async def blackjack(ctx):
y= random.choice(deck)
x=random.choice(deck)
z=random.choice(deck)
a=random.choice(deck)
await ctx.send(f'{x, y}')
await ctx.send(f'{a, z}')
def check(msg):
return msg.author == ctx.author and msg.channel == ctx.channel and msg.content.lower().startswith()
msg = await client.wait_for("message", check=check)

if msg.content.lower().startswith("Stand"):
B = x+y
S = a+z
if S < B:
while S < B or S < 21: 
await ctx.send(S= a+z+random.choice(deck))
if S > 21:
ctx.send("You win")
else:
ctx.send("You Lose")
else:
ctx.send("You Lose")

startswith()是完全可选的,但我建议您添加它!

你可以像这样添加事件超时:

msg = await bot.wait_for("message", check=check, timeout=<anything you want in {int}>)

最新更新