Example #1
0
async def handle_list_node(bot: Bot, event: Event, state: T_State):
    sub_command = state["sub_command"]
    if sub_command == 'list':
        detail_type = event.dict().get(f'{event.get_type()}_type')
        if detail_type == 'group':
            group_id = event.dict().get('group_id')
            _res = DBAuth.list(auth_type='group', auth_id=group_id)
            if _res.success():
                node_text = '\n'.join('/'.join(map(str, n))
                                      for n in _res.result)
                msg = f'当前群组权限列表为:\n\n{node_text}'
                await omegaauth.finish(msg)
            else:
                await omegaauth.finish('发生了意外的错误QAQ, 请稍后再试')
        elif detail_type == 'private':
            user_id = event.dict().get('user_id')
            _res = DBAuth.list(auth_type='user', auth_id=user_id)
            if _res.success():
                node_text = '\n'.join('/'.join(map(str, n))
                                      for n in _res.result)
                msg = f'当前用户权限列表为:\n\n{node_text}'
                await omegaauth.finish(msg)
            else:
                await omegaauth.finish('发生了意外的错误QAQ, 请稍后再试')
        else:
            await omegaauth.finish('非授权会话, 操作中止')
Example #2
0
    async def _has_level_or_node(bot: Bot, event: Event, state: T_State) -> bool:
        auth_node = '.'.join(auth_nodes)
        detail_type = event.dict().get(f'{event.get_type()}_type')
        group_id = event.dict().get('group_id')
        user_id = event.dict().get('user_id')

        # level检查部分
        if detail_type != 'group':
            level_checker = False
        else:
            if DBGroup(group_id=group_id).permission_level().result >= level:
                level_checker = True
            else:
                level_checker = False

        # node检查部分
        if detail_type == 'private':
            allow_tag = DBAuth(auth_id=user_id, auth_type='user', auth_node=auth_node).allow_tag().result
            deny_tag = DBAuth(auth_id=user_id, auth_type='user', auth_node=auth_node).deny_tag().result
        elif detail_type == 'group':
            allow_tag = DBAuth(auth_id=group_id, auth_type='group', auth_node=auth_node).allow_tag().result
            deny_tag = DBAuth(auth_id=group_id, auth_type='group', auth_node=auth_node).deny_tag().result
        else:
            allow_tag = 0
            deny_tag = 0

        if allow_tag == 1 and deny_tag == 0:
            return True
        elif allow_tag == -2 and deny_tag == -2:
            return level_checker
        else:
            return False
Example #3
0
async def handle_message(bot: Bot, event: Event, state: T_State):
    try:
        user_name = event.dict().get('sender').get('card')
        if not user_name:
            user_name = event.dict().get('sender').get('nickname')
        time = event.dict().get('time')
        self_id = event.dict().get('self_id')
        post_type = event.get_type()
        detail_type = event.dict().get(f'{event.get_type()}_type')
        sub_type = event.dict().get('sub_type')
        group_id = event.dict().get('group_id')
        user_id = event.dict().get('user_id')
        raw_data = repr(event)
        msg_data = str(event.dict().get('message'))
        new_event = DBHistory(time=time,
                              self_id=self_id,
                              post_type=post_type,
                              detail_type=detail_type)
        new_event.add(sub_type=sub_type,
                      group_id=group_id,
                      user_id=user_id,
                      user_name=user_name,
                      raw_data=raw_data,
                      msg_data=msg_data)
    except Exception as e:
        logger.error(f'Message history recording Failed, error: {repr(e)}')
Example #4
0
 async def _has_command_permission(bot: Bot, event: Event, state: T_State) -> bool:
     detail_type = event.dict().get(f'{event.get_type()}_type')
     group_id = event.dict().get('group_id')
     # 检查当前消息类型
     if detail_type != 'group':
         return False
     else:
         if DBGroup(group_id=group_id).permission_level().result >= level:
             return True
         else:
             return False
Example #5
0
async def parse(bot: Bot, event: Event, state: T_State):
    args = str(event.get_plaintext()).strip().lower().split()
    if not args:
        await setu_import.reject('你似乎没有发送有效的参数呢QAQ, 请重新发送:')
    state[state["_current_key"]] = args[0]
    if state[state["_current_key"]] == '取消':
        await setu_import.finish('操作已取消')
async def RDL(bot: Bot, event: Event):
    args = str(event.get_message()).split()
    if isinstance(event, MessageEvent):
        if args:
            if args[0] == 'random':
                await Random_Gal.send('Senrin折寿中......')
                async with AsyncClient() as Client:
                    mg = await get_random_game(Client=Client, event=event)
                await Random_Gal.finish(Message(mg))
            elif args[0] == 'tag':
                try:
                    tag = args[1]
                except:
                    await Random_Gal.finish(
                        Message(
                            f"[CQ:at,qq={event.user_id}]传入了不正确的参数......\n然后指令坏掉了,Senrin处理了个寂寞"
                        ))
                else:
                    await Random_Gal.send('Senrin折寿中......')
                    async with AsyncClient() as Client:
                        mg = await get_tag_game(Client=Client,
                                                tag=tag,
                                                event=event)
                    await Random_Gal.finish(Message(mg))
            else:
                await Random_Gal.finish(
                    Message(
                        f"[CQ:at,qq={event.user_id}]传入了不正确的参数......\n然后指令坏掉了,Senrin处理了个寂寞"
                    ))
        else:
            await Random_Gal.finish(
                Message(
                    f"[CQ:at,qq={event.user_id}]传入了不正确的参数......\n然后指令坏掉了,Senrin处理了个寂寞"
                ))
Example #7
0
async def setu(bot: Bot, event: Event):
    """随机叫一份涩图,对每个用户有冷却时间"""
    uid = event.get_user_id()
    if not _nlmt.check(uid):
        await bot.send(event, EXCEED_NOTICE, at_sender=True)
        return
    if not _flmt.check(uid):
        await bot.send(event, '您冲得太快了,请稍候再冲', at_sender=True)
        return
    _flmt.start_cd(uid)
    _nlmt.increase(uid)

    # conditions all ok, send a setu.
    try:
        logger.debug('开始从网络爬取图片。')
        pic = await get_web_img()
    except Exception as e:
        logger.error(f"爬取网络图片失败,将从本地选择。({e})")
        pic = get_local_setu()

    try:
        if pic:
            await bot.send(event, pic.cqcode)
    except Exception as e:
        logger.error(f"发送图片{pic.path}失败")
        logger.exception(e)
        try:
            await bot.send(event, '涩图太涩,发不出去勒...')
        except:
            pass
Example #8
0
async def search_handle(bot: Bot, event: Event, state: T_State):

    if event.user_id not in bot.config.master:
        search.finish()
    msg = str(event.get_message())
    if 'CQ:image' in msg:
        state["url"] = msg.split('url=')[-1][:-1]
Example #9
0
async def maimaidx(bot: Bot, event: Event, state: T_State):

    #获取关键词,数量 并处理
    comman = str(event.get_message()).strip().split(' ')
    keyword = ''
    num = 1

    try:
        if len(comman) == 2:
            num = int(comman[1])
            if num > 4:
                await bot.send(message=f'您搁这抽卡呢?')
                return 0
        Rlist = {'红': 2, '紫': 3, '白': 4}  #数组的index
        if comman[0][0] in Rlist.keys():
            rank = Rlist[comman[0][0]]
            lv = comman[0][1:]
            list = dxbot.random_song([lv], num=num, rank=rank)

        else:
            lv = comman[0].split('-')

            list = dxbot.random_song(lv, num=num)
    except:
        print('err')
        return

    msg = ''
    for i in list:
        if msg:
            msg += '\n----------------\n'
        msg += i
    await bot.send(event, message=msg)
Example #10
0
async def _(bot: Bot, event: Event):
    if isinstance(event, PokeNotifyEvent):
        if event.is_tome() and event.user_id != event.self_id:
            await bot.send(event=event,
                           message=a[random.randint(0,
                                                    len(a) - 1)])
    else:
        await poke.finish()
Example #11
0
async def setp_handle(bot: Bot, event: Event, state: T_State):

    comman = str(event.get_message()).split()
    if comman:
        print(comman)
        state["key"] = comman[0]
        if len(comman) > 1:
            state["value"] = comman[1:]
Example #12
0
async def handle_first_receive(bot: Bot, event: Event, state: T_State):
    args = str(event.get_plaintext()).strip().lower().split()
    if not args:
        pass
    elif args and len(args) == 1:
        state['mode'] = args[0]
    else:
        await setu_import.finish('参数错误QAQ')
Example #13
0
async def handle_first_receive(bot: Bot, event: Event, state: T_State):
    args = str(event.get_plaintext()).strip().split()
    if not args:
        pass
    elif args and len(args) == 1:
        state['sub_command'] = args[0]
    else:
        await omegaauth.finish('参数错误QAQ')
Example #14
0
async def _(bot: Bot, event: Event):
    if isinstance(event, PokeNotifyEvent):
        if event.is_tome() and event.user_id != event.self_id:
            l = len(a)
            k = random.randint(0, l - 1)
            while pre == k:
                k = random.randint(0, l - 1)
            last = k
            await bot.send(event=event, message=a[k], at_sender=True)
Example #15
0
async def setp_got(bot: Bot, event: Event, state: T_State):
    try:

        state["value"] = str(event.get_message()).split()

        #录入库
        save_json(state["key"], state["value"])
        await bot.send(event, message=f'ok~')
    except:
        await bot.send(event, message=f'失败了QAQ')
Example #16
0
async def handle_first_receive(bot: Bot, event: Event, state: T_State):
    args = str(event.get_plaintext()).strip().lower().split()
    if not args:
        pass
    elif args and len(args) == 1:
        state['group'] = args[0]
    elif args and len(args) == 2:
        state['group'] = args[0]
        state['announce_text'] = args[1]
    else:
        await announce.finish('参数错误QAQ')
Example #17
0
 def from_payload(cls, payload: NoneBotEvent) -> "Event":
     """
     从 CQHTTP 事件数据构造 `Event` 对象。
     """
     payload_dict = payload.dict()
     if isinstance(payload, MessageEvent):
         payload_dict["message"] = Message([
             MessageSegment(type_=segment.type, data=segment.data)
             for segment in payload.message
         ])
     return cls(payload_dict)
Example #18
0
    async def _has_auth_node(bot: Bot, event: Event, state: T_State) -> bool:
        auth_node = '.'.join(auth_nodes)
        detail_type = event.dict().get(f'{event.get_type()}_type')
        group_id = event.dict().get('group_id')
        user_id = event.dict().get('user_id')
        # 检查当前消息类型
        if detail_type == 'private':
            allow_tag = DBAuth(auth_id=user_id, auth_type='user', auth_node=auth_node).allow_tag().result
            deny_tag = DBAuth(auth_id=user_id, auth_type='user', auth_node=auth_node).deny_tag().result
        elif detail_type == 'group' or detail_type == 'group_upload':
            allow_tag = DBAuth(auth_id=group_id, auth_type='group', auth_node=auth_node).allow_tag().result
            deny_tag = DBAuth(auth_id=group_id, auth_type='group', auth_node=auth_node).deny_tag().result
        else:
            allow_tag = 0
            deny_tag = 0

        if allow_tag == 1 and deny_tag == 0:
            return True
        else:
            return False
Example #19
0
async def _Reply_SearchPic(bot: Bot, event: Event):
    send_except_msg = (Message(
        f"[CQ:at,qq={event.get_user_id()}]你确定你给我的是一张图片?\n"
        "若持续出此报错,请按照以下步骤搜图:\n"
        '1.将图片逐张转发至Senrin\n'
        '2.回复需要搜索的图片并附上“搜图”'))
    if '搜图' in str(event.get_message()):
        search_list = []
        result_list = []
        send_msg_result = '搜图结果如下:\n'
        for _msg in event.reply.message:  # type:ignore    初步处理数据
            if _msg.type == 'image':
                search_list.append(_msg.data['url'])
            else:
                pass
        if search_list:  # 有图
            await Reply_SearchPic.send('ちょっと待ってください......')
            for numst in range(len(search_list)):
                msg_url = search_list[numst]
                # 获取搜索结果
                try:
                    search_result = await SauceNAO(numst=numst,
                                                   pic_url=msg_url)
                except:
                    await Reply_SearchPic.finish(
                        '似乎出现了蜜汁错误......图搜到了但没完全搜到......')
                    return
                if search_result:
                    result_list.append(search_result)
            if result_list:  # 存在搜索结果
                for result_send in result_list:
                    _add_result = (f"第{result_send[0]}张图片:\n"
                                   f"{result_send[1]}\n")
                    send_msg_result += _add_result
                if isinstance(event, GroupMessageEvent):
                    await Reply_SearchPic.send(
                        Message(
                            f'[CQ:at,qq={event.get_user_id()}] Senrin从SauceNAO获得了搜图结果,并将以私聊方式发送!\nPS:若持续未收到图片,请添加Senrin为好友!'
                        ))
                    await bot.send_private_msg(
                        user_id=event.user_id,
                        message=Message(send_msg_result))
                elif isinstance(event, PrivateMessageEvent):
                    await Reply_SearchPic.send(
                        Message('好耶!找到图咯!\n' + send_msg_result))
            else:  # 不存在搜索结果
                await Reply_SearchPic.send(
                    Message(
                        f'[CQ:at,qq={event.get_user_id()}] 暂无相关信息,Senrin搜了个寂寞')
                )
        else:  # 无图
            await Reply_SearchPic.finish(send_except_msg)
    await Reply_SearchPic.finish()
Example #20
0
async def search_got(bot: Bot, event: Event, state: T_State):

    if event.user_id not in bot.config.master:
        await search.finish("不是Master不行的哦~")

    msg = str(event.get_message())

    if 'CQ:image' in msg:
        state["url"] = msg.split('url=')[-1][:-1]

    data = await tool.get_image_data(state["url"])
    await search.finish(data)
Example #21
0
async def _regex_setu_random(bot: Bot, event: Event, state: dict):
    global last_time_Rrandom
    if isinstance(event, GroupMessageEvent):
        if event.group_id in [
                get_driver().config.GroupList['last'],
                get_driver().config.GroupList['test']
        ]:
            start_time = datetime.datetime.now()  # 取现在时间
            # 用于判定程序是否为初次启动,检测last_time是否被赋值
            if isinstance(last_time_Rrandom, datetime.datetime):
                if (start_time - last_time_Rrandom).seconds <= 5:
                    if str(event.user_id) not in masterList:
                        await regex_setu_random.finish(
                            "我球球你了让Senrin歇一会儿吧......爪巴涩图很累的说......")
                        return
                    else:
                        await regex_setu_random.send("我爪巴爪巴......这就去......")
            handle_msg = (f"[CQ:at,qq={event.user_id}]随机涩图触发\n"
                          "触发方式:regex\n"
                          "图片分级:随机\n"
                          "图片数量:1\n"
                          "Loading......(约3秒钟)")
            await regex_setu_random.send(Message(handle_msg))
            setu = await random_setu(Rmodle='regex', level=None, num=1)
        else:
            setu = None
    elif isinstance(event, PrivateMessageEvent):
        if str(event.user_id) in masterList:
            handle_msg = ("随机涩图触发\n"
                          "触发方式:regex\n"
                          "图片分级:随机\n"
                          "图片数量:1\n"
                          "Loading......(约3秒钟)")
            await regex_setu_random.send(Message(handle_msg))
            setu = await random_setu(Rmodle='regex', level=None, num=1)
        else:
            await regex_setu_random.finish("看尼玛涩图给爷爬!")
            setu = None
    else:
        setu = None
    if setu:
        handle_msg = 'Active!!!'
        await regex_setu_random.send(Message(handle_msg))
        for msg in setu:
            await asyncio.sleep(0.1)
            await regex_setu_random.send(Message(msg))
    download_urls.clear()
    if event.get_user_id() not in masterList and resetTime == True:
        last_time_Rrandom = datetime.datetime.now()
    await regex_setu_random.finish()
Example #22
0
async def setp_got(bot: Bot, event: Event, state: T_State):
    try:

        comman = str(event.get_message()).split()
        state["key"] = comman[0]
        if ",url=" in state["key"]:
            state["key"] = state["key"].split(",url=")[0]

        if len(comman) > 1:

            state["value"] = comman[1:]
            #录入库
            save_json(state["key"], state["value"])
            await bot.send(event, message=f'ok~')
    except:
        await bot.send(event, message=f'失败了QAQ')
Example #23
0
async def add(bot: Bot, event: Event, state: T_State):
    '''
    >> 添加关注 bid nickname
    '''
    user_id = event.user_id
    msg = str(event.get_message()).split()
    if(user_id in master):
        if msg[0].isdigit:
            id = msg[0]
            nickname = msg[1]
        elif msg[1].isdigit:
            id = msg[1]
            nickname = msg[0]
        else:
            await bot.send(event, message = f'添加失败勒')
            return
        to_add(id, nickname)
        with open(path, 'w+') as f :
            tojson = json.dumps(liveroom,sort_keys=True, ensure_ascii=False, indent=4,separators=(',',': '))
            f.write(tojson)
        await bot.send(event, message = f'添加成功~')
Example #24
0
async def handle_plugin_cooldown(matcher: Matcher, bot: Bot, event: Event,
                                 state: T_State):
    group_id = event.dict().get('group_id')
    user_id = event.dict().get('user_id')

    global_config = get_driver().config
    superusers = global_config.superusers

    # 忽略超级用户
    if user_id in [int(x) for x in superusers]:
        return

    # 只处理message事件
    if matcher.type != 'message':
        return

    # 处理插件冷却
    # 冷却处理优先级: 全局>插件>群组>用户
    # 冷却限制优先级: 用户>群组>插件>全局
    plugin_name = matcher.module
    plugin = get_plugin(plugin_name)
    plugin_cool_down_list = plugin.export.get('cool_down')

    # 只处理声明了__plugin_cool_down__的插件
    if not plugin_cool_down_list:
        return

    # 检查用户或群组是否有skip_cd权限, 跳过冷却检查
    skip_cd_auth_node = f'{plugin_name}.{PluginCoolDown.skip_auth_node}'
    user_auth_res = DBAuth(auth_id=user_id,
                           auth_type='user',
                           auth_node=skip_cd_auth_node)
    if user_auth_res.allow_tag().result == 1 and user_auth_res.deny_tag(
    ).result == 0:
        return

    group_auth_res = DBAuth(auth_id=group_id,
                            auth_type='group',
                            auth_node=skip_cd_auth_node)
    if group_auth_res.allow_tag().result == 1 and group_auth_res.deny_tag(
    ).result == 0:
        return

    # 检查冷却情况
    global_check = DBCoolDownEvent.check_global_cool_down_event()
    plugin_check = DBCoolDownEvent.check_plugin_cool_down_event(
        plugin=plugin_name)
    group_check = DBCoolDownEvent.check_group_cool_down_event(
        plugin=plugin_name, group_id=group_id)
    user_check = DBCoolDownEvent.check_user_cool_down_event(plugin=plugin_name,
                                                            user_id=user_id)

    # 处理全局冷却
    # 先检查是否已有全局冷却
    if plugin_check.result == 1 or group_check.result == 1 or user_check.result == 1:
        pass
    elif global_check.result == 1:
        await bot.send(
            event=event,
            message=Message(
                f'{MessageSegment.at(user_id=user_id)}命令冷却中!\n{global_check.info}'
            ))
        raise IgnoredException('全局命令冷却中')
    elif global_check.result == 0:
        pass
    else:
        logger.error(
            f'全局冷却事件异常! group: {group_id}, user: {user_id}, error: {global_check.info}'
        )
    # 然后再处理命令中存在的全局冷却
    for time in [
            x.cool_down_time for x in plugin_cool_down_list
            if x.type == 'global'
    ]:
        # 若有插件、群组或用户冷却则交由其处理
        if plugin_check.result == 1 or group_check.result == 1 or user_check.result == 1:
            break

        res = check_and_set_global_cool_down(minutes=time)
        if res.result == 1:
            await bot.send(
                event=event,
                message=Message(
                    f'{MessageSegment.at(user_id=user_id)}命令冷却中!\n{res.info}'))
            raise IgnoredException('全局命令冷却中')
        elif res.result == 0:
            pass
        else:
            logger.error(
                f'全局冷却事件异常! group: {group_id}, user: {user_id}, error: {res.info}'
            )

    # 处理插件冷却
    for time in [
            x.cool_down_time for x in plugin_cool_down_list
            if x.type == 'plugin'
    ]:
        # 若有群组或用户冷却则交由其处理
        if group_check.result == 1 or user_check.result == 1:
            break

        res = check_and_set_plugin_cool_down(minutes=time, plugin=plugin_name)
        if res.result == 1:
            await bot.send(
                event=event,
                message=Message(
                    f'{MessageSegment.at(user_id=user_id)}命令冷却中!\n{res.info}'))
            raise IgnoredException('插件命令冷却中')
        elif res.result == 0:
            pass
        else:
            logger.error(
                f'插件冷却事件异常! group: {group_id}, user: {user_id}, plugin: {plugin_name}, error: {res.info}'
            )

    # 处理群组冷却
    for time in [
            x.cool_down_time for x in plugin_cool_down_list
            if x.type == 'group'
    ]:
        if not group_id:
            break

        # 若有用户冷却则交由其处理
        if user_check.result == 1:
            break

        res = check_and_set_group_cool_down(minutes=time,
                                            plugin=plugin_name,
                                            group_id=group_id)
        if res.result == 1:
            await bot.send(
                event=event,
                message=Message(
                    f'{MessageSegment.at(user_id=user_id)}命令冷却中!\n{res.info}'))
            raise IgnoredException('群组命令冷却中')
        elif res.result == 0:
            pass
        else:
            logger.error(
                f'群组冷却事件异常! group: {group_id}, user: {user_id}, plugin: {plugin_name}, error: {res.info}'
            )

    # 处理用户冷却
    for time in [
            x.cool_down_time for x in plugin_cool_down_list if x.type == 'user'
    ]:
        if not user_id:
            break

        res = check_and_set_user_cool_down(minutes=time,
                                           plugin=plugin_name,
                                           user_id=user_id)
        if res.result == 1:
            await bot.send(
                event=event,
                message=Message(
                    f'{MessageSegment.at(user_id=user_id)}命令冷却中!\n{res.info}'))
            raise IgnoredException('用户命令冷却中')
        elif res.result == 0:
            pass
        else:
            logger.error(
                f'用户冷却事件异常! group: {group_id}, user: {user_id}, plugin: {plugin_name}, error: {res.info}'
            )
Example #25
0
async def _command_setu(bot: Bot, event: Event, state: dict):
    global last_time_command

    def check_tpye(arg):  # 检查命令格式
        if arg:
            if arg[0] == 'random':
                try:
                    level = int(arg[1])
                    num = int(arg[2])
                except:
                    check_type = False
                else:
                    if level in [1, 2, 0] and num <= 10:
                        check_type = True
                    else:
                        check_type = False
            elif arg[0] == 'search':
                try:
                    num = int(arg[2])
                except:
                    check_type = False
                else:
                    check_type = True if num <= 10 else False
            else:
                check_type = False
        else:
            check_type = False
        return check_type

    if isinstance(event, GroupMessageEvent):
        if event.group_id in [
                get_driver().config.GroupList['last'],
                get_driver().config.GroupList['test']
        ]:
            arg = str(event.get_message()).split()
            checked_type = check_tpye(arg)
            if checked_type == False:
                setu = None
                await command_setu.finish(
                    Message(
                        f"[CQ:at,qq={event.user_id}]传入了不正确的参数......\n然后指令坏掉了,Senrin处理了个寂寞"
                    ))
            else:
                if arg[0] == 'random':
                    level, num = arg[1], int(arg[2])
                    start_time = datetime.datetime.now()  # 取现在时间
                    # 用于判定程序是否为初次启动,检测last_time是否被赋值
                    if isinstance(last_time_command, datetime.datetime):
                        if (start_time - last_time_command).seconds <= 60:
                            if str(event.user_id) not in masterList:
                                await command_setu.finish(
                                    "我球球你了让Senrin歇一会儿吧......爪巴涩图很累的说......")
                                return
                            else:
                                await command_setu.send("我爪巴爪巴......这就去......")
                    level_zh = level_zh_dic[str(level)]
                    handle_msg = (f"[CQ:at,qq={event.user_id}]随机涩图触发\n"
                                  "触发方式:command\n"
                                  f"图片分级:{level_zh}\n"
                                  f"图片数量:{num}\n"
                                  "Loading......(约15秒钟)")
                    await command_setu.send(Message(handle_msg))
                    setu = await random_setu(Rmodle='random',
                                             level=level,
                                             num=num)
                elif arg[0] == 'search':
                    keywords, num = arg[1], int(arg[2])
                    start_time = datetime.datetime.now()  # 取现在时间
                    # 用于判定程序是否为初次启动,检测last_time是否被赋值
                    if isinstance(last_time_command, datetime.datetime):
                        if (start_time - last_time_command).seconds <= 60:
                            if str(event.user_id) not in masterList:
                                await command_setu.finish(
                                    "我球球你了让Senrin歇一会儿吧......爪巴涩图很累的说......")
                                return
                            else:
                                await command_setu.send("我爪巴爪巴......这就去......")
                    handle_msg = ("定向涩图触发\n"
                                  "触发方式:command\n"
                                  f"关键词:{keywords}\n"
                                  f"图片数量:{num}\n"
                                  "Loading......(约15秒钟)")
                    await command_setu.send(Message(handle_msg))
                    setu = await search_setu(Keywords=keywords, num=num)
                else:
                    setu = None
        else:
            setu = None
    elif isinstance(event, PrivateMessageEvent):
        if str(event.user_id) in masterList:
            arg = str(event.get_message()).split()
            checked_type = check_tpye(arg)
            if checked_type == False:
                setu = None
                await command_setu.finish(
                    "传入了不正确的参数......\n然后指令坏掉了,Senrin处理了个寂寞")
            else:
                if arg[0] == 'random':
                    level, num = arg[1], arg[2]
                    level_zh = level_zh_dic[str(level)]
                    handle_msg = (f"[CQ:at,qq={event.user_id}]随机涩图触发\n"
                                  "触发方式:command\n"
                                  f"图片分级:{level_zh}\n"
                                  f"图片数量:{num}\n"
                                  "Loading......(约15秒钟)")
                    await command_setu.send(Message(handle_msg))
                    setu = await random_setu(Rmodle='random',
                                             level=level,
                                             num=num)
                elif arg[0] == 'search':
                    keywords, num = arg[1], int(arg[2])
                    handle_msg = ("定向涩图触发\n"
                                  "触发方式:command\n"
                                  f"关键词:{keywords}\n"
                                  f"图片数量:{num}\n"
                                  "Loading......(约15秒钟)")
                    await command_setu.send(Message(handle_msg))
                    setu = await search_setu(Keywords=keywords, num=num)
                else:
                    setu = None
        else:
            setu = None
    else:
        setu = None
    if setu:
        await command_setu.send('Active!!!')
        for msg in setu:
            await command_setu.send(Message(msg))
            await asyncio.sleep(0.1)
    if event.get_user_id() not in masterList and resetTime == True:
        last_time_command = datetime.datetime.now()
    download_urls.clear()
    await command_setu.finish()
Example #26
0
async def _regex_setu_search(bot: Bot, event: Event, state: dict):
    global last_time_command

    async def regex_march():
        if re.match(r'^[来整][几.\S*][张份个]\S*[色涩黄]图$', str(event.get_message())):
            key = re.findall(r'^[来整][几.\S*][张份个](\S*?)[色涩黄]图$',
                             str(event.get_message()))[0]
            num = re.findall(r'^[来整]([几.\S*]?)[张份个]\S*[色涩黄]图$',
                             str(event.get_message()))[0]
            if num == '几':
                num = random.randint(1, 10)
            elif num in word_to_int:
                num = word_to_int[num]
            else:
                await regex_setu_search.finish(
                    "呐很抱歉呢......Senrin这里只有十张以内的涩图的说......")
        else:
            key = re.findall(r'^[来整]点(\S*?)[色涩黄]图$',
                             str(event.get_message()))[0]  # 获取关键词
            num = 1
        return (key, num)

    if isinstance(event, GroupMessageEvent):
        if event.group_id in [
                get_driver().config.GroupList['last'],
                get_driver().config.GroupList['test']
        ]:
            start_time = datetime.datetime.now()  # 取现在时间
            # 用于判定程序是否为初次启动,检测last_time是否被赋值
            if isinstance(last_time_command, datetime.datetime):
                if (start_time - last_time_command).seconds <= 60:
                    if str(event.user_id) not in masterList:
                        await regex_setu_search.finish(
                            "我球球你了让Senrin歇一会儿吧......爪巴涩图很累的说......")
                        return
                    else:
                        await regex_setu_search.send("我爪巴爪巴......这就去......")
            result_march = await regex_march()
            key, num = result_march[0], result_march[1]
            handle_msg = (f"[CQ:at,qq={event.user_id}]随机涩图触发\n"
                          "触发方式:regex\n"
                          f"关键词:{key}\n"
                          f"图片数量:{num}\n"
                          "Loading......(约10秒钟)")
            await regex_setu_search.send(Message(handle_msg))
            setu = await search_setu(Keywords=key, num=num)
        else:
            setu = None
    elif isinstance(event, PrivateMessageEvent):
        if str(event.user_id) in masterList:
            result_march = await regex_march()
            key, num = result_march[0], result_march[1]
            handle_msg = ("定向涩图触发\n"
                          "触发方式:regex\n"
                          f"关键词:{key}\n"
                          f"图片数量:{num}\n"
                          "Loading......(约10秒钟)")
            await regex_setu_search.send(Message(handle_msg))
            setu = await search_setu(Keywords=key, num=num)
        else:
            await regex_setu_search.finish("看尼玛涩图给爷爬!")
            setu = None
    else:
        setu = None
    if setu:
        await regex_setu_search.send('Active!!!')
        for msg in setu:
            await asyncio.sleep(0.1)
            await regex_setu_random.send(Message(msg))
    download_urls.clear()
    if event.get_user_id() not in masterList and resetTime == True:
        last_time_command = datetime.datetime.now()
    await regex_setu_search.finish()