簡體   English   中英

如何使用discord.py從某些選項列表中可靠地獲取用戶輸入作為變量?

[英]How do I reliably get user input as a variable from a list of certain options using discord.py?

我正在嘗試在Discord機器人中進行猜謎游戲。 我已經完成游戲,但是不確定如何通過Discord檢索用戶輸入。 我知道該wait_for方法以獲得特定的響應。 問題在於它僅檢查特定的字符串。 我正在尋找一種方法來檢查可能的字符串列表並存儲它檢查為真的任何字符串。 (例如:如果使用其中一個字符串,它將輸入內容存儲到變量中)

possible_numbers = [i for i in range(1,51)]
def check(m):
    if m.content in possible_numbers:
        return m.content == m.content and m.channel == channel
guess = await client.wait_for('message', check=check, timeout=120.0)

我期望沿着這些思路可以成功地檢查m.content是否在possible_numbers中,如果是,則只需檢索m.content並將其存儲為“ guess”。 目前,它只輸出任何內容,如果我將其更改為:

def check(m):
    return m.content == '1' and m.channel == channel
guess = await client.wait_for('message', check=check, timeout=120.0)

它只會接受要檢查的直接字符串。

possible_numbers = [str(i) for i in range(1,51)]

您不能使用==intstring進行比較。 因此,使列表僅包含字符串。

您也許可以使用一種方法來解釋他們發布的全部消息以觸發命令?

@bot.event
async def on_message(ctx): # compute every message, not just commands
    message_being_interpreted = ctx.content.lower()
    print(message_being_interpreted ) # will print all messages
    # do things to parse it like this
    if "!guess" in message_being_interpreted:
        pass # or do stuff

如果應該為用戶提供帶有!guess 17463這樣的命令的參數,這將非常!guess 17463 ,但是您也可以這樣做,以便用戶只需要輸入17463這樣的猜測,然后在他們輸入正確的猜測時就會觸發某個事件。

暫無
暫無

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

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