我想在一个不和谐的机器人里做一个猜谜游戏。我已经完成了游戏,但不确定如何检索用户输入通过不和。我知道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”。当前,它只输出puts nothing,如果我将其更改为:
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)]
不能将int
与==
的字符串
进行比较。因此,使列表只包含字符串。
您也许可以有一个方法来解释他们发布的整个消息以触发命令?
@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
如果用户应该用命令(如!gues17463
)提供参数,那么这将非常有效,但是您也可以这样做,用户只需键入一个类似17463
的猜测,然后当他们输入正确的猜测时,它就会触发一些事件。