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)
async def set_bc_tag(bot, ev): if not priv.check_priv(ev.get_author(), priv.ADMIN): await bot.kkr_send(ev, f'只有管理员才可以修改推送频道标签 0x0') return gid = ev.get_group_id() new_tags = ev.get_param().remain if new_tags in ['', None]: await bot.kkr_send(ev, f'请输入服务 <{self.name}> 的推送频道的标签\n多个标签请以空格分隔') return new_tags = new_tags.split(' ') self.set_broadcast_tag(gid, new_tags) await bot.kkr_send(ev, f'服务 <{self.name}> 的推送频道的标签成功更新为 {new_tags}')
async def handle_message(bot, ev): kokkoro.logger.debug(f'Receive message:{ev.get_content()}') if ev.get_content() in [None, ""]: return # ignore to_me = preprocess_message(ev) kokkoro.logger.debug(f'Searching for Message Handler...') for t in trigger.chain: sf = t.find_handler(ev) if sf: trigger_name = t.__class__.__name__ break if not sf: kokkoro.logger.debug(f'Message "{ev.get_id()}" triggered nothing') return # triggered nothing. sf.sv.logger.info(f'Message {ev.get_id()} triggered {sf.__name__} by {trigger_name}.') if sf.only_to_me and not to_me: return # not to me, ignore. gid = ev.get_group_id() if not sf.sv.check_enabled(gid): await bot.kkr_send(ev, f'服务 <{sf.sv.name}> 未启用,请呼叫管理员开启服务 0x0 ', at_sender=True) return if priv.check_block_group(gid): # not used now return if not priv.check_priv(ev.get_author(), sf.sv.use_priv): # permission denied await bot.kkr_send(ev, '权限不足 0x0 ', at_sender=True) return try: await sf.func(bot, ev) except Exception as e: sf.sv.logger.error(f'{type(e)} occured when {sf.__name__} handling message {ev.get_id()}.') sf.sv.logger.exception(e)
def _check_admin(ev: EventInterface, tip: str = '') -> bool: if not priv.check_priv(ev.get_author(), priv.ADMIN): raise PermissionDeniedError(ERROR_PERMISSION_DENIED + tip)
def _check_all(self, ev: EventInterface): gid = ev.get_group_id() return self.check_enabled(gid) and not priv.check_block_group(gid) and priv.check_priv(ev, self.use_priv)