blob: 761e905912af296cf5154e12872936252cb85ae5 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
import logging
import random
from json import load
from pathlib import Path
import discord
from discord.ext import commands
from bot.bot import Bot
from bot.constants import Channels, Colours, Month
from bot.utils.decorators import seasonal_task
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: Bot):
self.bot = bot
self.facts = self.load_json()
self.daily_fact_task = self.bot.loop.create_task(self.send_egg_fact_daily())
@staticmethod
def load_json() -> dict:
"""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:
return load(f)
@seasonal_task(Month.APRIL)
async def send_egg_fact_daily(self) -> None:
"""A background task that sends an easter egg fact in the event channel everyday."""
await self.bot.wait_until_guild_available()
channel = self.bot.get_channel(Channels.community_bot_commands)
await channel.send(embed=self.make_embed())
@commands.command(name='eggfact', aliases=['fact'])
async def easter_facts(self, ctx: commands.Context) -> None:
"""Get easter egg facts."""
embed = self.make_embed()
await ctx.send(embed=embed)
def make_embed(self) -> discord.Embed:
"""Makes a nice embed for the message to be sent."""
return discord.Embed(
colour=Colours.soft_red,
title="Easter Egg Fact",
description=random.choice(self.facts)
)
def setup(bot: Bot) -> None:
"""Easter Egg facts cog load."""
bot.add_cog(EasterFacts(bot))
|