Exemplo n.º 1
0
def exception_resender_listener(app: GraiaMiraiApplication,
                                exception_resender_instance: ExceptionReSender,
                                loop):
    while True:
        task = exception_resender_instance.get()
        # print("task: ", task)
        if task:
            print("task catched!")
            print("len:", exception_resender_instance.getLen())
            print("task: ", task)
            try:
                if len(task) > 1 and task[0] == "None":
                    asyncio.run_coroutine_threadsafe(
                        app.sendGroupMessage(task[4], task[1]), loop)
                    # await app.sendGroupMessage(task[4], task[1])
                elif len(task) > 1 and task[0] == "AtSender":
                    asyncio.run_coroutine_threadsafe(
                        app.sendGroupMessage(task[4], task[1]), loop)
                    # await app.sendGroupMessage(task[4], task[1])
                elif len(task) > 1 and task[0] == "quoteSource":
                    asyncio.run_coroutine_threadsafe(
                        app.sendGroupMessage(task[4],
                                             task[1],
                                             quote=task[2][Source][0]), loop)
                    # await app.sendGroupMessage(task[4], task[1], quote=task[2][Source][0])
                elif len(task) > 1 and task[0] == "revoke":
                    asyncio.run_coroutine_threadsafe(revoke_process(app, task),
                                                     loop)
                    # msg = asyncio.run_coroutine_threadsafe(app.sendGroupMessage(task[4], task[1]), loop)
                    # asyncio.run_coroutine_threadsafe(asyncio.sleep(20), loop)
                    # asyncio.run_coroutine_threadsafe(app.revokeMessage(msg.result()), loop)
                    # msg = await app.sendGroupMessage(task[4], task[1])
                    # await asyncio.sleep(20)
                    # await app.revokeMessage(msg)
            except Exception:
                task[5] += 1
                if task[5] <= exception_resender_instance.max_retries:
                    exception_resender_instance.addTask(task)
                else:
                    asyncio.run_coroutine_threadsafe(
                        app.sendGroupMessage(
                            task[4],
                            MessageChain.create([
                                Plain(
                                    text=
                                    "Maximum number of retries exceeded! Task cancelled!"
                                )
                            ]),
                            quote=task[2][Source][0]), loop)
        time.sleep(2)
def exception_resender_listener(app: GraiaMiraiApplication,
                                exception_resender_instance: ExceptionReSender,
                                loop):
    while True:
        task = exception_resender_instance.get()
        if task:
            logger.warning("task catched! " + "len:" +
                           str(exception_resender_instance.getLen()) +
                           "task: " + str(task))
            try:
                asyncio.run_coroutine_threadsafe(
                    task[0].strategy.send(app, task[0].message, task[1],
                                          task[2], task[3]), loop)
            except Exception:
                task[4] += 1
                if task[4] <= exception_resender_instance.max_retries:
                    exception_resender_instance.addTask(task)
                else:
                    logger.error(
                        "Maximum number of retries exceeded! Task cancelled!")
                    asyncio.run_coroutine_threadsafe(
                        app.sendGroupMessage(
                            task[4],
                            MessageChain.create([
                                Plain(
                                    text=
                                    "Maximum number of retries exceeded! Task cancelled!"
                                )
                            ]),
                            quote=task[1][Source][0]), loop)
        time.sleep(2)
Exemplo n.º 3
0
def NetEaseMusic(app: GraiaMiraiApplication, group: Group, member: Member,
                 message: MessageChain):
    msg_argv = message.asDisplay().split(" ", 1)
    SearchResult = requests.get(
        "https://musicapi.leanapp.cn/search?" +
        urllib.parse.urlencode({"keywords": msg_argv[1]}),
        timeout=3).json()['result']['songs'][0]
    SongId = SearchResult['id']
    SongName = SearchResult['name']
    ArtistName = '/'.join([x['name'] for x in SearchResult['artists']])
    CoverPic = requests.get("https://musicapi.leanapp.cn/song/detail?ids=" +
                            str(SongId),
                            timeout=3).json()['songs'][0]['al']['picUrl']
    MusicUrl = "https://music.163.com/song/media/outer/url?id=" + str(
        SongId) + ".mp3"
    WebUrl = "https://music.163.com/#/song?id=" + str(SongId)

    finalXML = '''<?xml version='1.0' encoding='UTF-8' standalone='yes' ?><msg serviceID="2" templateID="1" action="web" brief="[分享] {SongName}" sourceMsgId="0" url="{WebUrl}" flag="0" adverSign="0" multiMsgFlag="0"><item layout="2"><audio cover="{CoverPic}" src="{MusicUrl}" /><title>{SongName}</title><summary>{ArtistName}</summary></item><source name="网易云音乐" icon="https://s1.music.126.net/style/favicon.ico?v20180823" url="{WebUrl}" action="app" a_actionData="com.tencent.qqmusic" i_actionData="tencent1101079856://" appid="1101079856" /></msg>'''.format(
        SongName=SongName,
        WebUrl=WebUrl,
        CoverPic=CoverPic,
        MusicUrl=MusicUrl,
        ArtistName=ArtistName)
    # return app.sendGroupMessage(
    #     group.id,
    # MessageChain.create(
    #     [
    #         Plain(MusicUrl),
    #         Plain(SongName),
    #         Plain(str(SongId))
    #     ]
    # )

    return app.sendGroupMessage(
        group.id, MessageChain.create([Plain(""), Xml(xml=finalXML)]))
Exemplo n.º 4
0
def WangYiYun(app: GraiaMiraiApplication, group: Group, member: Member,
              message: MessageChain):
    r = requests.get("https://nd.2890.ltd/api/")
    data = json.loads(r.text)
    payload = data['data']['content']['content']
    return app.sendGroupMessage(group.id,
                                MessageChain.create([Plain(text=payload)]))
Exemplo n.º 5
0
def AnimePicCome(app: GraiaMiraiApplication, group: Group, member: Member,
                 message: MessageChain):
    os.system(
        "cd ./pic/;wget https://acg.yanwz.cn/api.php --no-check-certificate;mv api.php api.png"
    )
    return app.sendGroupMessage(
        group.id, MessageChain.create([Image.fromLocalFile("./pic/api.png")]))
Exemplo n.º 6
0
def TodayInHistory(app: GraiaMiraiApplication, group: Group, member: Member,
                   message):
    r = requests.get("https://api.asilu.com/today")
    data = json.loads(r.text)
    payload = "今天是" + data['month'] + "月" + data['day'] + "日,在历史上的今天:\n"
    for i in data['data']:
        payload = payload + str(i['year']) + "年," + i['title'] + "\n"
    return app.sendGroupMessage(group.id,
                                MessageChain.create([Plain(text=payload)]))
Exemplo n.º 7
0
def hitokoto(app: GraiaMiraiApplication, group: Group, member: Member,
             message: MessageChain):
    hitokoto_instance = requests.get(
        "https://v1.hitokoto.cn/?c=a&c=b&c=d&c=i&c=k").json()
    return app.sendGroupMessage(
        group.id,
        MessageChain.create([
            Plain(text=hitokoto_instance['from'] + ": " +
                  hitokoto_instance['hitokoto'])
        ]))
Exemplo n.º 8
0
def draw_lots(app: GraiaMiraiApplication, group: Group, member: Member,
              message: MessageChain):
    with open('./draw/draw_lots.json', 'rb') as json_f:
        json_load = json.load(json_f)
        gua = json_load["六十四卦"][random.randint(0, 63)]
        payload = gua + "卦象解析如下:" + json_load[gua[-3:-1]][random.randint(
            0,
            len(json_load[gua[-3:-1]]) - 1)]
    return app.sendGroupMessage(group.id,
                                MessageChain.create([Plain(payload)]))
Exemplo n.º 9
0
async def sendMsg(app: GraiaMiraiApplication,
                  msg: MESSAGE_T,
                  qq: int = None,
                  group: int = None):
    if isinstance(msg, str):
        msg = MessageChain.create([Plain(msg)])
    if isinstance(msg, ExternalElement):
        msg = MessageChain.create([msg])
    msg = msg.asSendable()
    if qq:
        asyncio.create_task(app.sendFriendMessage(qq, msg))
    if group:
        asyncio.create_task(app.sendGroupMessage(group, msg))
Exemplo n.º 10
0
def MakeaChoice(app: GraiaMiraiApplication, group: Group, member: Member,
                message: MessageChain):
    msg_argv = shlex.split(message.asDisplay())
    kw = ""
    try:
        kw = msg_argv[1]
    except:
        pass
    lst = kw.split(";")
    if "" in lst:
        lst.remove("")
    result = random.choice(lst)
    payload = "我的提议是" + str(result) + ",你看怎么样?"
    return app.sendGroupMessage(group.id,
                                MessageChain.create([Plain(payload)]))
Exemplo n.º 11
0
def ahelp(app: GraiaMiraiApplication, group: Group, member: Member,
          message: MessageChain):
    payload = '''乌理扬诺娃换库辣!代码重写中.....
    目前已开启的的命令:
    #help: 打开帮助面板
    #一言: 一句经典的话,
    #网抑云: 网抑云语录,
    #历史上的今天: 历史上的今天发生了什么?,
    #精神小伙: 精神小伙语录,
    #网易云 (要点的歌曲): 网易云点歌
    #来点二次元 :来个二次元图片
    #随机 (选项1);(选项2)... :选择困难症的好帮手!让机器人来帮你选了吧!
    '''
    return app.sendGroupMessage(group.id,
                                MessageChain.create([Plain(payload)]))
Exemplo n.º 12
0
def group_message_sender(app: GraiaMiraiApplication, group: Group, msg: MessageChain, loop) -> None:
    asyncio.run_coroutine_threadsafe(app.sendGroupMessage(group, msg), loop)
Exemplo n.º 13
0
def MindBoy(app: GraiaMiraiApplication, group: Group, member: Member, message):
    r = requests.get("https://api.66mz8.com/api/social.php?format=json")
    data = json.loads(r.text)
    payload = data['social']
    return app.sendGroupMessage(group.id,
                                MessageChain.create([Plain(text=payload)]))
Exemplo n.º 14
0
async def send_images(app: GraiaMiraiApplication, group_id: int,
                      image_type: str):
    msg = await get_pic(image_type)
    source = app.sendGroupMessage(group_id, msg[1])
    return [msg[0], source]