Beispiel #1
0
async def voice(app: GraiaMiraiApplication, group: Group,
                message: MessageChain, member: Member):
    message_raw = message.asDisplay()
    if message_raw[:2] == "语音" and len(message_raw) > 4:
        sp_m = message_raw.split(" ")

        if not sp_m[1] in data.keys():
            await app.sendGroupMessage(
                group, MessageChain.create([At(member.id),
                                            Plain(" 发音人选择错误!")]))
            return

        if len(message.asDisplay()) > 200:
            await app.sendGroupMessage(
                group, MessageChain.create([At(member.id),
                                            Plain(" 字数过多!")]))
            return

        if len(sp_m) < 3:
            await app.sendGroupMessage(
                group,
                MessageChain.create(
                    [At(member.id),
                     Plain(" 请按照格式发送!格式如下:\n语音 发音人 文本")]),
            )
            return
        await app.sendGroupMessage(group, MessageChain.create([Plain("请稍后")]))
        text = "".join(sp_m[2:])
        # text为文本,sp_m[1]为发音人的名字
        informant = data[sp_m[1]]
        voice_raw = await azure.get_speech(text, informant)
        # 转码
        silk: bytes = await silkcoder.encode(voice_raw)
        voice_m = await app.uploadVoice(silk)
        await app.sendGroupMessage(group, MessageChain.create([voice_m]))
Beispiel #2
0
 async def shutTheFuckUp(self, app: Slave, message: GroupMessage):
     rands = [random.randint(0, 999) for _ in range(0, 4)]
     if rands[0] < 12:
         plain: Plain = message.messageChain.get(Plain)
         if plain:
             await app.sendGroupMessage(message.sender.group.id,
                                        MeCh.create(plain))
     if rands[1] < 12:
         await app.sendGroupMessage(message.sender.group.id,
                                    MeCh.create([Plain('确实')]))
     if rands[2] < 12:
         if random.randint(1, 3) < 2:
             msg = MeCh.create([At(message.sender.id), Plain('我爱你')])
             await app.sendGroupMessage(message.sender.group.id, msg)
         else:
             if message.messageChain.has(Plain):
                 plain: Plain = message.messageChain.get(Plain)[0]
                 sent = await self.trySentiment(plain.text)
                 if sent[0] == 0:
                     url = self.nm_api if sent[1] > 0.7 else self.nm_api
                 else:
                     return
                 love = await requestText(url)
                 msg = [At(message.sender.id), Plain(love[0])]
                 await app.sendGroupMessage(message.sender.group,
                                            MeCh.create(msg))
     if rands[3] < 12:
         await self.sendPhilosophy(app, message)
Beispiel #3
0
async def group_message_handler(app: GraiaMiraiApplication, msgchain: MessageChain, group: Group, member: Member):
    if msgchain.asDisplay().startswith("#G"):
        await app.sendGroupMessage(group, MessageChain.create(
            [At(member.id), Plain(await getRepositoryInfo(msgchain.asDisplay().replace('#G','').lstrip().rstrip()))]))
    elif msgchain.asDisplay().startswith("#I"):
        repository = msgchain.asDisplay().replace('#I', '').lstrip().rstrip().split(' ')[0]
        issue_number = int(msgchain.asDisplay().replace('#I', '').lstrip().rstrip().split(' ')[1].replace('#',''))
        await app.sendGroupMessage(group, MessageChain.create(
            [At(member.id), Plain(await getIssueInfo(repository,issue_number))]))
Beispiel #4
0
async def get_bangumi_info(sender: int, keyword: str) -> list:
    headers = {
        "user-agent":
            "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36"
    }
    url = "https://api.bgm.tv/search/subject/%s?type=2&responseGroup=Large&max_results=1" % parse.quote(keyword)
    print(url)
    async with aiohttp.ClientSession() as session:
        async with session.post(url=url, headers=headers) as resp:
            data = await resp.json()

    if "code" in data.keys() and data["code"] == 404:
        return [
            "None",
            MessageChain.create([
                At(target=sender),
                Plain(text="番剧 %s 未搜索到结果!" % keyword)
            ])
        ]
    print(data)
    bangumi_id = data["list"][0]["id"]
    url = "https://api.bgm.tv/subject/%s?responseGroup=medium" % bangumi_id
    print(url)

    async with aiohttp.ClientSession() as session:
        async with session.post(url=url, headers=headers) as resp:
            data = await resp.json()

    name = data["name"]
    cn_name = data["name_cn"]
    summary = data["summary"]
    img_url = data["images"]["large"]
    score = data["rating"]["score"]
    rank = data["rank"]
    rating_total = data["rating"]["total"]
    save_base_path = await get_config("imgSavePath")
    path = save_base_path + "%s.jpg" % name

    if not os.path.exists(path):
        async with aiohttp.ClientSession() as session:
            async with session.get(url=img_url) as resp:
                img_content = await resp.read()
        image = IMG.open(BytesIO(img_content))
        image.save(path)

    return [
        "None",
        MessageChain.create([
            At(target=sender),
            Plain(text="查询到以下信息:\n"),
            Image.fromLocalFile(path),
            Plain(text="名字:%s\n\n中文名字:%s\n\n" % (name, cn_name)),
            Plain(text="简介:%s\n\n" % summary),
            Plain(text="bangumi评分:%s(参与评分%s人)\n\n" % (score, rating_total)),
            Plain(text="bangumi排名:%s" % rank)
        ])
    ]
Beispiel #5
0
async def group_message_handler(
    message: MessageChain,
    app: GraiaMiraiApplication,
    group: Group,
    member: Member,
):
    msgText = message.asDisplay()
    if msgText.startswith('/云图'):
        cloud = qunCloud(group.id)
        if msgText == '/云图':
            data = cloud.selectLastTime(dayCnt=0, timeType=2)
            cloud.solve(data)
            await app.sendGroupMessage(
                group,
                MessageChain.create(
                    [At(member.id),
                     Image.fromLocalFile('./res/1.png')]))
        elif msgText.split()[1] != '屏蔽词':
            data = cloud.getData(msgText)
            cloud.solve(data)
            await app.sendGroupMessage(
                group,
                MessageChain.create(
                    [At(member.id),
                     Image.fromLocalFile('./res/1.png')]))
        else:
            print(1)
            words = msgText.split()[2:]
            if msgText.split()[1] == '屏蔽词':

                if member.id == adminId:
                    if words[0] == '全局':
                        cloud.addGlobalStopWords(words[1:])
                        await app.sendGroupMessage(
                            group,
                            MessageChain.create([
                                At(member.id),
                                Plain('\n全局屏蔽词添加成功\n' + str(words[1:]))
                            ]))
                    else:
                        cloud.addQunStopWords(words)
                        await app.sendGroupMessage(
                            group,
                            MessageChain.create([
                                At(member.id),
                                Plain('\n屏蔽词添加成功\n' + str(words))
                            ]))
                else:
                    await app.sendGroupMessage(
                        group,
                        MessageChain.create([At(member.id),
                                             Plain('\n权限不足\n')]))
    else:
        qqid = member.id
        qunid = group.id
        sendtime = int(time.time())
        wordDB().insertvalue(msgText, qqid, qunid, sendtime)
Beispiel #6
0
async def group_message_handler(app: GraiaMiraiApplication, message: MessageChain, group: Group, member: Member):
    if group.id == Global_group:
        for i in ['状态', '查', '绑定', '预约', '总查刀']:
            if message.asDisplay().startswith(i):
                result, type = Bot.run(message.asDisplay() + ' ' + str(member.name) + ' ' + str(member.id))
                if type == 'STR':
                    await app.sendGroupMessage(group,
                                               MessageChain.create([At(target=member.id), Plain('\n' + result)]))
                elif type == 'IMG':
                    await app.sendGroupMessage(group,
                                               MessageChain.create([At(target=member.id), Image.fromLocalFile(result)]))
Beispiel #7
0
 async def PicDeaHandler(self, app: Slave, message: GroupMessage):
     plains = message.messageChain.get(Plain)
     quote: Quote = message.messageChain.get(Quote)[0]
     plain: Plain = quote.origin.get(Plain)[0]
     if any(text.__dict__['text'].strip() == '好' for text in plains):
         if not self.Permitted(message):
             # await app.sendGroupMessage(message.sender.group, [At(message.sender.id), Plain('权限不足')])
             pass
         else:
             if plain.text == '[图片]':
                 if (message.sender.group.id << 32) + quote.id in self.GCache.keys():
                     cache = self.GCache[(message.sender.group.id << 32) + quote.id]
                     image: Image = cache[0]
                     ext = cache[1]
                 else:
                     try:
                         quote_source: GroupMessage = await app.messageFromId(quote.id)
                         image: Image = quote_source.messageChain.get(Image)[0]
                         ext = 'jpg'
                     except UnknownTarget:
                         mec = MeCh.create([At(message.sender.id), Plain('不在本地与消息缓存中,无法保存')])
                         await app.sendGroupMessage(message.sender.group, mec)
                         return
                 te = await saveUrlPicture(image.url, image.imageId, 'application/YummyPicture/save/pic', ext)
                 msg = [At(message.sender.id), Plain(te)]
                 await app.sendGroupMessage(message.sender.group, MeCh.create(msg))
     elif any(text.__dict__['text'].strip() == '图源' for text in plains):
         if plain and plain.text in ['[图片]', '[动画表情]']:
             try:
                 if (k := (message.sender.group.id << 32) + quote.id) in self.GCache.keys():
                     url = self.GCache[k][0].url
                 else:
                     quote_source: GroupMessage = await app.messageFromId(quote.id)
                     image: Image = quote_source.messageChain.get(Image)[0]
                     url = image.url
                 searcher: Searcher = Searcher()
                 result = await searcher.useApiKey().setUrl(url).get()
                 msg = []
                 connector: ProxyConnector = ProxyConnector()
                 if proxy := ymConfig.getConfig('setting').get('proxy'):
                     connector = ProxyConnector.from_url(proxy)
                 for one in result:
                     if float(sim := one['header']['similarity']) < 50:
                         continue
                     img_byte = await request(url=one['header']['thumbnail'], connector=connector, close=False)
                     img = Image.fromUnsafeBytes(img_byte)
                     msg.append(img)
                     if 'ext_urls' in one['data']:
                         ext = one['data']['ext_urls']
                     else:
                         ext = one['header']['thumbnail']
                     msg.append(Plain(f"相似度{sim}%,链接{ext}"))
Beispiel #8
0
async def jy(app: GraiaMiraiApplication, group: Group, member: Member):
    randint = random.randint(1, 60)
    await app.sendGroupMessage(
        group,
        MessageChain.create(
            [At(member.id),
             Plain(f" 恭喜{member.name}获得{randint}秒的禁言时间!")]),
    )
    try:
        await app.mute(group, member, randint)
    except PermissionError:
        await app.sendGroupMessage(
            group, MessageChain.create([At(member.id),
                                        Plain(" 没管理禁nm")]))
Beispiel #9
0
async def genshin(
    app: GraiaMiraiApplication, group: Group, message: MessageChain, member: Member
):
    if message.asDisplay().startswith("!genshin "):
        uid = message.asDisplay().split(" ")[1]
        if len(uid) != 9:
            await app.sendGroupMessage(
                group, MessageChain.create([At(member.id), Plain(" Invalid uid!")])
            )
            return
        _s = await query(config["cookie"], uid)
        await app.sendGroupMessage(
            group, MessageChain.create([At(member.id), Plain(f" {_s}")])
        )
Beispiel #10
0
 async def MSGDeaHandler(self, app: Slave, message: GroupMessage, commands):
     cmd = commands[0].upper()
     if not self.Permitted(message):
         return
     msg = [At(message.sender.id)]
     try:
         if cmd == self.APP_COMMANDS[0]:  # ym
             ymConfig.getConfig(commands[1]).set(commands[2], commands[3])
             await ymConfig.save(commands[1])
             await self.initYummyPicture()
             msg.append(Plain('Success'))
         if cmd == self.APP_COMMANDS[1]:  # aa
             if commands[1].isnumeric():
                 ymConfig.getConfig('setting').addList('admins', int(commands[1]))
                 await ymConfig.save('setting')
                 msg.append(Plain('Added'))
             else:
                 msg.append(Plain('Wrong param'))
         if cmd == self.APP_COMMANDS[2]:  # ra
             if commands[1].isnumeric():
                 ymConfig.getConfig('setting').rmList('admins', int(commands[1]))
                 await ymConfig.save('setting')
                 msg.append(Plain('Removed'))
             else:
                 msg.append(Plain('Wrong param'))
         if cmd == self.APP_COMMANDS[3]:  # gr
             if commands[1].isnumeric() and commands[2].isnumeric():
                 ymConfig.getConfig('setting').addDict('group_rate', str(commands[1]), int(commands[2]))
                 self.getRating(self.ym, message.sender.group.id, True)
                 await ymConfig.save('setting')
                 msg.append(Plain('Success'))
     except IndexError:
         msg.append(Plain('Wrong param'))
     if len(msg) > 1:
         await app.sendGroupMessage(message.sender.group, MeCh.create(msg))
Beispiel #11
0
async def register(group_id: int, member_id: int) -> list:
    now = datetime.datetime.now()
    today_date = now.strftime("%Y-%m-%d")
    today = datetime.datetime.strptime(today_date, "%Y-%m-%d")
    print(today)
    sql = f"SELECT `date` FROM registerRecord WHERE groupId={group_id} AND memberId={member_id} AND `date`>='{today}'"
    res = await execute_sql(sql)
    print(res)
    if len(res) != 0:
        return [
            "None",
            MessageChain.create(
                [At(target=member_id),
                 Plain(text="你今天已经签过到了呢~请不要重复签到哦~")])
        ]
    else:
        sql = f"SELECT count(*) FROM registerRecord WHERE groupId={group_id} AND `date`>='{today}'"
        res = await execute_sql(sql)
        rank = res[0][0] + 1
        sql = f"INSERT IGNORE INTO registerRecord (groupId,memberId,`date`) VALUES ({group_id},{member_id},'{now}')"
        await execute_sql(sql)
        return [
            "quoteSource",
            MessageChain.create([Plain(text=f"签到成功!你是本群今日第{rank}个签到的哦~")])
        ]
Beispiel #12
0
    async def handle(app: GraiaMiraiApplication, message: MessageChain,
                     group: Group, member: Member):
        if message.asDisplay() == "搜番":
            await update_user_call_count_plus1(group, member,
                                               UserCalledCount.search,
                                               "search")
            if not await get_setting(group.id, Setting.bangumi_search):
                return MessageItem(
                    MessageChain.create([Plain(text="搜番功能未开启呐~请联系管理员哦~")]),
                    Normal(GroupStrategy()))
            try:
                await app.sendGroupMessage(
                    group,
                    MessageChain.create(
                        [At(member.id),
                         Plain("请在30秒内发送要搜索的图片呐~")]))
            except AccountMuted:
                logger.error(f"Bot 在群 <{group.name}> 被禁言,无法发送!")
                return None

            image_get = None
            message_received = None

            @Waiter.create_using_function([GroupMessage])
            def waiter(event: GroupMessage, waiter_group: Group,
                       waiter_member: Member, waiter_message: MessageChain):
                nonlocal image_get
                nonlocal message_received
                if time.time() - start_time < 30:
                    if all([
                            waiter_group.id == group.id,
                            waiter_member.id == member.id,
                            len(waiter_message[Image]) == len(
                                waiter_message.__root__) - 1
                    ]):
                        image_get = True
                        message_received = waiter_message
                        return event
                else:
                    logger.warning("等待用户超时!BangumiSearchHandler进程推出!")
                    return event

            bcc = AppCore.get_core_instance().get_bcc()
            inc = InterruptControl(bcc)
            start_time = time.time()
            await inc.wait(waiter)
            if image_get:
                logger.success("收到用户图片,启动搜索进程!")
                try:
                    await app.sendGroupMessage(
                        group,
                        await BangumiSearchHandler.search_bangumi(
                            message_received[Image][0]),
                        quote=message_received[Source][0])
                except AccountMuted:
                    logger.error(f"Bot 在群 <{group.name}> 被禁言,无法发送!")
                    pass
            return None
        else:
            return None
Beispiel #13
0
async def Monitor(nickname: str, app: GraiaMiraiApplication, QQ_id: int,
                  Group_id: int, blog_id_set: Set) -> List:
    '''
    每隔一段时间监控一次, 如有新微博,发送给指定群组, 并@指定人
    '''
    try:
        tempList = await raw_monitor(nickname, blog_id_set)
    except:
        tempList = [False, []]
    if tempList[0] is True:
        new_blog_list = tempList[1]
        msg_to_send = MessageChain.create([At(QQ_id)])
        msg_st = "\n"
        msg_st += f"您关注的[ {nickname} ]有新动态哦, 请注意查收~~\n"
        msg_to_send.plus(MessageChain.create([Plain(msg_st)]))
        for blog in new_blog_list:
            try:
                msg_end = ""
                msg_end += "[Content] : \n{}\n".format(blog["blog_text"])
                msg_end += "[Time] : {}\n".format(blog["blog_time"])
                msg_end += "[Source] : {}\n".format(blog["source"])
                msg_end += "[Likes] : {}\n".format(blog["attitudes_count"])
                msg_end += "[Comments] : {}\n".format(blog["comments_count"])
                msg_end += "[Reposts] : {}\n".format(blog["reposts_count"])
                if blog["blog_imgs"].__len__() > 0:
                    msg_to_send.plus(
                        MessageChain.create([
                            Image.fromNetworkAddress(img)
                            for img in blog["blog_imgs"]
                        ]))
                msg_to_send.plus(MessageChain.create([Plain(msg_end)]))
            except:
                print("[发送错误, pos = 1]")
        await app.sendGroupMessage(Group_id, msg_to_send)
Beispiel #14
0
async def Lunar(some,*member):
    send_message = MessageChain.create([Plain(huangli.get())])
    if member[0] == ():
        await app.sendFriendMessage(some,send_message)
    else:
        at = MessageChain.create([At(member[0][0].id)])
        await app.sendGroupMessage(some,MessageChain.join(at,send_message))
Beispiel #15
0
async def netease_cloud_music_hot(some,*member):
    send_message = MessageChain.create([Plain(wangyiyun.reping())])
    if member[0] == ():
        await app.sendFriendMessage(some, send_message)
    else:
        at = MessageChain.create([At(member[0][0].id)])
        await app.sendGroupMessage(some,MessageChain.join(at,send_message))
Beispiel #16
0
async def hot_weibo(some,rmsg,*member):
    m = rmsg.split(' ')
    if len(m) == 2:
        serial = int(m[1]) - 1
        reso_data = weibo.reso()[1]
        if serial >= len(reso_data):
            send_message = MessageChain.create([Plain("查找数值不正确,数值应为1~{}".format(len(reso_data)))])
        else:
            send_message = MessageChain.create([
                Plain("序号:{}\n"
                      "标题:{}\n"
                      "链接:{}"
                      .format(
                    reso_data[serial]['id'] + 1,
                    reso_data[serial]['name'],
                    reso_data[serial]['url']))])
    elif len(m) == 1:
        send_message = MessageChain.create([Plain('\n{}\n输入 微博热搜 [序号] 来获取访问链接'.format(weibo.reso()[0]))])
    else:
        send_message = MessageChain.create([Plain("你输入的参数有误")])
    if member[0] == ():
        await app.sendFriendMessage(some, send_message)
    else:
        at = MessageChain.create([At(member[0][0].id)])
        await app.sendGroupMessage(some,MessageChain.join(at,send_message))
Beispiel #17
0
async def Admin_Group_Test(message: MessageChain, app: GraiaMiraiApplication,
                           group: Group, member: Member):
    if group.id in TestGroup:
        if message.asDisplay().startswith("/test_need_confirm"):
            await app.sendGroupMessage(
                group,
                MessageChain.create(
                    [At(member.id), Plain("发送 /confirm 以继续运行")]))

            @Waiter.create_using_function([GroupMessage])
            async def waiter(event: GroupMessage, waiter_group: Group,
                             waiter_member: Member,
                             waiter_message: MessageChain):
                if all([
                        waiter_group.id == group.id,
                        waiter_member.id == member.id,
                        waiter_message.asDisplay().startswith("/confirm")
                ]):
                    await app.sendGroupMessage(
                        group, MessageChain.create([Plain("开始执行.")]))
                    return event

            # await asyncio.wait_for(waiter, 60)
            try:
                await asyncio.wait_for(inc.wait(waiter), timeout=10)
            except asyncio.TimeoutError:
                await app.sendGroupMessage(
                    group, MessageChain.create([Plain("命令超时")]))
            await app.sendGroupMessage(group,
                                       MessageChain.create([Plain("执行完毕.")]))
Beispiel #18
0
async def portune(app, group: int, member: int, var, model=''):
    '''
    uid = ev.user_id
    if not lmt.check(uid):
        await bot.finish(ev, f'你今天已经抽过签了,欢迎明天再来~', at_sender=True)
    lmt.increase(uid)
    model = 'DEFAULT'

    pic = drawing_pic(model)
    await bot.send(ev, pic, at_sender=True)
    '''

    t = datetime.datetime.now() - datetime.timedelta(hours=4)
    if var[0].date() != t.date():
        var = [t, '', {}]

    p = Plain('')
    if var[1] and var[2]:
        p = Plain('\n你今天已经抽过签了,这是你今天抽到的签,欢迎明天再来~\n')
    img = drawing_pic(var, model)
    img.save("./source/bak1.png")
    m = MessageChain.create(
        [At(member), p, Img.fromLocalFile("./source/bak1.png")])
    m.__root__[0].display = ''
    await app.sendGroupMessage(group, m)
Beispiel #19
0
async def Member_join(app: GraiaMiraiApplication, group: Group,
                      member: Member):
    await app.sendGroupMessage(
        group,
        MessageChain.create([
            At(member.id),
            Plain("欢迎加入" + str(group.name) + "\n请将群昵称改为游戏ID!")
        ]))
Beispiel #20
0
async def reminder():
    global Global_group
    while True:
        await asyncio.sleep(3)
        result = Bot.need_at()
        if result is not None:
            await app.sendGroupMessage(Global_group,
                                       MessageChain.join([Plain(result[1])], [At(target=int(m[0])) for m in result[0]]))
Beispiel #21
0
async def group_welcome_join_handler(group: Group, member: Member):
    #   欢迎新成员加入
    logger.info(f"[{group.id}] {member.id} 加入了 {group.id}")
    if fetch_config(group.id, "welcomeNewMemberJoin") == 1:
        await app.sendGroupMessage(
            group,
            MessageChain.create(
                [At(target=member.id),
                 Plain(f' 欢迎加入{group.name}!')]))
Beispiel #22
0
async def groupMessage(app: GraiaMiraiApplication, group: Group,
                       member: Member, message: MessageChain):
    if message.has(At):
        if message.get(At)[0].target == 993422335:
            str_reply = reply(message[Plain][0].text.strip())
            await app.sendGroupMessage(
                group,
                MessageChain.create([Plain(str_reply + ' '),
                                     At(member.id)]))
async def githubot(app: GraiaMiraiApplication, member: Member,
                   messageChain: MessageChain, group: Group):
    """
    使用方法:发送github 用户名/仓库名 获取信息
    插件来源:https://github.com/umauc/githubot
    """
    if messageChain.asDisplay().startswith("github "):
        keyword = messageChain.asDisplay()[7:]
        try:
            url = f'https://api.github.com/search/repositories?q={keyword}'
            headers = {'accept': 'application/vnd.github.v3+json'}
            async with aiohttp.ClientSession() as session:
                async with session.get(url=url, headers=headers) as resp:
                    search = await resp.json()
            if search.get('total_count') != 0:
                repo_data = search.get('items')[0]
                full_name = repo_data.get('full_name')
                owner = repo_data.get('owner').get('login')
                description = repo_data.get('description')
                watch = repo_data.get('watchers')
                star = repo_data.get('stargazers_count')
                fork = repo_data.get('forks_count')
                language = repo_data.get('language')
                open_issues = repo_data.get('open_issues')
                try:
                    license = repo_data.get('license').get('spdx_id')
                except Exception:
                    license = 'None'
                last_pushed = repo_data.get('pushed_at')
                jump = repo_data.get('html_url')
                mc = MessageChain.create([
                    At(target=member.id),
                    Plain(
                        text=
                        f'\n{full_name}:\nOwner:{owner}\nDescription:{description}\nWatch/Star/Fork:{watch}/{star}/{fork}\nLanguage:{language}\nLicense:{license}\nLast pushed:{last_pushed}\nJump:{jump}'
                    )
                ]).asSendable()
                await app.sendGroupMessage(group, mc)
        except Exception:
            await app.sendGroupMessage(
                group,
                MessageChain.create(
                    [At(target=member.id),
                     Plain(text='无此存储库')]))
Beispiel #24
0
 async def send(
     self,
     app: GraiaMiraiApplication,
     message: MessageChain,
     origin_message: MessageChain,
     target_field: BaseModel,
     sender: BaseModel
 ):
     message = MessageChain.create([At(target=sender.id)]).plusWith(message)
     await (await self.__strategy_type.send_method(app))(target_field, message)
Beispiel #25
0
async def speech_list(app: GraiaMiraiApplication, group: Group,
                      message: MessageChain, member: Member):
    if message.asDisplay().startswith("语音列表"):

        await app.sendGroupMessage(
            group,
            MessageChain.create(
                [At(member.id),
                 Plain(" 发音人列表如下:{}".format(data))]),
        )
Beispiel #26
0
async def monitor(app: GraiaMiraiApplication, group: Group, member: Member,
                  message: MessageChain):
    if not group.id == config["group"]:
        return
    if message.asDisplay() == "开始监控":
        saya.broadcast.loop.create_task(monitor_loop(app, group),
                                        name="monitor")
        await app.sendGroupMessage(
            group, MessageChain.create([At(member.id),
                                        Plain(" 已开启")]))

    if message.asDisplay() == "在线人数":
        status = await server.async_status()
        print(asyncio.current_task(loop=saya.broadcast.loop))
        await app.sendGroupMessage(
            group,
            MessageChain.create(
                [At(member.id),
                 Plain(f" 目前在线人数:{status.players_online}")]),
        )
async def get_dragon_king(group_id: int,
                          app: GraiaMiraiApplication) -> MessageChain:
    sql = "select * from dragon where groupId=%d order by count desc" % group_id
    lsp_rank = await execute_sql(sql)
    print(lsp_rank)
    msg = []
    text = "啊嘞嘞,从启动到现在都没有人要过涩图的嘛!呜呜呜~\n人家。。。人家好寂寞的,快来找我玩嘛~"
    if lsp_rank == ():
        return MessageChain.create([Plain(text=text)])
    else:
        time_now = datetime.datetime.now().strftime("%Y-%m-%d")
        lsp_champion_count = lsp_rank[0][3]
        if lsp_champion_count == 0:
            return MessageChain.create([Plain(text=text)])
        text = "今天是%s\n" % time_now
        text += "今日获得老色批龙王称号的是:\n"
        msg.append(Plain(text=text))
        lsp_champion_count = lsp_rank[0][3]
        if lsp_champion_count == 0:
            text = "啊嘞嘞,从启动到现在都没有人要过涩图的嘛!呜呜呜~\n人家。。。人家好寂寞的,快来找我玩嘛~"
            return MessageChain.create([Plain(text=text)])
        for i in lsp_rank:
            if i[3] == lsp_champion_count:
                if i[2] != 80000000:
                    msg.append(At(target=i[2]))
                    msg.append(Plain(text="\n"))
                else:
                    msg.append(Plain(text="@匿名LSP\n"))
            else:
                break
        text = "让我们恭喜他!\n今日lsp排行榜:"
        msg.append(Plain(text=text))
        text = ""
        index = 0
        add_bool = False
        add = 0
        last = -1
        for i in lsp_rank:
            if i[3] == 0:
                break
            if i[3] == last:
                add += 1
                add_bool = True
            else:
                if add_bool:
                    index += add
                index += 1
                add = 0
                add_bool = False
                last = i[3]
            member = await app.getMember(group_id, i[2])
            text += "\n%i.%-20s %3d" % (index, member.name, i[3])
        msg.append(Plain(text=text))
        return MessageChain.create(msg)
Beispiel #28
0
async def GroupMessageHandler(group: Group, member: Member, msgchain: MessageChain):
    Record.addMessage(ChatRecord(messagechain=msgchain, group=group, member=member))
    if msgchain.has(Plain):
        text = msgchain.get(Plain)[0].text
        if text == '#词云生成':
            await app.sendGroupMessage(group, MessageChain.create(
                [At(member.id),
                 Plain('生成中...')]
            ))
            await app.sendGroupMessage(group, MessageChain.create(
                [At(member.id),
                 Image.fromLocalFile(wordCloudGenerator(Record.getAGroupMessageList(group.id)))]
            ))
        elif text == '#今日消息图表':
            await app.sendGroupMessage(group, MessageChain.create(
                [At(member.id),
                 Plain('生成中...')]
            ))
            await app.sendGroupMessage(group, MessageChain.create(
                [At(member.id),
                 Image.fromLocalFile(summaryGraphGenerator("today", Record.getAGroupMessageList(group.id)))]
            ))
        elif text == '#总消息图表':
            await app.sendGroupMessage(group, MessageChain.create(
                [At(member.id),
                 Plain('生成中...')]
            ))
            await app.sendGroupMessage(group, MessageChain.create(
                [At(member.id),
                 Image.fromLocalFile(summaryGraphGenerator("total", Record.getAGroupMessageList(group.id)))]
            ))
Beispiel #29
0
async def coolapk(app: GraiaMiraiApplication, group: Group, member: Member):
    await app.sendGroupMessage(
        group, MessageChain.create([At(member.id),
                                    Plain(" 图片发送较慢,请稍等...")]))

    n = await request(
        "https://api.coolapk.com/v6/page/dataList?url=%2Ffeed%2FcoolPictureList%3FfragmentTemplate%3Dflex&title=&subTitle=&page=1"
    )

    choice_dict = random.choice(n)

    url = choice_dict["pic"]
    username = choice_dict["username"]
    tag = choice_dict["tags"]
    device = choice_dict["device_title"]

    msg = [
        At(member.id),
        Plain(" 用户名:{}\n使用设备:{}\n标签:{}".format(username, device, tag)),
        Image.fromNetworkAddress(url),
    ]
    await app.sendGroupMessage(group, MessageChain.create(msg))
Beispiel #30
0
async def group_message_handler_yf(
    message: MessageChain,
    app: GraiaMiraiApplication,
    group: Group, member: Member,
    saying: MessageChain
):
    print("Truth or Dare")

    await app.sendGroupMessage(group, MessageChain.create([
        At(member.id),
        Plain("\n"),
        Plain(tord.tord())
    ]))