async def set_pool(bot: KokkoroBot, ev: EventInterface): if not priv.check_priv(ev.get_author(), priv.ADMIN): await bot.kkr_send(ev, '只有群管理才能切换卡池', at_sender=True) return name = util.normalize_str(ev.get_param().remain) if not name: await bot.kkr_send(ev, POOL_NAME_TIP) return elif name in ('国', '国服', 'cn'): await bot.kkr_send(ev, '请选择以下卡池\n> 选择卡池 b服\n> 选择卡池 台服', at_sender=True) return elif name in ('b', 'b服', 'bl', 'bilibili'): name = 'BL' elif name in ('台', '台服', 'tw', 'sonet'): name = 'TW' elif name in ('日', '日服', 'jp', 'cy', 'cygames'): name = 'JP' elif name in ('混', '混合', 'mix'): name = 'MIX' else: await bot.kkr_send(ev, f'未知服务器地区 {POOL_NAME_TIP}', at_sender=True) return gid = ev.get_group_id() _group_pool[gid] = name dump_pool_config() await bot.kkr_send(ev, f'卡池已切换为{name}池', at_sender=True)
def add(self, keyword: str, sf): keyword = util.normalize_str(keyword) if keyword in self.allkw: other = self.allkw[keyword] kokkoro.logger.warning(f'Failed to add keyword trigger `{keyword}`: Conflicts between {sf.__name__} and {other.__name__}') return self.allkw[keyword] = sf kokkoro.logger.debug(f'Succeed to add keyword trigger `{keyword}`')
def server_code(x:str) -> int: x = util.normalize_str(x) if x in ('jp', '日', '日服'): return BattleMaster.SERVER_JP elif x in ('tw', '台', '台服'): return BattleMaster.SERVER_TW elif x in ('cn', '国', '国服', 'b', 'b服'): return BattleMaster.SERVER_CN raise ParseError('未知服务器地区 请用jp/tw/cn')
def update(self): importlib.reload(_pcr_data) self._roster.clear() for idx, names in _pcr_data.CHARA_NAME.items(): for n in names: n = util.normalize_str(n) if n not in self._roster: self._roster[n] = idx else: logger.warning(f'priconne.chara.Roster: 出现重名{n}于id{idx}与id{self._roster[n]}') self._all_name_list = self._roster.keys()
def parse_team(self, namestr): """@return: List[ids], unknown_namestr""" namestr = util.normalize_str(namestr) team = [] unknown = [] while namestr: item = self._roster.longest_prefix(namestr) if not item: unknown.append(namestr[0]) namestr = namestr[1:].lstrip() else: team.append(item.value) namestr = namestr[len(item.key):].lstrip() return team, ''.join(unknown)
def get_id(self, name): name = util.normalize_str(name) return self._roster[name] if name in self._roster else UNKNOWN
def __init__(self, msg:str): self.plain_text = util.remove_mention_me(msg) self.norm_text = util.normalize_str(self.plain_text)
def round_code(x:str) -> int: x = util.normalize_str(x) if _rex_rcode.match(x): return int(x) raise ParseError('周目数不合法 应为不大于999的非负整数')
def boss_code(x:str) -> int: x = util.normalize_str(x) if m := _rex1_bcode.match(x): return int(m.group(1))
def damage_int(x:str) -> int: x = util.normalize_str(x) if m := _rex_dint.match(x): x = int(m.group(1)) * _unit_rate[m.group(2).lower()] if x < 100000000: return x