add event aliases

pull/1/head
qwewqa 4 years ago
parent 6c8aec3a08
commit d325eab760
  1. 12
      miyu_bot/commands/common/aliases/event.py
  2. 18
      miyu_bot/commands/common/master_asset_manager.py

@ -0,0 +1,12 @@
event_aliases = {
'halloween 2020': 1,
'candy': 2,
'swimsuits 2020': 3,
'maids': 5,
'christmas 2020': 6,
'countdown': 7,
'monster hunter pt1': 9,
'mh1': 9,
'monster hunter pt2': 10,
'mh2': 10,
}

@ -7,6 +7,7 @@ from d4dj_utils.manager.asset_manager import AssetManager
from d4dj_utils.master.master_asset import MasterDict, MasterAsset
from discord.ext import commands
from miyu_bot.commands.common.aliases.event import event_aliases
from miyu_bot.commands.common.fuzzy_matching import FuzzyFilteredMap, romanize
import datetime as dt
@ -23,19 +24,22 @@ class MasterFilterManager:
)
self.events = MasterFilter(
self.manager.event_master,
aliases=event_aliases,
naming_function=lambda e: e.name,
filter_function=lambda e: e.start_datetime < dt.datetime.now(
dt.timezone.utc) + dt.timedelta(hours=12),
filter_function=lambda e: e.start_datetime < dt.datetime.now(dt.timezone.utc) + dt.timedelta(hours=12),
)
self.cards = MasterFilter(
self.manager.card_master,
naming_function=lambda c: f'{c.rarity_id}{c.name} {c.character.full_name_english}',
naming_function=lambda c: c.name,
filter_function=lambda c: c.is_released,
)
class MasterFilter:
def __init__(self, masters: MasterDict, naming_function: Callable[[Any], str], filter_function=lambda _: True,
def __init__(self, masters: MasterDict,
naming_function: Callable[[Any], str],
aliases: Optional[dict] = None,
filter_function=lambda _: True,
fallback_naming_function: Optional[Callable[[Any], str]] = None):
self.masters = masters
self.default_filter = FuzzyFilteredMap(filter_function)
@ -50,6 +54,12 @@ class MasterFilter:
continue
self.default_filter.set_unprocessed(name, master)
self.unrestricted_filter.set_unprocessed(name, master)
if aliases:
for alias, mid in aliases.items():
master = masters[mid]
alias = romanize(alias)
self.default_filter.set_unprocessed(alias, master)
self.unrestricted_filter.set_unprocessed(alias, master)
def get(self, name_or_id: str, ctx: Optional[commands.Context]):
if ctx and ctx.channel.id in no_filter_channels:

Loading…
Cancel
Save