discordpython-bot获取用户输入



我想在调用.hm后开始一个hangman游戏,然后用户可以输入没有命令前缀的字符来玩游戏。我看过文件https://discordpy.readthedocs.io/en/latest/api.html#discord.Client.wait_for_message并试图模仿用户输入检查,但没有成功。代码没有输出之前的最后一行是:打印("正在运行"(

@client.event
async def on_message(message):
global Hangman, guessed, tries, guessed_letters, channel, word, word_completion, guessed_words
if message.content.startswith('.hm'):
Hangman = True
print("hangman started")
channel = message.channel
word = get_word()
word_completion = "_" * len(word)
guessed = False
guessed_letters = []
guessed_words = []
tries = 6
await channel.send("Let's play hangman")
await channel.send(display_hangman(tries))
await channel.send(word_completion)
elif message.content.startswith('.hm quit'):
Hangman = False
if Hangman:
print(str(guessed) + str(tries))
if not guessed and tries > 0:
def check(m):
if any(c.isalpha() for c in m.content) and len(str(m)) == 1:
return m.content == message
print('Running')
guess = await client.wait_for('message', check=check)
print(str(guess))
if len(str(guess)) == 1:
if guess in guessed_letters:
await channel.send("You already guessed the letter", guess)
elif guess not in word:
await channel.send(guess, "is not in the word.")
tries -= 1
guessed_letters.append(guess)
else:
await channel.send("Good job,", guess, "is in the word!")
guessed_letters.append(guess)
word_as_list = list(word_completion)
indices = [i for i, letter in enumerate(word) if letter == guess]
for index in indices:
word_as_list[index] = guess
word_completion = "".join(word_as_list)
if "_" not in word_completion:
guessed = True
elif len(guess) == len(word) and guess.isalpha():
if guess in guessed_words:
await channel.send("You already guessed the word", guess)
elif guess != word:
await channel.send(guess, "is not the word.")
tries -= 1
guessed_words.append(guess)
else:
guessed = True
word_completion = word
else:
await channel.send("Not a valid guess.")
await channel.send(display_hangman(tries))
await channel.send(word_completion)
if guessed:
await channel.send("Congrats, you guessed the word! You win!")
else:
await channel.send("Sorry, you ran out of tries. The word was " + word + ". Maybe next time!")

get_word((只是从另一个.py文件中获取一个随机单词。

guess = await client.wait_for('message', check=check)

它用于在命令中使用。如果您使用的是on_message,则可以添加检查。如果

def check(m):
return m.channel = message.channel and m.author == message.author

现在,它会起作用的。如果需要,可以添加更多的支票。

相关内容

  • 没有找到相关文章

最新更新