diff options
Diffstat (limited to 'bot/seasons')
| -rw-r--r-- | bot/seasons/easter/egg_facts.py | 64 |
1 files changed, 64 insertions, 0 deletions
diff --git a/bot/seasons/easter/egg_facts.py b/bot/seasons/easter/egg_facts.py new file mode 100644 index 00000000..1a19e48f --- /dev/null +++ b/bot/seasons/easter/egg_facts.py @@ -0,0 +1,64 @@ +import asyncio +import logging +import random +from json import load +from pathlib import Path + +import discord +from discord.ext import commands + +from bot.constants import Channels +from bot.constants import Colours + + +log = logging.getLogger(__name__) + + +class EasterFacts(commands.Cog): + """ + A cog contains a command that will return an easter egg fact when called. + + It also contains a background task which sends an easter egg fact in the event channel everyday. + """ + + def __init__(self, bot): + self.bot = bot + self.facts = self.load_json() + + @staticmethod + def load_json(): + """Load a list of easter egg facts from the resource JSON file.""" + p = Path('bot', 'resources', 'easter', 'easter_egg_facts.json') + with p.open(encoding="utf8") as f: + facts = load(f) + return facts + + async def send_egg_fact_daily(self): + """A background task that sends an easter egg fact in the event channel everyday.""" + channel = Channels.seasonalbot_chat + while True: + embed = self.make_embed() + await channel.send(embed=embed) + await asyncio.sleep(24*60*60) + + @commands.command(name='eggfact', aliases=['fact']) + async def easter_facts(self, ctx): + """Get easter egg facts.""" + embed = self.make_embed() + await ctx.send(embed=embed) + + def make_embed(self): + """Makes a nice embed for the message to be sent.""" + embed = discord.Embed() + embed.colour = Colours.soft_red + embed.title = 'Easter Egg Fact' + random_fact = random.choice(self.facts) + embed.description = random_fact + return embed + + +def setup(bot): + """Easter Egg facts loaded.""" + bot.loop.create_task(EasterFacts(bot).send_egg_fact_daily()) + bot.add_cog(EasterFacts(bot)) + log.info("EasterFacts cog loaded") |