Exemple #1
0
async def process_msg(bot: Bot, event: Event, enable: bool):
    try:
        args = event.get_plaintext().strip()
        if not args:
            msg = _GROUP_USAGE if isinstance(
                event, GroupMessageEvent) else _PRIVATE_USAGE
            raise ValueError('未找到参数。' + msg)
        args = args.split(' ')

        # 从群组内调用
        if isinstance(event, GroupMessageEvent):
            succeed = set()
            failed = set()
            group_id = event.group_id
            services = args
            for sv_name in services:
                sv = Service.get_loaded_services().get(sv_name)
                if sv:
                    await set_sv(sv, group_id, enable)
                    succeed.add(sv_name)
                else:
                    failed.add(sv_name)
            msg = ''
            if succeed:
                msg += '服务' + '、'.join([str(i) for i in succeed]) + \
                       '已启用' if enable else '已禁用' + '\n'
            if failed:
                msg += '不存在这些服务:' + '、'.join([str(i) for i in failed])
            await bot.send(event, msg)

        # 私聊调用,需要superuser权限
        elif isinstance(event, PrivateMessageEvent):
            if not is_superuser(event.get_user_id()):
                return
            parser = ArgParserPrivate(enable, args)
            await parser.run()
            msg = ''
            if parser.succeed:
                msg += '执行完毕。\n'
            if parser.failed:
                msg += '以下群组发生错误:\n'
                msg += '\n'.join(
                    [f'  {name}: {msg}\n'
                     for name, msg in parser.failed]) + '\n'
                msg += _PRIVATE_USAGE
            await bot.send(event, msg)

    except ValueError as e:
        await bot.send(event, str(e))
Exemple #2
0
 async def run(self):
     for name, groups in self.parse_result.items():
         sv = Service.get_loaded_services().get(name)
         if not sv:
             self.failed.append((name, '不存在该服务'))
             continue
         if not groups:
             self.failed.append((name, '缺少待操作的群组'))
             continue
         for group in groups:
             try:
                 await set_sv(sv, group, self.enable)
                 self.succeed.append((name, ''))
             except Exception as e:
                 self.failed.append((name, f'发送错误:{str(e)}'))
Exemple #3
0
async def ls_sv(bot: Bot, event: Event):
    if isinstance(event, GroupMessageEvent):
        all_sv = Service.get_loaded_services()
        enabled_sv = [
            sv_name for sv_name, sv in all_sv.items()
            if sv.visible and sv.check_enabled_in_group(event.group_id)
        ]
        disabled_sv = [
            sv_name for sv_name, sv in all_sv.items()
            if sv.visible and not sv.check_enabled_in_group(event.group_id)
        ]
        msg = ''
        if enabled_sv:
            msg += '已启用服务:\n    · ' + '\n    · '.join(enabled_sv) + '\n'
        if disabled_sv:
            msg += '已禁用服务:\n    · ' + '\n    · '.join(disabled_sv)
        await bot.send(event, msg)
    else:
        return