aboutsummaryrefslogtreecommitdiffstats
path: root/bot/seasons/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'bot/seasons/__init__.py')
-rw-r--r--bot/seasons/__init__.py152
1 files changed, 129 insertions, 23 deletions
diff --git a/bot/seasons/__init__.py b/bot/seasons/__init__.py
index 13fec76b..f9c89279 100644
--- a/bot/seasons/__init__.py
+++ b/bot/seasons/__init__.py
@@ -6,11 +6,139 @@ from typing import List, Optional, Set, Type
from bot.constants import Colours, Month
-__all__ = ("SeasonBase", "get_seasons", "get_extensions", "get_current_season", "get_season")
+__all__ = (
+ "SeasonBase",
+ "Christmas",
+ "Easter",
+ "Halloween",
+ "Pride",
+ "Valentines",
+ "Wildcard",
+ "get_seasons",
+ "get_extensions",
+ "get_current_season",
+ "get_season",
+)
log = logging.getLogger(__name__)
+class SeasonBase:
+ """
+ Base for Seasonal classes.
+
+ This serves as the off-season fallback for when no specific
+ seasons are active.
+
+ Seasons are 'registered' simply by inheriting from `SeasonBase`.
+ We discover them by calling `__subclasses__`.
+ """
+
+ season_name: str = "Evergreen"
+ bot_name: str = "SeasonalBot"
+
+ colour: str = Colours.soft_green
+ description: str = "The default season!"
+
+ branding_path: str = "seasonal/evergreen"
+
+ months: Set[Month] = set(Month)
+
+
+class Christmas(SeasonBase):
+ """Branding for december."""
+
+ season_name = "Festive season"
+ bot_name = "Merrybot"
+
+ colour = Colours.soft_red
+ description = (
+ "The time is here to get into the festive spirit! No matter who you are, where you are, "
+ "or what beliefs you may follow, we hope every one of you enjoy this festive season!"
+ )
+
+ branding_path = "seasonal/christmas"
+
+ months = {Month.december}
+
+
+class Easter(SeasonBase):
+ """Branding for april."""
+
+ season_name = "Easter"
+ bot_name = "BunnyBot"
+
+ colour = Colours.bright_green
+ description = (
+ "Bunny here, bunny there, bunny everywhere! Here at Python Discord, we celebrate "
+ "our version of Easter during the entire month of April."
+ )
+
+ branding_path = "seasonal/easter"
+
+ months = {Month.april}
+
+
+class Halloween(SeasonBase):
+ """Branding for october."""
+
+ season_name = "Halloween"
+ bot_name = "NeonBot"
+
+ colour = Colours.orange
+ description = "Trick or treat?!"
+
+ branding_path = "seasonal/halloween"
+
+ months = {Month.october}
+
+
+class Pride(SeasonBase):
+ """Branding for june."""
+
+ season_name = "Pride"
+ bot_name = "ProudBot"
+
+ colour = Colours.pink
+ description = (
+ "The month of June is a special month for us at Python Discord. It is very important to us "
+ "that everyone feels welcome here, no matter their origin, identity or sexuality. During the "
+ "month of June, while some of you are participating in Pride festivals across the world, "
+ "we will be celebrating individuality and commemorating the history and challenges "
+ "of the LGBTQ+ community with a Pride event of our own!"
+ )
+
+ branding_path = "seasonal/pride"
+
+ months = {Month.june}
+
+
+class Valentines(SeasonBase):
+ """Branding for february."""
+
+ season_name = "Valentines"
+ bot_name = "TenderBot"
+
+ colour = Colours.pink
+ description = "Love is in the air!"
+
+ branding_path = "seasonal/valentines"
+
+ months = {Month.february}
+
+
+class Wildcard(SeasonBase):
+ """Branding for august."""
+
+ season_name = "Wildcard"
+ bot_name = "RetroBot"
+
+ colour = Colours.purple
+ description = "A season full of surprises!"
+
+ months = {Month.august}
+
+
def get_seasons() -> List[str]:
"""Returns all the Season objects located in /bot/seasons/."""
seasons = []
@@ -44,28 +172,6 @@ def get_extensions() -> List[str]:
return extensions
-class SeasonBase:
- """
- Base for Seasonal classes.
-
- This serves as the off-season fallback for when no specific
- seasons are active.
-
- Seasons are 'registered' simply by inheriting from `SeasonBase`.
- We discover them by calling `__subclasses__`.
- """
-
- season_name: str = "Evergreen"
- bot_name: str = "SeasonalBot"
-
- colour: str = Colours.soft_green
- description: str = "The default season!"
-
- branding_path: str = "seasonal/evergreen"
-
- months: Set[Month] = set(Month)
-
-
def get_current_season() -> Type[SeasonBase]:
"""Give active season, based on current UTC month."""
current_month = Month(datetime.utcnow().month)