如何使用 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== 进行比较。所以,让列表只包含字符串。

您或许可以使用一种方法来解释整个消息 post 以触发命令?

@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 这样用他们的命令提供参数,这会很好用,但你也可以这样做,这样用户只需要输入一个猜测,比如 17463,并且然后当他们输入正确的猜测时,它会触发一些事件。