簡體   English   中英

如何在discord.py中獲取用戶輸入

[英]How to get user input in 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}>)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM