diff --git a/hangman/hangman.py b/hangman/hangman.py index 563e7ee..0e1da72 100644 --- a/hangman/hangman.py +++ b/hangman/hangman.py @@ -223,8 +223,9 @@ class Hangman: return out_str - async def _guessletter(self, guess, channel): + async def _guessletter(self, guess, message): """Checks the guess on a letter and prints game if acceptable guess""" + channel = message.channel if guess.upper() not in "ABCDEFGHIJKLMNOPQRSTUVWXYZ" or len(guess) != 1: await channel.send("Invalid guess. Only A-Z is accepted") return @@ -237,7 +238,7 @@ class Hangman: self.the_data[channel.guild]["guesses"].append(guess.upper()) - await self._printgame(channel) + await self._reprintgame(message) async def _on_react(self, reaction, user): """ Thanks to flapjack reactpoll for guidelines @@ -254,6 +255,8 @@ class Hangman: if str(emoji) in self.letters: letter = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[self.letters.index(str(emoji))] await self._guessletter(letter, message.channel) + await message.remove_reaction(emoji, user) + await message.remove_reaction(emoji, self.bot.user) if str(emoji) in self.navigate: if str(emoji) == self.navigate[0]: @@ -287,18 +290,34 @@ class Hangman: await message.add_reaction(self.navigate[0]) - async def _printgame(self, channel): - """Print the current state of game""" - if channel.guild not in self.hanglist: + def _make_say(self, guild): + c_say = "Guess this: " + str(self._hideanswer(guild)) + "\n" + + c_say += "Used Letters: " + str(self._guesslist(guild)) + "\n" + + c_say += self.hanglist[guild][self.the_data[guild]["hangman"]] + "\n" + + c_say += self.navigate[0] + " for A-M, " + self.navigate[-1] + " for N-Z" + + return c_say + + async def _reprintgame(self, message): + if message.guild not in self.hanglist: await self._update_hanglist() - c_say ="Guess this: " + str(self._hideanswer(channel.guild)) + "\n" + c_say = self._make_say(message.guild) - c_say += "Used Letters: " + str(self._guesslist(channel.guild)) + "\n" + await message.edit(c_say) + self.the_data[message.guild]["trackmessage"] = message.id - c_say += self.hanglist[channel.guild][self.the_data[channel.guild]["hangman"]] + "\n" + await self._checkdone(message.channel) - c_say += self.navigate[0] + " for A-M, " + self.navigate[-1] + " for N-Z" + async def _printgame(self, channel): + """Print the current state of game""" + if channel.guild not in self.hanglist: + await self._update_hanglist() + + c_say = self._make_say(channel.guild) message = await channel.send(c_say)