示例#1
0
 def image(cls, pic_path: str) -> 'MessageSegment':
     if cls.check_exist(pic_path):
         return MessageSegment.image(f'file:///{pic_path}')
     elif cls.check_exist(path.join(cls.image_dir, pic_path)):
         return MessageSegment.image(
             f'file:///{path.join(cls.image_dir, pic_path)}')
     else:
         return '【图片丢了】'
示例#2
0
 def get_random_image(cls, folder=None) -> 'MessageSegment':
     if not folder:
         image_path = cls.image_dir
     else:
         image_path = path.join(cls.image_dir, folder)
     image_name = get_random_file(image_path)
     return MessageSegment.image(f'file:///{path.join(image_path, image_name)}')
示例#3
0
async def abWord(session: CommandSession):
    target = session.current_arg_text.strip()
    imageList = await getImage(target, 5)
    for x in imageList:
        msg = Message()
        msg.append(MessageSegment.image(x))
        await session.send(msg, ensure_private=True)
示例#4
0
async def colorImage(session: CommandSession):
    # 获取城市的天气预报
    # 向用户发送天气预报
    msg=Message()
    url="http://image.baidu.com/search/index?tn=baiduimage&ps=1&ct=201326592&lm=-1&cl=2&nc=1&ie=utf-8&word=%E8%89%B2%E5%9B%BE"
    imgurl='https://s2.ax1x.com/2019/03/29/A00Whn.png'
    # msg.append(MessageSegment.share(url,"色图","网警已介入本群",imgurl))
    msg.append(MessageSegment.image('https://s2.ax1x.com/2019/11/16/MBYbmd.jpg'))
    msg.extend('没有色图给👴爬')
    await session.send(msg)
示例#5
0
 def parse(cls, data: APIData_T) -> APIData_T:
     assert not data["code"], data["msg"]
     vidData = data["data"]
     return {
         "aid": vidData["aid"],
         "bid": IDCoverter.av2bv(vidData["aid"]),
         "title": vidData["title"],
         "desc": vidData["desc"],
         "cover": MessageSegment.image(vidData["pic"]),
         "duration": cls.encodeTime(vidData["duration"]),
         "time": cls.stamp2Time(vidData["pubdate"]),
         "part": vidData["videos"],
         "author": vidData["owner"]["name"],
         "author_id": vidData["owner"]["mid"],
         "author_face": MessageSegment.image(vidData["owner"]["face"]),
         "view": vidData["stat"]["view"],
         "danmaku": vidData["stat"]["danmaku"],
         "share": vidData["stat"]["share"],
         "like": vidData["stat"]["share"],
         "coin": vidData["stat"]["coin"],
         "favorite": vidData["stat"]["favorite"],
     }
示例#6
0
 async def save_image(cls, event: Event) -> None:
     for i, m in enumerate(event.message):
         match = re.match('\[CQ:image.+?\]', str(m))
         if match:
             try:
                 url = re.findall(r'http.*?term=\d', str(m))[0]
                 save_name = re.findall(r'(?<=-)[^-]*?(?=/)', url)[0]
                 image_path = await download_async(url, cls.image_dir,
                                                   save_name)
                 event.message[i] = MessageSegment.image(image_path)
             except Exception as ex:
                 logger.warning(f'保存图片时发生错误{ex}')
     event.raw_message = str(event.message)
示例#7
0
def _(session: CommandSession):
    session.send("开始生成词云")
    latestTime = datetime.datetime.now() - DELTA_TIME
    if "group_id" in session.ctx:
        messageIter = messageGenterator(group_id=session.ctx["group_id"],
                                        latestTime=latestTime)
    else:
        messageIter = messageGenterator(user_id=session.ctx["user_id"],
                                        latestTime=latestTime)
    wordcloud = WordcloudMaker()
    for data in messageIter:
        data: models.RecordsRead
        sentence = data.content
        wordcloud.update(sentence)
    imageData = wordcloud.save()
    return MessageSegment.image(f"base64://{b64encode(imageData).decode()}")
async def creep(bot: HoshinoBot, ev: CQEvent):
    match = re.match(r'(?:(?:rua)|(?:Rua)|搓)\[CQ:at,qq=(\d+?)\]',
                     ev.raw_message)
    if not match:
        match = re.match(r'\[CQ:at,qq=(.+?)\] (?:(?:rua)|(?:Rua)|搓)',
                         ev.raw_message)
    if not match:
        return
    creep_id = match.group(1)

    url = f'http://q1.qlogo.cn/g?b=qq&nk={creep_id}&s=160'
    resp = await aiorequests.get(url)
    resp_cont = await resp.content
    avatar = Image.open(BytesIO(resp_cont))
    output = generate_gif(data_dir, avatar)
    print(output)
    await bot.send(ev, MessageSegment.image(f'file:///{output}'))
 async def save_image(cls, event: Event, folder=None) -> None:
     if not folder:
         image_path = cls.image_dir
     else:
         image_path = path.join(cls.image_dir, folder)
     if not path.isdir(image_path):
         os.mkdir(image_path)
     for i, m in enumerate(event.message):
         match = re.match('\[CQ:image.+?\]', str(m))
         if match:
             try:
                 url = re.findall(r'http.*?term=\d', str(m))[0]
                 save_name = re.findall(r'(?<=-)[^-]*?(?=/)', url)[0]
                 image = await download_async(url, image_path, save_name)
                 event.message[i] = MessageSegment.image(f'file:///{image}')
             except Exception as ex:
                 print_exc()
     event.raw_message = str(event.message)
示例#10
0
def _(session: CommandSession):
    session.send("开始生成统计")
    latestTime = datetime.datetime.now() - DELTA_TIME
    newestTime = _datetimeRound(datetime.datetime.now())
    frameMaker = DataFrameMaker({"date": str, "time": float})
    if "group_id" in session.ctx:
        messageIter = messageGenterator(
            group_id=session.ctx["group_id"],
            newestTime=newestTime,
            latestTime=latestTime,
        )
    else:
        messageIter = messageGenterator(user_id=session.ctx["user_id"],
                                        newestTime=newestTime,
                                        latestTime=latestTime)
    for data in messageIter:
        date = str(data.time.date())
        time = _time2Int(data.time.time())
        frameMaker.update({"date": date, "time": time})
    imageData = Chart.chatFrequency(frameMaker.read())
    return MessageSegment.image(f"base64://{b64encode(imageData).decode()}")
示例#11
0
 async def image_from_url(cls, url: str, cache=True) -> 'MessageSegment':
     fname = get_str_md5(url)
     image = path.join(cls.image_dir, f'{fname}.jpg')
     if not path.exists(image) or not cache:
         image = await download_async(url, cls.image_dir, fname, 'jpg')
     return MessageSegment.image(f'file://{image}')
示例#12
0
 def image(cls, pic_path: str) -> 'MessageSegment':
     return MessageSegment.image(
         f'file:///{path.join(cls.image_dir, pic_path)}')
示例#13
0
 def image(cls, pic_path: str) -> 'MessageSegment':
     return MessageSegment.image(path.join(cls.image_dir, pic_path))
示例#14
0
async def sendMessageCached():
    bot = nonebot.get_bot()
    try:
        pass
        data = {'formBot': True}
        try:

            async with aiohttp.request(
                    'POST',
                    f'http://{configJs["serverip"]}:{configJs["messageServerListen"]}',
                    data=json.dumps(data),
                    timeout=aiohttp.client.ClientTimeout(total=timeWait -
                                                         1)) as r:
                js = await r.text()
                js = json.loads(js)
            # res = requests.post('http://127.0.0.1:50382', data=json.dumps(data),timeout=3)
            # js = json.loads(res.text)
            # print('messcache')
        except:
            return
        for i in js:
            print(i)
            msg = Message('')
            # int(i.get('qq_group_id'))
            if not i.get('ensure_private'):
                for j in i.get('qq_id_list'):
                    msg.append(MessageSegment.at(int(j)))
                if len(i.get('qq_id_list')) > 0:
                    msg.extend('\n')
            textObj = i.get('text')
            if isinstance(textObj, list):
                for j in textObj:
                    msg.extend(j.replace('$', ' '))
            else:
                try:
                    msg.extend(textObj)
                except:
                    print(f'i.get() error')
            imageList = i.get('img')
            if isinstance(imageList, list):
                for j in imageList:
                    if len(j) > 0:
                        msg.append(MessageSegment.image(j))
            else:
                try:
                    if len(imageList) > 0:
                        msg.append(MessageSegment.image(imageList))
                except:
                    print(f'image send error')
            if i.get('ensure_private'):
                for qqid in i.get('qq_id_list'):

                    await bot.send_private_msg(user_id=qqid, message=msg)
            else:
                await bot.send_group_msg(group_id=int(i.get('qq_group_id')),
                                         message=msg)
        # await bot.send_group_msg(group_id=967636480,
        #                          message=f'给爬')

    except CQHttpError:
        pass