我想做的事:使用discord.py-rewrite制作一个刽子手游戏
问题:我不确定此错误来自何处
discord.ext.commands.errors.CommandInvokeError: Command raised an exception:
NameError: name 'message' is not defined
此外,我还希望对代码进行评估,以防我遗漏了其他内容
主代码(bot.py):
#other imports here
from hangman import Hangman
game = Hangman()
@client.command(aliases=["hm"])
async def hangman(ctx, args):
game_message = ""
if len(args) > 1:
if args[1] == 'start':
game.start_game()
game_message = f"A word has been randomly selected (all lowercase). Guess letters by using `{prefix}hangman x` (x is the guessed letter)"
await ctx.send(game_message)
else:
game.guess(message.content)
client.run('token')
hangman.py:
#imports and all that jazz
class Hangman:
chosen_word = ""
guessed_letters = ""
remaining_guesses = 6
with open("hangman.txt", 'r') as f:
read = f.read()
words = read.split('\n')
has_ended = False
has_won = False
def start_game(self):
random.seed()
key = random.randint(1, len(self.words))
self.chosen_word = self.words[key]
new_string = ""
for i in range(0, len(self.chosen_word)):
new_string += "?"
self.guessed_letters = new_string
def get_game_status(self):
# return a string containing the current game status and if the player has won or not
message = ""
if not self.has_ended:
# print each letter followed by a space
letters = ""
for i in range(0, len(self.guessed_letters)):
letters += self.guessed_letters[i] + ' '
message = '{} guesses left \n'.format(self.remaining_guesses)
message += letters
if self.has_ended and self.has_won:
message += '\n You won! You correctly guessed ' + '`{}`'.format(self.chosen_word)
elif self.has_ended and not self.has_won:
message += '\n You lost! The correct word was ' + '`{}`'.format(self.chosen_word)
return message
def guess(self, message):
args = message.split(' ')
guess = ""
contains_guess = False
if len(args) > 1:
guess = args[1]
for i in range(0, len(self.chosen_word)):
if guess[0] == self.chosen_word[i]:
self.guessed_letters = self.guessed_letters[:i] + guess[0] + self.guessed_letters[i + 1:]
contains_guess = True
if not contains_guess:
self.remaining_guesses -= 1
# check for letters that haven't been guessed
unguessed_letters = False
for letter in self.guessed_letters:
if letter == '?':
unguessed_letters = True
# player has won the game
if not unguessed_letters:
self.has_ended = True
self.has_won = True
# no more guesses, so the player has lost
if self.remaining_guesses < 0:
self.has_ended = True
self.has_won = False
在bot.py else语句中,您编写了message.content,但未定义消息
相关问题 更多 >
编程相关推荐