Ejemplo n.º 1
0
async def pixiv_rev(bot: Bot, event: Event, state: dict):
    info = str(event.message).strip()[10:].strip()
    dic = {"1": "day", "7": "weekly", "30": "monthly"}
    if info in dic.keys():
        imgs = random.choices(await getImgsByDay(dic[info]), k=5)
        names = []
        for img in imgs:
            names.append(await main(img))
        if not names:
            await bot.send(event=event, message="发生了异常情况")
        else:
            msg = ""
            for name in names:
                if name:
                    for t in name:
                        size = os.path.getsize(f"/root/QQbotFiles/pixiv/{t}")
                        # print(f"{size//1024//1024>=10}M")
                        if size // 1024 // 1024 >= 10:
                            msg += "文件大于10M,不能发出来"
                            os.remove(f"/root/QQbotFiles/pixiv/{t}")
                        else:
                            msg += f"[CQ:image,file=file:////root/QQbotFiles/pixiv/{t}]"
            await bot.send(event=event, message=Message(msg))
    else:
        await bot.send(
            event=event,
            message=Message(
                "参数错误\n样例: 'pixivRank 1' , 1:day,7:weekly,30:monthly"))
Ejemplo n.º 2
0
async def cmd_rev(bot: Bot, event: Event, state: dict):
    msg = str(event.message).strip()[3:]
    user_id = event.user_id
    if user_id == 1793268622:
        await bot.send(event=event, message="机器人你别命令我")
        return
    if user_id == 1761512493 or user_id == 2822103204 or user_id == 1928906357:
        if "exit" in msg or "shutdown" in msg:
            await bot.send(event=event, message="别想着干坏事")
            return
        msgg = await run(f"cd ;{msg}")
        if msgg != "":
            if len(msgg) >= 7000:
                msgg = msgg[:7000]
            await bot.send(event=event, message=Message(msgg))
        else:
            await bot.send(event=event, message="您的指令是没有返回值的")
    else:
        if "exit" in msg or "shutdown" in msg:
            await bot.send(event=event, message="别的干坏事")
            return
        msg = f"runuser -l dmf -c \"cd ;{msg}\""
        msgg = await run(f"cd ;{msg}")
        if msgg != "":
            if len(msgg) >= 7000:
                msgg = msgg[:7000]
            await bot.send(event=event, message=Message(msgg))
        else:
            await bot.send(event=event, message="您的指令是没有返回值的")
Ejemplo n.º 3
0
async def _(bot: Bot, event: Event):
    if str(event.get_message()) == '练功房':
        await destiny.finish(message=Message(
            f'[CQ:image,file=file:///{PATH}/src/data/destiny/practice_room.png]'
        ))
        return
    await destiny.finish(message=Message(f'检索不到关键词,触发为got方法'))
Ejemplo n.º 4
0
async def set_receive(bot: Bot, event: Event, state: dict):  # 功能设置接收
    true = ["True", "T", "true", "t"]
    false = ["False", "F", "false", "f"]
    args = str(event.get_message()).strip().split()
    state["key"] = args
    # logger.info(bot.__dict__)
    # logger.info(event.dict())
    # logger.info(state)
    mold = state["key"][0]
    info = setting.search(Q["group_id"] == event.dict()["group_id"])
    if info:
        if mold in true:
            info[0]["song"] = True
            setting.update(info, Q["group_id"] == event.dict()["group_id"])
            msg = "已开启自动下载功能"
            await bot.send(event=event,
                           message=Message(MessageSegment.text(msg)))
        elif mold in false:
            info[0]["song"] = False
            setting.update(info, Q["group_id"] == event.dict()["group_id"])
            msg = "已关闭自动下载功能"
            await bot.send(event=event,
                           message=Message(MessageSegment.text(msg)))
    else:
        setting.insert({"group_id": event.dict()["group_id"], "song": True})
Ejemplo n.º 5
0
def exclaim_msg(person: str, _type: str, include_image: bool, max_repeat: int = 3) -> Message:
    """
    Get exclaiming message from the database.

    The exclaiming message will be made up of 3 basic parts: person,
    body and ending (with a maximum repetition). If the include_image
    parameter is set to True, an image will be included in the selection.
    Please note that the resource should be specified explicitly, and
    the message won't be sent successfully if the resource file is empty.
    """
    msg_body_selection = _get_msg_from_database(_type=_type, _image=include_image)
    msg_ending_selection = _get_msg_from_database(_type=f'-{_type}')

    if not (msg_body_selection and msg_ending_selection):  # indicates the search fails
        return Message('小鱼词穷了QAQ~')

    if msg_body_selection[1]:  # indicates an image
        image_data = msg_body_selection[0]
        image_path = os.path.join(os.getcwd(), image_data)
        message = f'[CQ:image,file=file:///{image_path}]'
        return Message(message)  # return the image only

    msg_body = msg_body_selection[0]
    msg_ending = msg_ending_selection[0] * random.randint(1, max_repeat)

    # beautify visualizations
    if not person:
        return Message(msg_body + msg_ending)
    return Message(person + ' ' * (person[-1].isascii() and msg_body[0].isascii()) + msg_body + msg_ending)
Ejemplo n.º 6
0
def get_message(event: Event, url: str):
    at_segment = {"type": "at", "data": {"qq": event.get_user_id()}}
    image_segment = {"type": "image", "data": {"file": url}}

    if isinstance(event, GroupMessageEvent):
        return Message([image_segment, at_segment])
    return Message(image_segment)
Ejemplo n.º 7
0
def jrrp_handler(uid: str) -> list:
    ReturnList = []
    at_msg = Message(f">{MessageSegment.at(uid)}\n")
    rp_msg = at_msg + random.choice([
        "要我测测您今天的人品嘛?今天的人品指数是", "根据占星学和量子力学,对您今天人品观测的结果是",
        "根据我们大型量子计算机的预测,您今天的人品指数为"
    ])
    rp = random.randint(1, 100)
    if rp > 90:
        rp_msg += f"——{rp}!!!\n"
        rp_msg += random.choice(["看来今天是个买彩票的好日子呢~", "快去抽卡吧少年!"])
        rp_msg += "不过,还是得小心点喔"
    elif rp > 60:
        rp_msg += f"——{rp}\n"
        rp_msg += random.choice(["出去走走吧,没准可以遇到好事", "或许喝饮料能够中奖?"])
    elif rp > 30:
        rp_msg += f"{rp}\n"
        rp_msg += random.choice(["又是平凡的一天,不过这也不错嘛", "今天也是好天气呢~"])
    else:
        rp_msg += f"——呃,{rp}\n"
        rp_msg += random.choice(["今天恐怕得小心行事了。。。", "总而言之谨慎一点也不坏是吧~"])
    ReturnList.append(Message(rp_msg))
    if rp < 30:
        ReturnList.append(Message("不过话又说回来我也不一定准,别放在心上啦"))
    return ReturnList
async def handle_event(bot: Bot, event: Event, state: T_State):
    try:
        url = state["url"].split(" ")
        url = url[len(url) - 1]
        await movie.send(Message("解析成功:" + get_url(url)))
    except Exception as e:
        print(e)
        await movie.send(Message("解析失败"))
Ejemplo n.º 9
0
async def _(bot: Bot, event: Event):
    message = str(event.get_message())
    try:
        uid = re.findall(r"\d+", message)[0]  # str
        im = await draw_pic(uid)
        await query.send(Message(f'[CQ:image,file={im}]'))
    except:
        await query.send(Message('输入错误!'))
Ejemplo n.º 10
0
async def handle_first_receive(bot: Bot, event: Event, state: T_State):
    if event.get_user_id() != "1364374624":
        await Delwords.finish(Message("你就是逊啊,没权限"))
    del_msg = IsDel()
    if del_msg:
        await Delwords.finish(
            Message("已将语录:\n-------\n" + del_msg + "\n-------\n删除!"))
    else:
        await Delwords.finish(Message("删除失败了,嗯嘿嘿"))
Ejemplo n.º 11
0
async def handle(bot: Bot, event: Event, state: T_State):
    args = str(event.get_message()).strip()  # 首次发送命令时跟随的参数,例:/天气 上海,则args为上海
    if args:
        for city in args.split():
            msg = await api.get_city(city)
            await yiqing.send(Message(msg))
    else:
        msg = await api.get_sum()
        await yiqing.send(Message(msg))
Ejemplo n.º 12
0
async def handle_first_receive(bot: Bot, event: Event, state: T_State):
    dats = re.findall("\+ img ([\S]+):%\[[\S]+url=([\S]+)\]%",
                      str(event.get_message()))[0]
    key = dats[0]
    url = dats[1]
    if update_img(key, url):
        await add_img.finish(Message(f"图片添加成功,可通过命令:{key}.jpg触发"))
    else:
        await add_img.finish(Message("添加失败,请联系工作人员"))
Ejemplo n.º 13
0
async def _(bot: Bot, event: Event):
    mes = str(event.get_message())
    if '一' in mes:
        await we.finish(message=Message(f'[CQ:image,file=file:///{PATH}/src/data/challenge/we1.png]'))
    elif '二' in mes:
        await we.finish(message=Message(f'[CQ:image,file=file:///{PATH}/src/data/challenge/we2.png]'))
    elif '三' in mes:
        await we.finish(message=Message(f'[CQ:image,file=file:///{PATH}/src/data/challenge/we3.png]'))
    elif '四' in mes:
        await we.finish(message=Message(f'[CQ:image,file=file:///{PATH}/src/data/challenge/we4.png]'))
    elif '五' in mes:
        await we.finish(message=Message(f'[CQ:image,file=file:///{PATH}/src/data/challenge/we5.png]'))
    elif '六' in mes:
        await we.finish(message=Message(f'[CQ:image,file=file:///{PATH}/src/data/challenge/we6.png]'))
    else:
        day = str(datetime.now().isoweekday())
        if '明' in mes:
            if day == '7':
                day = '1'
                await we.finish(
                    message=Message(f'[CQ:image,file=file:///{PATH}/src/data/challenge/we{day}.png]'))
            elif day == '6':
                await tf.finish(message='明天星期天所有副本都可以刷哦!')
            else:
                day = str(int(day) + 1)
                await we.finish(
                    message=Message(f'[CQ:image,file=file:///{PATH}/src/data/challenge/we{day}.png]'))
        elif day != '7':
            await we.finish(
                message=Message(f'[CQ:image,file=file:///{PATH}/src/data/challenge/we{day}.png]'))
        else:
            await we.finish(message='今天星期天所有副本都可以刷哦!')
Ejemplo n.º 14
0
async def pic(bot: Bot, event: Event, state: dict):  # 数据库
    # logger.info(bot.__dict__)
    # logger.info(event.dict())
    # logger.info(state)
    args = str(event.get_message()).strip().split()
    url = args[0]
    if url[:4] == "http":
        await bot.send(message=Message(MessageSegment.image(url)), event=event)
    else:
        key = "https://pixiv.cat/{}.jpg".format(url)
        await bot.send(message=Message(MessageSegment.image(key)), event=event)
Ejemplo n.º 15
0
def slim_msg(message: str) -> Message:
    """Slim a message."""
    for seg in Message(message):
        if seg.type in ['image', 'video', 'record']:
            seg.data['url'] = None
            seg.data.pop('url')  # remove the 'url' key
        elif seg.type == 'redbag':
            seg.type = 'text'
            title = seg.data.pop('title')
            seg.data['text'] = '我发了一个[%s红包],请下载最新版扫雷联萌领取~' % title
    return Message(message)
Ejemplo n.º 16
0
async def handle(bot: Bot, event: Event, state: T_State):
    try:
        code = verifySid(state)
        if code == CODE_ADDUSER_SID_ERROR:
            await adduser.send(Message(ADDUSER_SID_ERROR_PROMPT))
        else:
            await adduser.send(Message(CODE_ADDUSER_SUCCESS))
    except Exception as e:
        msg = f"Exception: {Exception}\n"
        msg += f"str(e): {str(e)}\nrepr(e): {repr(e)}\n"
        msg += f"traceback.format_exc(): {traceback.format_exc()}"
        await exception_log(bot, msg)
Ejemplo n.º 17
0
async def handle_first_receive(bot: Bot, event: Event, state: T_State):
    question = str(event.get_message()).strip()
    ans = await get_ans(question)
    if ans['code'] == 200:
        await bot.send(event=event, message=Message(ans['newslist'][0]['reply']))
    else:
        expr_tuling = [
            '系统出错了哦~联系主人修复吧!',
            '我的脑子好像不够用了~',
            '服务器被偷了~Saiki不能理解你在说什么啦~'
        ]
        await bot.send(event=event, message=Message(random.choice(expr_tuling)))
Ejemplo n.º 18
0
def setu_msg(data: Dict, type: int, user: int) -> Message:
    msg = ""
    pid = data["pid"]
    title = data["title"]
    img_url = data["urls"]["original"]
    img = MessageSegment.image(img_url, proxy=False)
    setu = Message(f"Pid: {pid}\n" f"Title: {title}\n" f"{img}")
    at_msg = Message(f">{MessageSegment.at(user)}\n")
    if type == 3:
        msg = f"[CQ:cardimage,file={img_url}]"
    elif type == 1:
        msg = at_msg + setu
    return Message(msg)
Ejemplo n.º 19
0
    async def change(bot: Bot, event: Event, state: T_State):
        """修改配置\r\n
        type:\r\n
        group\r\n
        private\r\n
        order:\r\n
        "setu_level"\r\n
        "original"\r\n
        "setu"\r\n
        "r18"\r\n
        "max_num"\r\n
        "revoke"\r\n
        "at"\r\n
        """
        key = state["key"]
        mold = event.dict()["message_type"]
        if mold == "group":
            config = group_config.search(
                Q["group_id"] == event.dict()['group_id'])[0]
            admins = config["admins"]
            admins.append(config["owner"])
            if int(event.get_user_id()) in admins or event.get_user_id(
            ) in hso_config.superusers:
                data = config
                before = str(config["group"][key[1]])
                if key[0] == "开启":
                    data["group"][key[1]] = True
                    after = "True"
                elif key[0] == "关闭":
                    data["group"][key[1]] = False
                    after = "False"
                else:
                    try:
                        data["group"][key[1]] = int(key[2])
                    except:
                        data["group"][key[1]] = key[2]
                    after = key[2]
                group_config.update(data,
                                    Q["group_id"] == event.dict()['group_id'])
                return await bot.send(event=event,
                                      message=Message(
                                          MessageSegment.text(
                                              '{}:{}-->{}'.format(
                                                  key[1], before, after))))
            else:
                return await bot.send(event=event,
                                      message=Message(
                                          MessageSegment.text('¿没权限还玩🐎¿')))

        elif mold == 'private':
            pass  # todo
Ejemplo n.º 20
0
async def _(bot: Bot, event: Event):
    global mid
    qid = event.get_user_id()
    data = readJson()
    key = str(event.get_message()).strip()
    pic, pid = await ghs_pic3(key, 0)
    try:
        await setu.send(f'给大佬递图,pixiv的pid={pid}', at_sender=True)
        mid = await setu.send(message=Message(pic))
        print(mid)
        writeJson(qid, event.time, mid['message_id'], data)
    except Exception as e:
        print(e)
        await setu.send(message=Message('前面的涩图,以后再来探索吧'), at_sender=True)
Ejemplo n.º 21
0
async def handle_event(bot: Bot, event: Event, state: T_State):
    filename = str(event.get_user_id()) + str(random.randint(0,
                                                             10000)) + ".jpg"
    content = state["content"]

    at_ = f"[CQ:at,qq={event.get_user_id()}]"

    if len(content) >= 25:
        await luxun.finish(Message(at_ + " 太长了, 鲁迅说不完!"))
    else:
        await process_pic(content, filename)
        cqimg = f"[CQ:image,file=file:////root/qqBot/NothAmor-Bot/nothamor_bot/plugins/luxun_says/says_img/{filename}]"

        await luxun.finish(Message(cqimg))
Ejemplo n.º 22
0
async def handle_hand_painting_got(bot: Bot, event: Event, state: T_State):
    img = Message(state["img"])
    try:
        if img[0].type == "image":
            await hand_painting.send("转化中")
            img_url = await get_hand_painting(img[0].data["url"])
            if img_url is None:
                await hand_painting.send("出错了,请重新开始")
            else:
                await hand_painting.send(Message(f'[CQ:image,file={img_url}]'))
        else:
            await hand_painting.send("这是啥?")
    except:
        await hand_painting.send("诶嘿,出错了")
Ejemplo n.º 23
0
async def _(bot: Bot, event: Event, state: T_State):
    v = "default"
    if event.__getattribute__('group_id') is None:
        event.__delattr__('group_id')
    else:
        group_dict = poke_dict[event.__getattribute__('group_id')]
        group_dict[event.sender_id] += 1
        v = await invoke_poke(event.group_id, event.sender_id)
        if v == "disabled":
            await poke.finish()
            return
    r = randint(1, 14)
    if r == 1 or v == "limited":
        await poke.send(
            Message([{
                "type": "poke",
                "data": {
                    "qq": f"{event.sender_id}"
                }
            }]))
    elif r == 2:
        await poke.send(Message('妈你戳'))
    elif r == 3:
        url = await get_jlpx('戳', '你妈', '闲着没事干')
        await poke.send(Message([{"type": "image", "data": {"file": url}}]))
    elif r == 4:
        img_p = Image.open(path)
        draw_text(img_p, '戳你妈', 0)
        draw_text(img_p, '有尝试过玩Cytus II吗', 400)
        await poke.send(
            Message([{
                "type": "image",
                "data": {
                    "file":
                    f"base64://{str(image_to_base64(img_p), encoding='utf-8')}"
                }
            }]))
    elif r == 5:
        await poke.send(Message('呜呜呜再戳人家要哭哭了啦'))
    elif r <= 7:
        await poke.send(
            Message([{
                "type": "image",
                "data": {
                    "file":
                    f"https://www.diving-fish.com/images/poke/{r - 5}.gif",
                }
            }]))
    elif r <= 12:
        await poke.send(
            Message([{
                "type": "image",
                "data": {
                    "file":
                    f"https://www.diving-fish.com/images/poke/{r - 7}.jpg",
                }
            }]))
    else:
        await poke.send(Message('戳你妈'))
Ejemplo n.º 24
0
async def handle(bot: Bot, event: Event, state: T_State):
    STORY_URL_FORMAT = 'https://daily.zhihu.com/story/{}'
    async with httpx.AsyncClient() as client:
        resp = await client.get('https://news-at.zhihu.com/api/4/news/latest')
        data = resp.json()
        stories = data.get('stories')
        if not stories:
            await zhihu.send(Message('暂时没有数据,或者服务无法访问'))
            return
        reply = ''
        for story in stories:
            url = STORY_URL_FORMAT.format(story['id'])
            title = story.get('title', '未知内容')
            reply += f'\n{title}\n{url}\n'
        await zhihu.send(Message(reply.strip()))
Ejemplo n.º 25
0
async def _(bot: Bot, event: GroupRecallNoticeEvent):
    mid = event.message_id
    meg = await bot.get_msg(message_id=mid)
    print(event)
    if event.user_id != event.self_id and 'type=flash,' not in meg['raw_message'] and event.operator_id not in [
        2064338943, event.self_id]:
        re = '刚刚说了:\n' + meg['message'] + '\n\n不要以为派蒙没看见!'
        await recall.finish(message=Message(re), at_sender=True)
        return
    if event.user_id == event.self_id and event.operator_id not in [2064338943, event.self_id]:
        if "你的撤回可不生效哦" in meg['message']:
            await recall.finish(message=Message(meg['message']), at_sender=False)
        else:
            await recall.finish(message=Message(meg['message'] + "\n你的撤回可不生效哦"), at_sender=False)
        return
async def _():
    tz = pytz.timezone('Asia/Shanghai')
    nowtime = datetime.datetime.now(tz).strftime("%H:%M")
    print(list(nonebot.get_bots().values())[0])
    bot = list(nonebot.get_bots().values())[0]
    msg = f"现在时间是: {nowtime}" + "\n" + "你好"
    await bot.send_private_msg(user_id=1024979076, message=Message(msg))
Ejemplo n.º 27
0
async def show_solutions(bot: Bot, universal_id: str, result: dict):
    """Generate a message node from all solutions."""
    group_id = int(universal_id[len(str(bot.self_id)):])
    member_manager = MemberManager(universal_id)

    message = []
    for i in range(result['current']):
        user_id = result['stats'][i][0]
        name = member_manager.get_member_name(user_id)
        message.append({
            'type': 'node',
            'data': {
                'name': name,
                'uin': user_id,
                'content': result['solutions'][i]
            }
        })

    for remaining in result['remaining']:
        message.append({
            'type': 'node',
            'data': {
                'name': '小鱼',
                'uin': bot.self_id,
                'content': remaining
            }
        })

    if message:
        await bot.send_group_forward_msg(group_id=group_id,
                                         messages=Message(message))
Ejemplo n.º 28
0
async def handle(bot: Bot, event: Event, state: T_State):
    logger.success(f'help: {event}\n')
    data = await get_help_data()
    await help.send(
        Message(
            f'[CQ:share,url={data["url"]},title={data["title"]},content={data["content"]},image={data["image"]}]'
        ))
Ejemplo n.º 29
0
async def handle_image(bot: Bot, event: Event, state: dict):
    message = str(event.get_message())

    short_result = short_reg.findall(message)
    short_links = list(set(short_result))
    # # https://stackoverflow.com/questions/62846735/how-to-use-await-inside-map-function
    # makeup_links = await alist(amap(get_target_link, short_links))

    result = reg.findall(message)
    links = list(filter(lambda link: type(link) == str, list(
        set(result)))) + short_links
    for link in links:
        info = await get_data(link)
        if info and 'url' in info:
            text = [f"{link}", f"UP: {info['up']}", f"标题: {info['title']}"]
            if info['desc']:
                text.append(f"简介:{info['desc']}")
            message = Message([{
                "type": "image",
                "data": {
                    "file": info['url']
                }
            }, {
                "type": "text",
                "data": {
                    "text": '\n'.join(text)
                }
            }])
            await bili_cover.send(message)
        else:
            await bili_cover.send(f'未找到 {link} 相关信息')
    if len(links):
        raise StopPropagation
Ejemplo n.º 30
0
async def ygo_rev(bot: Bot, event: Event, state: dict):
    # print(event.get_message())
    msg = str(event.get_message())[4:]
    url = f"https://ygocdb.com/?search={msg}"
    # print(url)
    async with aiohttp.ClientSession() as session:
        async with session.get(url=url, headers=headers) as response:
            txt = await response.text()
            list_pic = re.findall('\<a href\=\"(.*?)\" target\=\"_blank\"\>',
                                  txt)
            list_pic = [x for x in list_pic if str(x).endswith(".jpg")]

    pic_all = os.listdir("/root/QQbotFiles/ygo")

    send_msg = ""

    if list_pic:
        list_pic = list_pic[:1]
        for x in list_pic:
            if x not in pic_all:
                await down_img(x)
            name = x[x.rfind("/") + 1:]
            send_msg += f'[CQ:image,file=file:////root/QQbotFiles/ygo/{name}]'

    if send_msg != "":
        await bot.send(event=event, message=Message(send_msg))
    else:
        await bot.send(event=event, message="未查询到此类卡片")