コード例 #1
0
ファイル: local_setu.py プロジェクト: x-dmp/qqbot
async def setu(session: CommandSession):
    print('执行setu' + session.current_arg_text)
    res = ''
    code = 0
    if session.current_arg_text == '':
        src = get_random_src(option.get_option()['sql_dir'])
        res = '恭喜你获得老婆一只!'
        print(src)
        await session.send(MessageSegment.image(src), at_sender=True)
        await session.send(res, at_sender=True)
    else:
        s = session.current_arg_text
        if isnumber(s):
            num = int(session.current_arg_text)
            if num >= 10:
                await session.send('做人不能太贪心哦!', at_sender=True)
                num = 1
            for i in range(num):
                src = get_random_src(option.get_option()['sql_dir'])
                await session.send(MessageSegment.image(src), at_sender=True)
            res = '共计获得老婆' + str(num) + '只!'
            await session.send(res, at_sender=True)
        else:
            try:
                src = get_pic_from_sql(session.current_arg_text)
                res = '恭喜你获得' + session.current_arg_text.strip() + '老婆一只!'
            except Exception:
                src = get_random_src(option.get_option()['sql_dir'])
                res = '网络受到神秘的非物质力量干扰,故老婆丢失,这边给您换了一个'
            await session.send(MessageSegment.image(src), at_sender=True)
            await session.send(res, at_sender=True)
コード例 #2
0
ファイル: jizicibot.py プロジェクト: ZeroAurora/Works
async def twelve():
    logger.info("十二点了!")
    msg: Message = MessageSegment.image(
        "f29b5c32ad65cdbd38f097e6b5e314d4.image")
    for group in ENABLED_GROUPS:
        await bot.send_group_msg(group_id=group, message=msg)
        logger.info("报时已发送至群号 {}".format(group))
コード例 #3
0
ファイル: pixiv.py プロジェクト: kirarasmile/smileBot
async def pixivmale(bot, event):  # 提取pixiv男性向的图片
    data = feedparser.parse(config.rsshub + 'pixiv/ranking/day_male')
    id = random.randrange(0, len(data.entries))
    link = data.entries[id].link
    title = data.entries[id].title
    summary = data.entries[id].summary
    pattern = re.compile(r'src="(.*?)"', re.I)
    img = re.findall(pattern, summary)
    sendimg = MessageSegment.image(img[0])
    await bot.send(event, "标题:" + title + "\n" + link + "\n" + "原图发送~太慢就等等啦~")
    await bot.send(event, sendimg)


# 该api不可用
# async def pixivr18(bot, event):     # 提取pixivR18日榜榜的图片
#     if event.group_id in config.whilelst: #群组白名单
#         data = feedparser.parse(config.rsshub + 'pixiv/ranking/day_r18')
#         id = random.randrange(0, len(data.entries))
#         link = data.entries[id].link
#         title = data.entries[id].title
#         summary = data.entries[id].summary
#         pattern = re.compile(r'src="(.*?)"', re.I)
#         img = re.findall(pattern,summary)
#         sendimg = MessageSegment.image(img[0])
#         await bot.send(event, "标题:" + title + "\n" + link + "\n" + "原图发送~太慢就等等啦~")
#         await bot.send(event, sendimg)
#     else:
#         await bot.send(event, "だめですよ~")
コード例 #4
0
ファイル: zhiling.py プロジェクト: MangataTS/kaptreebot
async def help_(bot: Bot, event: Event, state: dict):
    if int(event.get_user_id()) != event.self_id:
        path_ = os.getcwd()
        path_ = path_ + '\help.png'
        mypath = 'file:///' + path_
        print(mypath)
        await bot.send(event=event, message=MessageSegment.image(mypath))
コード例 #5
0
ファイル: __init__.py プロジェクト: zhufree/strings
    async def _chick_in():
        uid = session.ctx['sender']['user_id']

        if check_in_interval_judgment(uid):
            chick_in(uid)

            image = await get_image(uid)

            card = session.ctx.get('sender').get('_card')
            if card:
                text = chick_in_text(uid, card)
            else:
                nickname = session.ctx['sender']['nickname']
                text = chick_in_text(uid, nickname)

            image = ImageProcessing(image, text, 256, 'send')
            await image.save()

            bot = session.bot
            boo = await bot.can_send_image()
            boo = boo['yes']

            if not boo:
                await session.send(text)
            else:
                with open('./chick_image_cache/send.png', 'rb') as f:
                    base = base64.b64encode(f.read())
                img = MessageSegment.image(f'base64://{base.decode()}')
                await session.send(img)
        else:
            await session.send('您今天已经签到过了')
コード例 #6
0
async def pixiv_analysis(session: CommandSession):
    # await session.send('功能修复中.')
    bot = get_bot()
    reg = session.current_arg_text
    # seq = MessageSegment.image(os.getcwd()+'\\pixdata\\0.jpg')
    # await bot.send_group_msg(group_id=debug_group, message=seq)

    # try:
    # await bot.send_group_msg(group_id=debug_group,
    #  message='[CQ:image,file=https://img.cheerfun.dev:233/c/540x540_70/img-master/img/2019/12/26/10/47/03/78484613_p0_master1200.jpg]')
    #  message='[CQ:image,file=https://img.cheerfun.dev:233/c/540x540_70/img-master/img/2019/12/26/10/47/03/78484613_p0_master1200.jpg]')
    # except CQHttpError as e:
    # print(e)

    if not reg:
        await session.send('未输入搜索关键词.')
    await bot.send_group_msg(group_id=debug_group, message='p站搜索中,tag:' + reg)
    await session.send("当前参数: 查找%d张图片,搜索页数%d,最低收藏数%d,正在搜索..." %
                       (num, page, bookmark))
    datas = searchByTag(reg, num, page, bookmark)
    # print(ill)
    if not datas:
        await session.send('未搜索到图片或网络错误.')
    else:
        await session.send('搜索到%d组图片.' % len(datas))
    for data in datas:
        await session.send(data[0])
        for i in range(1, len(data)):
            seq = MessageSegment.image(os.getcwd() + '\\pixdata\\' + data[i])
            try:
                await session.send(seq)
            except CQHttpError as e:
                print(e)
            sleep(2)
コード例 #7
0
ファイル: demo.py プロジェクト: x-dmp/qqbot
async def setu(session: CommandSession):
    print('执行setu' + session.current_arg_text)
    res = ''
    code = 0
    if session.current_arg_text == '':
        src = get_pic_from_local()
        res = '恭喜你获得老婆一只!'
        await session.send(MessageSegment.image(src), at_sender=True)
        await session.send(res, at_sender=True)
    else:
        s = session.current_arg_text
        if isnumber(s):
            num = int(session.current_arg_text)
            if num >= 10:
                await session.send('做人不能太贪心哦!', at_sender=True)
                num = 1
            for i in range(num):
                src = get_pic_from_local()
                await session.send(MessageSegment.image(src), at_sender=True)
            res = '共计获得老婆' + str(num) + '只!'
            await session.send(res, at_sender=True)
        else:
            try:
                code, src, quota = get_pic(r18=0,
                                           keyword=session.current_arg_text)
                if code == 0:
                    res = '恭喜你获得' + session.current_arg_text.strip() + '老婆一只!'
                else:
                    src = get_pic_from_local()
                    if code == -1:
                        print('api内部错误')
                    elif code == 401:
                        print('由于不规范的操作而被拒绝调用')
                    elif code == 403:
                        print('找不到符合关键字的色图')
                    elif code == 429:
                        print('达到调用额度限制')
                await session.send('剩余服务次数:' + str(quota))
            except Exception:
                src = get_pic_from_local()
                res = '网络受到神秘的非物质力量干扰,故老婆丢失,这边给您换了一个'
            await session.send(MessageSegment.image(src), at_sender=True)
            await session.send(res, at_sender=True)
コード例 #8
0
ファイル: wikiPedia.py プロジェクト: 89461561511656/nonebot1
async def wikipedia(session: CommandSession):
    words = session.get('words', prompt='你想查询什么词条呢?')
    data = await get_wikipedia(words)
    if len(data) == 1:
        res = MessageSegment.text(data[0])
        await session.send(res)
    elif len(data) == 2:
        res = MessageSegment.text(data[0])
        img = MessageSegment.image(data[1])
        await session.send(res + img)
コード例 #9
0
def get_downloaded_image_path(response: dict, path: str):
    url = response['url']
    image_response = requests.get(url, stream=True)
    image_response.raise_for_status()
    path = f'{path}/{response["filename"]}'
    if not os.path.exists(path):
        with open(path, 'wb') as file:
            file.write(image_response.content)

    resp = str(MessageSegment.image(f'file:///{path}'))
    return resp
コード例 #10
0
ファイル: epicfree.py プロジェクト: kirarasmile/smileBot
async def epicfree(bot, event):
    data = feedparser.parse(config.rsshub + 'epicgames/freegames')
    for i in range(0, len(data.entries)):
        title = data.entries[i].title
        summary = data.entries[i].summary
        link = data.entries[i].link
        pattern = re.compile(r'src="(.*?)"', re.I)
        img = re.findall(pattern, summary)
        sendimg = MessageSegment.image(img[0])
        await bot.send(event,
                       sendimg + "\n" + "游戏名:" + title + "\n" + "链接:" + link)
コード例 #11
0
ファイル: pixiv.py プロジェクト: kirarasmile/smileBot
async def pixivday(bot, event):  # 提取pixiv日榜的图片
    data = feedparser.parse(config.rsshub + 'pixiv/ranking/day')
    id = random.randrange(0, len(data.entries))
    link = data.entries[id].link
    title = data.entries[id].title
    summary = data.entries[id].summary
    pattern = re.compile(r'src="(.*?)"', re.I)
    img = re.findall(pattern, summary)
    sendimg = MessageSegment.image(img[0])
    await bot.send(event, "标题:" + title + "\n" + link + "\n" + "原图发送~太慢就等等啦~")
    await bot.send(event, sendimg)
コード例 #12
0
    async def _send(self, to_chat: int, chat_type: ChatType, message: UnifiedMessage):
        """
        :return:
        """
        self.logger.debug('begin processing message')
        context = dict()
        if chat_type == ChatType.UNSPECIFIED:
            self.logger.warning(f'Sending to undefined group or chat {to_chat}')
            return

        context['message_type'] = f'{chat_type}'
        context['message'] = list()
        if message.image:
            image_name = os.path.basename(message.image)
            context['message'].append(MessageSegment.image(image_name))

        if (chat_type == ChatType.PRIVATE and self.config.NameforPrivateChat) or \
                (chat_type in (ChatType.GROUP, ChatType.DISCUSS) and self.config.NameforGroupChat):
            # name logic
            if message.chat_attrs.name:
                context['message'].append(MessageSegment.text(message.chat_attrs.name))
            if message.chat_attrs.reply_to:
                context['message'].append(MessageSegment.text(' (➡️️' + message.chat_attrs.reply_to.name + ')'))
            if message.chat_attrs.forward_from:
                context['message'].append(MessageSegment.text(' (️️↩️' + message.chat_attrs.forward_from.name + ')'))
            if message.chat_attrs.name:
                context['message'].append(MessageSegment.text(': '))

            # at user
            if message.send_action.user_id:
                context['message'].append(MessageSegment.at(message.send_action.user_id))
                context['message'].append(MessageSegment.text(' '))

        context['message'].append(MessageSegment.text(message.text))

        if chat_type == ChatType.PRIVATE:
            context['user_id'] = to_chat
        else:
            context[f'{chat_type}_id'] = to_chat
        self.logger.debug('finished processing message, ready to send')
        result = await self.bot.send(context, context['message'])
        if message.chat_attrs:
            set_egress_message_id(src_platform=message.chat_attrs.platform,
                                  src_chat_id=message.chat_attrs.chat_id,
                                  src_chat_type=message.chat_attrs.chat_type,
                                  src_message_id=message.chat_attrs.message_id,
                                  dst_platform=self.name,
                                  dst_chat_id=to_chat,
                                  dst_chat_type=chat_type,
                                  dst_message_id=result.get('message_id'),
                                  user_id=self.config.Account)
        self.logger.debug('finished sending')
        return result.get('message_id')
コード例 #13
0
async def zaobao():
    (bot, ) = nonebot.get_bots().values()
    text = await get_zaobao()
    text.replace('\n', '')
    for id in group_id_list:
        await bot.send_msg(message_type="group",
                           group_id=int(id),
                           message='早上好,兄弟萌☀\n━━━━━━━━\n60s读懂世界\n' +
                           MessageSegment.image(text))
        await bot.send_msg(message_type="group",
                           group_id=int(id),
                           message=str(get_today()))
コード例 #14
0
async def setu(bot, event):
    if event.group_id in config.whilelst:  #群组白名单
        id = random.randrange(12, 131)
        url = config.url + "%d" % id
        res = requests.get(url=url)
        pic = json.loads(res.content)['data']
        await bot.send(event, "" + pic['title'] + "\n" + "url:" + pic['url'])
        img = MessageSegment.image("https://pixiv.cat/%d" % pic['pid'] +
                                   ".jpg")
        await bot.send(event, img)
    else:
        await bot.send(event, "您配吗?")
コード例 #15
0
ファイル: pixiv.py プロジェクト: kirarasmile/smileBot
async def pixivmonth(bot, event):  # 提取pixiv月榜的图片
    data = feedparser.parse(config.rsshub + 'pixiv/ranking/month')
    id = random.randrange(0, len(data.entries))
    link = data.entries[id].link
    title = data.entries[id].title
    summary = data.entries[id].summary
    pattern = re.compile(r'src="(.*?)"', re.I)
    img = re.findall(pattern, summary)
    await bot.send(event, "标题:" + title + "\n" + link + "\n" + "原图发送~太慢就等等啦~")
    # sendimg = MessageSegment.image(img[0])
    sendimg = MessageSegment.image(
        'https://cdn.jsdelivr.net/gh/tydaytygx/NA/NA_icon_report_1080_.png')
    await bot.send(event, sendimg)
コード例 #16
0
async def kaw(bot, event):  # 提取Konachan Anime Wallpapers日榜的图片
    if event.group_id in config.whilelst:  #群组白名单
        data = feedparser.parse(config.rsshub +
                                'konachan/post/popular_recent/1d')
        id = random.randrange(0, len(data.entries))
        link = data.entries[id].link
        title = data.entries[id].title
        summary = data.entries[id].summary
        pattern = re.compile(r'src="(.*?)"', re.I)
        img = re.findall(pattern, summary)
        await bot.send(event, "tag:" + title + "\n" + link)
        sendimg = MessageSegment.image(img[0])
        await bot.send(event, sendimg)
    else:
        await bot.send(event, "您配吗?")
コード例 #17
0
async def ph_(bot: Bot, event: Event, state: dict):
    if event.get_user_id != event.self_id:
        print(str(event.message))
        ch = str(event.message)
        i = 0
        ss = [' '] * 2
        for it in ch.split(' '):
            if i == 2:
                break
            ss[i] = it
            i = i + 1
        ph_generator(str(ss[0]), str(ss[1]))
        path_ = os.getcwd()
        path_ = path_ + '\ph.png'
        mypath = 'file:///' + path_
        print(mypath)
        sst = MessageSegment.image(file=str(mypath))  #(file = str(mypath))
        await bot.send(event=event, message=Message(sst))
コード例 #18
0
ファイル: __init__.py プロジェクト: woniupapa/qq_robot
async def tawawa(session: CommandSession):
    qq_number = '10000'  # todo it should be catch from session
    await session.send('功能暂时不可用')
    try:
        msg, ok, no = action.start(qq_number)
        log.write([msg, ok, no])
        if ok is False:
            await session.send(msg)
        else:
            prev_msg = '现在发送第' + str(no) + '话'
            await session.send(prev_msg)

            b64_str = get_b64_content(msg)
            seg = MessageSegment.image(b64_str)
            await session.send(seg)
    except Exception as e:
        log.write(e)
        await session.send('发生了些小小的错误呢')
コード例 #19
0
async def repeat(session: NLPSession):
    global tempmsg
    msg = str(session.event["message"])
    groupnum = str(session.event['group_id'])
    print('群%s收到消息%s' % (groupnum, msg))
    if msg.startswith('[CQ:rich'):
        print('检测到富文本消息')
        msglist = msg.split(' ')
        title = msglist[9][7:-1]
        datalist = msglist[12].split('\"')
        cover = datalist[1]
        text = ''
        text += title + '\n'
        text += '[CQ:image,file=' + cover + ']'
        await session.send(text)
    else:
        # if groupnum in group_list:
        rnd = randint(1, 100)
        # 总概率
        if rnd <= 5:
            rnd = randint(1, 6)
            print('复读随机数:%d' % (rnd))
            if rnd == 1:
                print('生草')
                await session.send('草', at_sender=True)
            if rnd == 2:
                print('复读')
                if session.msg_images:
                    seq = MessageSegment.image(session.msg_images[0])
                    await session.send(seq)
                else:
                    await session.send(msg)
            if rnd in range(3, 5):
                print('记录延迟复读')
                tempmsg.append(msg)
            if rnd in range(5, 7):
                print('复读延迟复读')
                if tempmsg:  # 判断非空
                    i = randint(0, len(tempmsg) - 1)
                    await session.send(tempmsg[i])
                    tempmsg.remove(tempmsg[i])
            if rnd == 66:
                await session.send('详情点击:http://game.granbluefantasy.jp/')
コード例 #20
0
ファイル: coupons.py プロジェクト: DeYu666/python-arsenal
def coupons_send_one_goods(bot, order):
    url = config.url_coupons_alimama_get_one_goods + str(order) + "/"
    res = requests.get(url=url)
    goods = json.loads(res.content)

    # 获取商品图片链接
    url_pic = ""
    if goods['marketingMainPic']:
        url_pic = goods['marketingMainPic']
    elif goods['mainPic']:
        url_pic = goods['mainPic']

    message = print_goods(goods)
    for q in config.LOOP_LIST:
        if url_pic:
            img = MessageSegment.image(url_pic)
            bot.sync.send_group_msg(group_id=q, message=img + "\n" + message)
        else:
            bot.sync.send_group_msg(group_id=q, message=message)

    time.sleep(config.loop_coupons_alimama_time)
    pass
コード例 #21
0
ファイル: sh71.py プロジェクト: xihahaha/XIHAHABOT
async def get_pic():
    picture = MessageSegment.image("sh71/71.jpg")
    return picture
コード例 #22
0
ファイル: chat.py プロジェクト: zdf0221/Robot_hothot
async def beauty(session: CommandSession):
    try:
        respond = MessageSegment.image('/dl/hana.jpg')
        await session.send(respond, ignore_failure=False)
    except ActionFailed as e:
        print(e.retcode)
コード例 #23
0
async def handle_WZ(bot: Bot, event: Event, state: dict):
    king = state["king"]
    wangzhe = await get_wangzhe(king)
    await bot.send(event=event, message=MessageSegment.image(wangzhe))
コード例 #24
0
async def handle_biao(bot: Bot, event: Event, state: dict):
    biao = state["biao"]
    biaoqingbao = await get_biao(biao)
    await bot.send(event=event, message=MessageSegment.image(biaoqingbao))
コード例 #25
0
async def setu(session: CommandSession):
    if getPic():
        seq = MessageSegment.image(os.getcwd() + '\\pixdata\\x.png')
        await session.send(seq)
コード例 #26
0
ファイル: zhiling.py プロジェクト: MangataTS/kaptreebot
async def R18_(bot: Bot, event: Event, state: dict):
    if int(event.get_user_id()) != event.self_id:
        await bot.send(
            event=event,
            message=MessageSegment.image(get_R18()),
        )
コード例 #27
0
ファイル: zhiling.py プロジェクト: MangataTS/kaptreebot
async def mcpo(bot: Bot, event: Event, state: dict):
    if int(event.get_user_id()) != event.self_id:
        await bot.send(event=event,
                       message=MessageSegment.image(get_mc()),
                       at_sender=True)
コード例 #28
0
ファイル: setu.py プロジェクト: muguangAA/qqBot
async def pixiv_send(session: nonebot.CommandSession):
    if alarm_api.get_alarm():
        await session.finish('警报已升起!请等待解除!\n' f'{alarm_api.get_info()}')

    ctx = session.ctx.copy()
    message_id = ctx['message_id']
    if get_privilege(ctx['user_id'], perm.BANNED):
        return

    group_id = ctx['group_id'] if 'group_id' in ctx else -1
    user_id = ctx['user_id']
    if 'group_id' in ctx and not get_privilege(user_id, perm.OWNER):
        if admin_control.get_data(ctx['group_id'], 'banned'):
            await session.finish('管理员已设置禁止该群接收色图。如果确认这是错误的话,请联系bot制作者')

    sanity = -1
    monitored = False
    multiplier = 1
    doMultiply = False

    if group_id in sanity_meter.get_sanity_dict():
        sanity = sanity_meter.get_sanity(group_id)

    elif 'group_id' not in ctx and not get_privilege(user_id, perm.WHITELIST):
        await session.finish('我主人还没有添加你到信任名单哦。请找BOT制作者要私聊使用权限~')

    else:
        sanity = sanity_meter.get_max_sanity()
        sanity_meter.set_sanity(group_id=group_id,
                                sanity=sanity_meter.get_max_sanity())

    if sanity <= 0:
        if group_id not in sanity_meter.remind_dict or not sanity_meter.remind_dict[
                group_id]:
            sanity_meter.set_remid_dict(group_id, True)
            await session.finish('您已经理智丧失了,不能再查了哟~(小提示:指令理智查询可以帮您查看本群还剩多少理智)')

        return

    if not admin_control.get_if_authed():
        pixiv_api.set_auth(
            access_token=admin_control.get_access_token(),
            refresh_token='iL51azZw7BWWJmGysAurE3qfOsOhGW-xOZP41FPhG-s')
        admin_control.set_if_authed(True)

    is_exempt = admin_control.get_data(group_id,
                                       'exempt') if group_id != -1 else False

    key_word = str(session.get('key_word', prompt='请输入一个关键字进行查询')).lower()

    if key_word in sanity_meter.get_bad_word_dict():
        multiplier = sanity_meter.get_bad_word_dict()[key_word]
        doMultiply = True
        if multiplier > 0:
            await session.send(
                f'该查询关键词在黑名单中,危机合约模式已开启:本次色图搜索将{multiplier}倍消耗理智')

            if multiplier * 2 > 400:
                sanity_meter.set_user_data(user_id, 'ban_count')
                if sanity_meter.get_user_data_by_tag(user_id,
                                                     'ban_count') >= 2:
                    user_control_module.set_user_privilege(
                        user_id, 'BANNED', True)
                    await session.send(f'用户{user_id}已被封停机器人使用权限')
                    bot = nonebot.get_bot()
                    await bot.send_private_msg(
                        user_id=SUPER_USER,
                        message=
                        f'User {user_id} has been banned for triggering prtection. Keyword = {key_word}'
                    )

                else:
                    await session.send('本次黑名单搜索已触发群保护机制,下次触发将会导致所有功能禁用。')
                    bot = nonebot.get_bot()
                    await bot.send_private_msg(
                        user_id=SUPER_USER,
                        message=
                        f'User {user_id} triggered protection mechanism. Keyword = {key_word}'
                    )

                del bot
                return
        else:
            await session.send(
                f'该查询关键词在白名单中,支援合约已开启:本次色图搜索将{abs(multiplier)}倍补充理智')

    if key_word in sanity_meter.get_monitored_keywords():
        await session.send('该关键词在主人的监控下,本次搜索不消耗理智,且会转发主人一份√')
        monitored = True
        if 'group_id' in ctx:
            sanity_meter.set_user_data(user_id, 'hit_xp')
            sanity_meter.set_xp_data(key_word)

    elif '色图' in key_word:
        await session.finish(
            MessageSegment.image(
                f'file:///{getcwd()}/data/dl/others/QQ图片20191013212223.jpg'))

    elif '屑bot' in key_word:
        await session.finish('你屑你🐴呢')

    json_result = {}

    try:
        if '最新' in key_word:
            json_result = pixiv_api.illust_ranking('week')
        else:
            json_result = pixiv_api.search_illust(word=key_word,
                                                  sort="popular_desc")

    except pixivpy3.PixivError:
        await session.finish('pixiv连接出错了!')

    except Exception as err:
        await session.send(f'发现未知错误!错误信息已发送给bot主人分析!\n' f'{err}')

        bot = nonebot.get_bot()
        await bot.send_private_msg(
            user_id=SUPER_USER,
            message=f'Uncaught error while using pixiv search:\n'
            f'Error from {user_id}\n'
            f'Keyword = {key_word}\n'
            f'Exception = {err}')

        return

    # 看一下access token是否过期
    if 'error' in json_result:
        admin_control.set_if_authed(False)
        try:
            admin_control.set_access_token(access_token=pixiv_api.login(
                username=user_name, password=password).response.access_token)

            await session.send('新的P站匿名访问链接已建立……')
            admin_control.set_if_authed(True)

        except pixivpy3.PixivError as err:
            print(err)
            return

    if '{user='******'{user=(.*?)}', key_word)
        if key_word:
            key_word = key_word[0]
        else:
            await session.send('未找到该用户。')
            return

        json_user = pixiv_api.search_user(word=key_word, sort="popular_desc")
        if json_user.user_previews:
            user_id = json_user.user_previews[0].user.id
            json_result = pixiv_api.user_illusts(user_id)
        else:
            await session.send(f"{key_word}无搜索结果或图片过少……")
            return

    else:
        json_result = pixiv_api.search_illust(word=key_word,
                                              sort="popular_desc")

    if not json_result.illusts or len(json_result.illusts) < 4:
        nonebot.logger.warning(f"未找到图片, keyword = {key_word}")
        await session.send(f"{key_word}无搜索结果或图片过少……")
        return

    sanity_meter.track_keyword(key_word)
    illust = random.choice(json_result.illusts)
    is_r18 = illust.sanity_level == 6
    if not monitored:
        if is_r18:
            sanity_meter.drain_sanity(group_id=group_id,
                                      sanity=2 if not doMultiply else 2 *
                                      multiplier)
        else:
            sanity_meter.drain_sanity(group_id=group_id,
                                      sanity=1 if not doMultiply else 1 *
                                      multiplier)

    start_time = time.time()
    path = await download_image(illust)
    try:
        nickname = ctx['sender']['nickname']
    except TypeError:
        nickname = 'null'

    bot = nonebot.get_bot()
    if not is_r18:
        try:
            await session.send(
                f'[CQ:reply,id={message_id}]'
                f'Pixiv ID: {illust.id}\n'
                f'查询关键词:{key_word}\n'
                f'画师:{illust["user"]["name"]}\n' +
                f'{MessageSegment.image(f"file:///{path}")}\n' +
                f'Download Time: {(time.time() - start_time):.2f}s')

            nonebot.logger.info("sent image on path: " + path)

        except Exception as e:
            nonebot.logger.info('Something went wrong %s' % e)
            await session.send('悲,屑TX不收我图。')
            return

    elif is_r18 and (group_id == -1
                     or admin_control.get_data(group_id, 'R18')):
        await session.send(
            f'[CQ:reply,id={message_id}]'
            f'芜湖~好图来了ww\n'
            f'Pixiv ID: {illust.id}\n'
            f'关键词:{key_word}\n'
            f'画师:{illust["user"]["name"]}\n'
            f'[CQ:image,file=file:///{path}{",type=flash" if not is_exempt else ""}]'
            + f'Download Time: {(time.time() - start_time):.2f}s')

    else:
        if not monitored:
            await session.send('我找到色图了!\n但是我发给我主人了_(:зゝ∠)_')
            await bot.send_private_msg(
                user_id=SUPER_USER,
                message=f"图片来自:{nickname}\n"
                f"来自群:{group_id}\n"
                f"查询关键词:{key_word}\n" + f'Pixiv ID: {illust.id}\n' +
                f'{MessageSegment.image(f"file:///{path}")}\n' +
                f'Download Time: {(time.time() - start_time):.2f}s')

    sanity_meter.set_usage(group_id, 'setu')
    if 'group_id' in ctx:
        sanity_meter.set_user_data(user_id, 'setu')

    if monitored and not get_privilege(user_id, perm.OWNER):
        await bot.send_private_msg(user_id=SUPER_USER,
                                   message=f'图片来自:{nickname}\n'
                                   f'查询关键词:{key_word}\n'
                                   f'Pixiv ID: {illust.id}\n'
                                   '关键字在监控中' +
                                   f'[CQ:image,file=file:///{path}]')
コード例 #29
0
ファイル: setu.py プロジェクト: muguangAA/qqBot
async def sauce_helper(url):
    params = {
        'output_type': 2,
        'testmode': 0,
        'db': 999,
        'numres': 6,
        'url': url
    }

    response = {}

    async with aiohttp.ClientSession() as client:
        async with client.get('https://saucenao.com/search.php',
                              params=params) as page:
            json_data = await page.json()

        if json_data['results']:
            json_data = json_data['results'][0]
            nonebot.logger.info(f'Json data: \n' f'{json_data}')
            response = ''
            if json_data:
                simlarity = json_data['header']['similarity'] + '%'
                thumbnail = json_data['header']['thumbnail']
                async with client.get(thumbnail) as page:
                    file_name = thumbnail.split('/')[-1]
                    file_name = re.sub(r'\?auth=.*?$', '', file_name)
                    path = f'{getcwd()}/data/lol/{file_name}'
                    if not exists(path):
                        try:
                            with open(path, 'wb') as file:
                                while True:
                                    chunk = await page.content.read(1024**2)
                                    if not chunk:
                                        break

                                    file.write(chunk)
                        except IOError:
                            return {}

                image_content = MessageSegment.image(f'file:///{path}')

                json_data = json_data['data']
                if 'ext_urls' not in json_data:
                    return {}

                pixiv_id = 'Undefined'
                title = 'Undefined'
                author = 'Undefined'

                ext_url = json_data['ext_urls'][0]
                if 'title' not in json_data:
                    if 'creator' in json_data:
                        author = json_data['creator']
                    elif 'author' in json_data:
                        author = json_data['author']
                    else:
                        if 'artist' not in json_data:
                            return {}

                        author = json_data['artist']

                elif 'title' in json_data:
                    title = json_data['title']
                    if 'author_name' in json_data:
                        author = json_data['author_name']
                    elif 'member_name' in json_data:
                        author = json_data['member_name']
                        if 'pixiv_id' in json_data:
                            pixiv_id = json_data['pixiv_id']

                response = {
                    'data': image_content,
                    'simlarity': simlarity,
                    'title': title,
                    'author': author,
                    'pixiv_id': pixiv_id,
                    'ext_url': ext_url,
                    'thumbnail': thumbnail
                }
                """
                response += f'{image_content}' \
                            f'图片相似度:{simlarity}\n' \
                            f'图片标题:{title}\n' \
                            f'图片画师:{author}\n' \
                            f'Pixiv ID:{pixiv_id}\n' \
                            f'直链:{ext_url}'
                """

    return response
コード例 #30
0
dynamic = dynamic.replace("null ",
                          "None ")  # 由于返回数据中可能存在空值null,为了保持语义一致将其改为None
dynamic = dynamic.replace("null,",
                          "None,")  # 由于返回数据中可能存在空值null,为了保持语义一致将其改为None
dynamic = dynamic.replace("false ", "False,")
dynamic = dynamic.replace("false,", "False,")
dynamic = dynamic.replace("true ", "True,")
dynamic = dynamic.replace("true,", "True,")
while re.search(r"(.*)(\"\{)(.*)(\}\")(.*)", dynamic) is not None:
    dynamic = re.sub(
        r"(.*)(\"\{)(.*)(\}\")(.*)",
        lambda x: x.group(1) + "{" + x.group(3) + "}" + x.group(5), dynamic)
while re.search(r"(.*)(\"\[)(.*)(\]\")(.*)", dynamic) is not None:
    dynamic = re.sub(
        r"(.*)(\"\[)(.*)(\]\")(.*)",
        lambda x: x.group(1) + "[" + x.group(3) + "]" + x.group(5), dynamic)
print(dynamic)
# print(ast.literal_eval(dynamic))
# print(json.dumps(ast.literal_eval(dynamic), ensure_ascii=False, indent=4))
dynamic_dict = ast.literal_eval(dynamic)
print(dynamic_dict)
print(json.dumps(dynamic_dict, ensure_ascii=False, indent=4))

img_url = dynamic_dict["item"]["pictures"][0]["img_src"]
fmt = "【B站动态推送-原创内容】\n" + \
      dynamic_dict["user"]["name"] + " " + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(
    html_content["data"]["card"]["desc"]["timestamp"])) + "\n" + \
      dynamic_dict["item"]["description"] + "\n" + str(MessageSegment.image(img_url)) + "\n" + \
      "共" + str(dynamic_dict["item"]["pictures_count"]) + "张图片,详情点击下方链接" + "\n" + \
      "动态地址:t.bilibili.com/"
print(fmt)