Merge pull request #20 from bobloy/hangman-develop

Hangman develop
readme_updates
bobloy 6 years ago committed by GitHub
commit acc3a3033a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -2,8 +2,7 @@ from collections import defaultdict
from random import randint from random import randint
import discord import discord
from redbot.core import Config, checks from redbot.core import Config, checks, commands
from redbot.core import commands
from redbot.core.data_manager import cog_data_path from redbot.core.data_manager import cog_data_path
@ -17,6 +16,7 @@ class Hangman:
self.config = Config.get_conf(self, identifier=1049711010310997110) self.config = Config.get_conf(self, identifier=1049711010310997110)
default_guild = { default_guild = {
"theface": ':thinking:', "theface": ':thinking:',
"emojis": True,
} }
self.config.register_guild(**default_guild) self.config.register_guild(**default_guild)
@ -132,6 +132,7 @@ class Hangman:
@hangset.command(pass_context=True) @hangset.command(pass_context=True)
async def face(self, ctx: commands.Context, theface): async def face(self, ctx: commands.Context, theface):
"""Set the face of the hangman"""
message = ctx.message message = ctx.message
# Borrowing FlapJack's emoji validation # Borrowing FlapJack's emoji validation
# (https://github.com/flapjax/FlapJack-Cogs/blob/master/smartreact/smartreact.py) # (https://github.com/flapjax/FlapJack-Cogs/blob/master/smartreact/smartreact.py)
@ -149,6 +150,14 @@ class Hangman:
await self._update_hanglist() await self._update_hanglist()
await ctx.send("Face has been updated!") await ctx.send("Face has been updated!")
@hangset.command(pass_context=True)
async def toggleemoji(self, ctx: commands.Context):
"""Toggles whether to automatically react with the alphabet"""
current = await self.config.guild(ctx.guild).emojis()
await self.config.guild(ctx.guild).emojis.set(not current)
await ctx.send("Emoji Letter reactions have been set to {}".format(not current))
@commands.command(aliases=['hang'], pass_context=True) @commands.command(aliases=['hang'], pass_context=True)
async def hangman(self, ctx, guess: str = None): async def hangman(self, ctx, guess: str = None):
"""Play a game of hangman against the bot!""" """Play a game of hangman against the bot!"""
@ -253,7 +262,7 @@ class Hangman:
return return
if user == self.bot.user: if user == self.bot.user:
return # Don't remove bot's own reactions return # Don't react to bot's own reactions
message = reaction.message message = reaction.message
emoji = reaction.emoji emoji = reaction.emoji
@ -270,15 +279,27 @@ class Hangman:
if str(emoji) == self.navigate[-1]: if str(emoji) == self.navigate[-1]:
await self._reactmessage_nz(message) await self._reactmessage_nz(message)
async def _try_clear_reactions(self, message):
try:
await message.clear_reactions()
except discord.Forbidden:
pass
async def _reactmessage_menu(self, message): async def _reactmessage_menu(self, message):
"""React with menu options""" """React with menu options"""
await message.clear_reactions() if not await self.config.guild(message.guild).emojis():
return
await self._try_clear_reactions(message)
await message.add_reaction(self.navigate[0]) await message.add_reaction(self.navigate[0])
await message.add_reaction(self.navigate[-1]) await message.add_reaction(self.navigate[-1])
async def _reactmessage_am(self, message): async def _reactmessage_am(self, message):
await message.clear_reactions() if not await self.config.guild(message.guild).emojis():
return
await self._try_clear_reactions(message)
for x in range(len(self.letters)): for x in range(len(self.letters)):
if x in [i for i, b in enumerate("ABCDEFGHIJKLM") if b not in self._guesslist(message.guild)]: if x in [i for i, b in enumerate("ABCDEFGHIJKLM") if b not in self._guesslist(message.guild)]:
@ -287,7 +308,10 @@ class Hangman:
await message.add_reaction(self.navigate[-1]) await message.add_reaction(self.navigate[-1])
async def _reactmessage_nz(self, message): async def _reactmessage_nz(self, message):
await message.clear_reactions() if not await self.config.guild(message.guild).emojis():
return
await self._try_clear_reactions(message)
for x in range(len(self.letters)): for x in range(len(self.letters)):
if x in [i for i, b in enumerate("NOPQRSTUVWXYZ") if b not in self._guesslist(message.guild)]: if x in [i for i, b in enumerate("NOPQRSTUVWXYZ") if b not in self._guesslist(message.guild)]:
@ -297,11 +321,8 @@ class Hangman:
def _make_say(self, guild): def _make_say(self, guild):
c_say = "Guess this: " + str(self._hideanswer(guild)) + "\n" c_say = "Guess this: " + str(self._hideanswer(guild)) + "\n"
c_say += "Used Letters: " + str(self._guesslist(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.hanglist[guild][self.the_data[guild]["hangman"]] + "\n"
c_say += self.navigate[0] + " for A-M, " + self.navigate[-1] + " for N-Z" c_say += self.navigate[0] + " for A-M, " + self.navigate[-1] + " for N-Z"
return c_say return c_say

Loading…
Cancel
Save