【问题标题】:How do I reliably get user input as a variable from a list of certain options using discord.py?如何使用 discord.py 从某些选项列表中可靠地获取用户输入作为变量?
【发布时间】:2019-09-28 15:43:07
【问题描述】:

我正在尝试在 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 并将其存储为“猜测”。 目前它什么都没有,如果我把它改成:

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

它只接受它检查的直接字符串。

【问题讨论】:

标签: python python-3.x discord discord.py discord.py-rewrite


【解决方案1】:

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

您无法将intstring== 进行比较。所以,让列表只包含字符串。

【讨论】:

  • 好的,谢谢,它确实解决了它响应任何数字的问题。
【解决方案2】:

您也许有一种方法可以解释他们发布的整个消息以触发命令?

@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 之类的猜测,然后当他们输入正确的猜猜它会触发一些事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-25
    • 2019-09-19
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 1970-01-01
    相关资源
    最近更新 更多