blob: c5009d6bed7b0b61d7e5e4e8c0b1a2046d6f5adc (
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
  | 
import contextlib
import datetime
import importlib
import inspect
import logging
import pkgutil
from pathlib import Path
from typing import List, Optional, Tuple, Type, Union
import discord
from discord.ext import commands
from bot.bot import bot
from bot.constants import Channels, Client, Roles
from bot.decorators import with_role
log = logging.getLogger(__name__)
ICON_BASE_URL = "https://raw.githubusercontent.com/python-discord/branding/master"
def get_seasons() -> List[str]:
    """Returns all the Season objects located in /bot/seasons/."""
    seasons = []
    for module in pkgutil.iter_modules([Path("bot/seasons")]):
        if module.ispkg:
            seasons.append(module.name)
    return seasons
class SeasonBase:
    """Base class for Seasonal classes."""
    name: Optional[str] = "evergreen"
    bot_name: str = "SeasonalBot"
    start_date: Optional[str] = None
    end_date: Optional[str] = None
    should_announce: bool = False
    colour: Optional[int] = None
    icon: Tuple[str, ...] = ("/logos/logo_full/logo_full.png",)
    bot_icon: Optional[str] = None
    date_format: str = "%d/%m/%Y"
    index: int = 0
 
  |