diff options
| author | 2018-10-14 20:06:36 +1100 | |
|---|---|---|
| committer | 2018-10-14 20:06:36 +1100 | |
| commit | 6efbded6e068dff478ee121ede2ebe74a16292f5 (patch) | |
| tree | 5067ce6061932a926ee05e6a54b44e29422af409 /bot/cogs/candy_collection.py | |
| parent | Add that line back lol (diff) | |
fixed docstring and position of constants
Diffstat (limited to 'bot/cogs/candy_collection.py')
| -rw-r--r-- | bot/cogs/candy_collection.py | 67 | 
1 files changed, 43 insertions, 24 deletions
| diff --git a/bot/cogs/candy_collection.py b/bot/cogs/candy_collection.py index b8a36115..59eadd93 100644 --- a/bot/cogs/candy_collection.py +++ b/bot/cogs/candy_collection.py @@ -7,6 +7,14 @@ import os  json_location = os.path.join(os.getcwd(), 'resources', 'candy_collection.json') +HACKTOBER_CHANNEL_ID = 498804484324196362 + +# chance is 1 in x range, so 1 in 20 range would give 5% chance (for add candy) +ADD_CANDY_REACTION_CHANCE = 20  # 5% +ADD_CANDY_EXISTING_REACTION_CHANCE = 10  # 10% +ADD_SKULL_REACTION_CHANCE = 50  # 2% +ADD_SKULL_EXISTING_REACTION_CHANCE = 20  # 5% +  class CandyCollection:      def __init__(self, bot): @@ -19,43 +27,40 @@ class CandyCollection:              userid = userinfo['userid']              self.get_candyinfo[userid] = userinfo -    HACKTOBER_CHANNEL_ID = 498804484324196362 -    # chance is 1 in x range, so 1 in 20 range would give 5% chance (for add candy) -    ADD_CANDY_REACTION_CHANCE = 20  # 5% -    ADD_CANDY_EXISTING_REACTION_CHANCE = 10  # 10% -    ADD_SKULL_REACTION_CHANCE = 50  # 2% -    ADD_SKULL_EXISTING_REACTION_CHANCE = 20  # 5% -      async def on_message(self, message): -        """Randomly adds candy or skull to certain messages""" +        """ +        Randomly adds candy or skull to certain messages +        """          # make sure its a human message          if message.author.bot:              return          # ensure it's hacktober channel -        if message.channel.id != self.HACKTOBER_CHANNEL_ID: +        if message.channel.id != HACKTOBER_CHANNEL_ID:              return          # do random check for skull first as it has the lower chance -        if random.randint(1, self.ADD_SKULL_REACTION_CHANCE) == 1: +        if random.randint(1, ADD_SKULL_REACTION_CHANCE) == 1:              d = {"reaction": '\N{SKULL}', "msg_id": message.id, "won": False}              self.msg_reacted.append(d)              return await message.add_reaction('\N{SKULL}')          # check for the candy chance next -        if random.randint(1, self.ADD_CANDY_REACTION_CHANCE) == 1: +        if random.randint(1, ADD_CANDY_REACTION_CHANCE) == 1:              d = {"reaction": '\N{CANDY}', "msg_id": message.id, "won": False}              self.msg_reacted.append(d)              return await message.add_reaction('\N{CANDY}')      async def on_reaction_add(self, reaction, user): -        """Add/remove candies from a person if the reaction satisfies criteria""" +        """ +        Add/remove candies from a person if the reaction satisfies criteria +        """          message = reaction.message          # check to ensure the reactor is human          if user.bot:              return          # check to ensure it is in correct channel -        if message.channel.id != self.HACKTOBER_CHANNEL_ID: +        if message.channel.id != HACKTOBER_CHANNEL_ID:              return          # if its not a candy or skull, and it is one of 10 most recent messages, @@ -94,15 +99,17 @@ class CandyCollection:                  await self.remove_reactions(reaction)      async def reacted_msg_chance(self, message): -        """Randomly add a skull or candy to a message if there is a reaction there already -             (higher probability)""" +        """ +        Randomly add a skull or candy to a message if there is a reaction there already +        (higher probability) +        """ -        if random.randint(1, self.ADD_SKULL_EXISTING_REACTION_CHANCE) == 1: +        if random.randint(1, ADD_SKULL_EXISTING_REACTION_CHANCE) == 1:              d = {"reaction": '\N{SKULL}', "msg_id": message.id, "won": False}              self.msg_reacted.append(d)              return await message.add_reaction('\N{SKULL}') -        if random.randint(1, self.ADD_CANDY_EXISTING_REACTION_CHANCE) == 1: +        if random.randint(1, ADD_CANDY_EXISTING_REACTION_CHANCE) == 1:              d = {"reaction": '\N{CANDY}', "msg_id": message.id, "won": False}              self.msg_reacted.append(d)              return await message.add_reaction('\N{CANDY}') @@ -125,7 +132,9 @@ class CandyCollection:          return ten_recent      async def get_message(self, msg_id): -        """Get the message from it's ID.""" +        """ +        Get the message from it's ID. +        """          try:              o = discord.Object(id=msg_id + 1) @@ -142,11 +151,15 @@ class CandyCollection:              return None      async def hacktober_channel(self): -        """Get #hacktoberbot channel from it's id""" -        return self.bot.get_channel(id=self.HACKTOBER_CHANNEL_ID) +        """ +        Get #hacktoberbot channel from it's id +        """ +        return self.bot.get_channel(id=HACKTOBER_CHANNEL_ID)      async def remove_reactions(self, reaction): -        """Remove all candy/skull reactions""" +        """ +        Remove all candy/skull reactions +        """          try:              async for user in reaction.users(): @@ -156,20 +169,26 @@ class CandyCollection:              pass      async def send_spook_msg(self, author, channel, candies): -        """Send a spooky message""" +        """ +        Send a spooky message +        """          e = discord.Embed(colour=author.colour)          e.set_author(name="Ghosts and Ghouls and Jack o' lanterns at night; "                            f"I took {candies} candies and quickly took flight.")          await channel.send(embed=e)      def save_to_json(self): -        """Save json to the file.""" +        """ +        Save json to the file. +        """          with open(json_location, 'w') as outfile:              json.dump(self.candy_json, outfile)      @commands.command()      async def candy(self, ctx): -        """Get the candy leaderboard and save to json when this is called""" +        """ +        Get the candy leaderboard and save to json when this is called +        """          # use run_in_executor to prevent blocking          thing = functools.partial(self.save_to_json) | 
