예제 #1
0
async def search_image(app: Mirai, group: Group, member: Member, cp: CommandParser, message: MessageChain):
    pa = cp.parse_with_valid(["[Image"])
    if isinstance(pa, str):
        return await app.sendGroupMessage(group, [At(member.id), Plain(pa)])
    elif not pa:
        return await app.sendGroupMessage(group, [At(member.id), Plain("参数不能为空")])
    img = message.getFirstComponent(Image)
    with open(f"{ROOT}{str(img.imageId)}.jpg", "wb") as f:
        f.write((await img.toBytes()).getvalue())
    try:
        _, raw = await wget(f"https://saucenao.com/search.php?output_type=2&testmode=0&numres=4&url=https://www.pixivdl.net/static/img/{str(img.imageId)}.jpg")
    finally:
        os.remove(f"{ROOT}{str(img.imageId)}.jpg")
    data = Parser.parse_raw(raw)
    if data.header.status != 0:
        print(raw)
        return await app.sendGroupMessage(group, [At(member.id), Plain(f"发生错误:status: {data.header.status}")])
    result = ["查询结果:\n", f"作品类型:{DataBase.get(data.results[0].header.index_id)}\n",
              f"准确度:{data.results[0].header.similarity}%\n", f"剩余次数:{data.header.long_remaining}\n"]
    if data.results[0].header.index_id in (21, 22):  # Anime, HAnime
        result.append(f"作品名:{data.results[0].data.source}\n")
        result.append(f"年份:{data.results[0].data.year}\n")
        result.append(f"目标位置:第{data.results[0].data.part}集,{data.results[0].data.est_time}\n")
    elif data.results[0].header.index_id in (5, 31, 33, 34):  # Image
        result.append(f"标题:{data.results[0].data.title}\n")
    result.append(f"更多信息:{data.results[0].data.ext_urls[0]}")
    await app.sendGroupMessage(group, [At(member.id), *(Plain(msg) for msg in result)])
예제 #2
0
async def execute(app: Mirai, monitor: Monitor) -> None:
    # noinspection PyBroadException
    try:
        resp, groups = await monitor.run()
        if resp:
            EventLogger.info(f'{resp.name}直播:{resp.url}')

            if resp.cover:
                cover: Image = await app.uploadImage("group", await Image.fromRemote(resp.cover))
                components = [Plain(f'(直播){resp.name}: {resp.title}\n{resp.url}\n'), cover]
            else:
                components = [Plain(f'(直播){resp.name}: {resp.title}\n{resp.url}')]

            tasks = [asyncio.create_task(
                app.sendGroupMessage(group=group_id, message=components)
            ) for group_id in groups]

            done, pending = await asyncio.wait(tasks)
            for task in done:
                if e := task.exception():
                    EventLogger.error(e)

    except ChannelResolveError as e:
        EventLogger.warning(e)
    except Exception:
        EventLogger.error(traceback.format_exc())
예제 #3
0
파일: function.py 프로젝트: GG-yuki/QQBot
def getWeather(message,sender):
    global city
    point=message.toString()[25:]
    print("天气查询,城市:",point)
    if point not in city:
        return [
            At(target=sender),
            Plain(text="请检查城市名称,只支持中国城市及部分地区哦~")
        ]
    weather_src=weatherSrc+point
    response=requests.get(weather_src)
    html=response.text
    html.replace("\/","/")
    html.replace("//",'/')
    html=html.encode('utf-8').decode('unicode_escape')
    wea=re.findall(r'wea":"(.*?)"',html,re.S)[0]
    tem=re.findall(r'"tem":"(.*?)"',html,re.S)[0]
    tem_day=re.findall(r'"tem_day":"(.*?)"',html,re.S)[0]
    tem_night=re.findall(r'"tem_night":"(.*?)"',html,re.S)[0]
    win=re.findall(r'"win":"(.*?)"',html,re.S)[0]
    win_speed=re.findall(r'"win_speed":"(.*?)"',html,re.S)[0]
    win_meter=re.findall(r'"win_meter":"(.*?)"',html,re.S)[0]
    air=re.findall(r'"air":"(.*?)"',html,re.S)[0]
    return [
        Plain(text="%s今日天气\n"%point),
        Plain(text="天气情况:%s\n"%wea),
        Plain(text="实时温度:%s℃\n"%tem),
        Plain(text="最高温:%s℃\n"%tem_day),
        Plain(text="最低温:%s℃\n"%tem_night),
        Plain(text="风向:%s\n"%win),
        Plain(text="风力等级:%s\n"%win_speed),
        Plain(text="风速:%s\n"%win_meter),
        Plain(text="空气质量:%s"%air)
    ]
예제 #4
0
def chain_split(chain: MessageChain, split_str: str) -> List[MessageChain]:
    chain = fix_merge(chain)  # 已经重新生成了一个 MessageChain(以list的形式)
    length = len(chain)

    result = []
    last_str = None
    for index, component in enumerate(chain):
        if isinstance(component, Plain):
            char_lists = component.toString().split(split_str)
            if len(char_lists) > 1:
                result.append(MessageChain(__root__=[
                  Plain(splited_plain_string) for splited_plain_string in \
                    (char_lists[:-1] if index != length - 1 else char_lists)
                ]))
                if index != length - 1:
                    last_str = char_lists[-1]
                else:
                    last_str = None
            else:
                last_str = component.toString()
        else:
            result.append(
                MessageChain(__root__=[
                    *([Plain(last_str)] if last_str else []), component
                ]))
    return result
예제 #5
0
파일: main.py 프로젝트: ShiroDoMain/TimeBot
async def main():
    for i in range(1, 13):
        Time = int(time.strftime("%I%M%S", time.localtime(time.time())))
        if Time == (i * 10000):
            async with Session(
                    f"mirai://localhost:8080/?authKey={authKey}&qq={qq}"
            ) as session:
                # 向个人报时
                await session.sendFriendMessage(
                    qqID,  # 接受qq
                    [
                        Image.fromFileSystem("./timeimg/{}.jpg".format(
                            int(i))),
                        Plain(text="Now time")
                    ])
                # 在群里报时
                await session.sendGroupMessage(
                    qqID,  # 群组qq
                    [
                        Image.fromFileSystem("./timeimg/{}.jpg".format(
                            int(i))),
                        Plain(text="Now time")
                    ])
                print('{}点已放送'.format(i))
                break
예제 #6
0
def settingProcess(groupId,sender,config,change):
    if sender in getAdmin(groupId):
        if configChangeJudge(config,change):
            if config in adminConfig:
                updateSetting(groupId,config,settingCode[change])
                record("setting:%s set to %s"%(config,change),"none",sender,groupId,True,"function")
            else:
                if not sender==HostQQ:
                    record("setting:Insufficient permissions","none",sender,groupId,False,"function")
                    return [
                        At(target=sender),
                        Plain(text="Insufficient permissions!")
                    ]
                else:
                    if change.isnumeric():
                        updateSetting(groupId,config,change)
                    else:
                        updateSetting(groupId,config,settingCode[change])
                    record("setting:%s set to %s"%(config,change),"none",sender,groupId,True,"function")
            if (config=="real" or config=="setu") and change=="Enable" and (getSetting(groupId,"setu") and getSetting(groupId,"real")):
                updateSetting(groupId,"forbiddenCount",0)
        else:
            record("setting:command error","none",sender,groupId,False,"function")
            return [
                At(target=sender),
                Plain("Command error!")
            ]
        return [
            Plain(text="group:%d %s set to %s"%(groupId,config,change))
        ]
    else:
        return [
            At(target=sender),
            Plain(text="爬爬爬,你没有管理权限!离人家远一点啦!死变态!")
        ]
예제 #7
0
파일: function.py 프로젝트: GG-yuki/QQBot
def translate(groupId,sender,text,source,target):
    url="https://api.ai.qq.com/fcgi-bin/nlp/nlp_texttranslate"
    # 请求时间戳(秒级),用于防止请求重放(保证签名5分钟有效)
    t = time.time()
    time_stamp = str(int(t))
    # 请求随机字符串,用于保证签名不可预测  
    nonce_str = ''.join(random.sample(string.ascii_letters + string.digits, 10))
    # 应用标志,这里修改成自己的id和key
    app_id = ''
    app_key = ''
    params = {  'app_id' : app_id,
                'text' : text,
                'time_stamp':time_stamp,
                'nonce_str':nonce_str,
                'source':source,
                'target':target
             }
 
    sign_before = ''
    for key in sorted(params):
        sign_before += '{}={}&'.format(key, quote(params[key], safe=''))
    sign_before += 'app_key={}'.format(app_key)
    sign = curlmd5(sign_before)
    params['sign'] = sign
    r = requests.get(url,params=params)
    # print(r.text)
    record("translate %s->%s"%(source,target),"none",sender,groupId,True,"function")
    return [
        At(target=sender),
        Plain("translate:\n"),
        Plain(text="%s"%r.json()["data"]["target_text"])
    ]
예제 #8
0
파일: String.py 프로젝트: thx114/bot_irori
def BVCoder(*attrs, **kwargs):
    def dec(x):
        r = 0
        for i in range(6):
            r += tr[x[s[i]]] * 58**i
        return (r - add) ^ xor

    def enc(x):
        x = (x ^ xor) + add
        r = list('BV1  4 1 7  ')
        for i in range(6):
            r[s[i]] = table[x // 58**i % 58]
        return ''.join(r)

    table = 'fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF'
    tr = {}
    for i in range(58):
        tr[table[i]] = i
    s = [11, 10, 3, 8, 4, 6]
    xor = 177451812
    add = 8728348608
    try:
        try:
            ostr = [Plain(text=enc(int(i)) + '\n') for i in attrs]
        except:
            ostr = [Plain(text='av' + str(dec(i)) + '\n') for i in attrs]
    except Exception as e:
        ostr = [Plain(text=str(e))]
    return ostr
예제 #9
0
async def hourcall():
    now = datetime.now(pytz.timezone('Asia/Shanghai'))
    timetext = now.strftime('%H:%M:%S')
    msgformat = """【提醒买药小助手】
{0}
大家好,我是本群的“提醒买药小助手”,希望看到消息的人可以放下手中的其他事情打开PCR去买药吧。6小时后我会继续提醒大家去买药,和我一起成为每天买四次药的人吧。
附一张setu
"""

    try:
        setu_msg = pixiv_setu.get_setu("normalrank")
    except Exception as e:
        print(e)
        setu_msg = [Plain(text="没有找到色图")]

    text = msgformat.format(timetext)
    print(text)
    msg = [Plain(text=text)] + setu_msg

    group_id_list = myconfig.group_medi_id_list

    try:
        for group_id in group_id_list:
            await app.sendGroupMessage(group_id, msg)
            # await app.sendGroupMessage(group_id, [Plain(text=f'现在时间 {timetext}')])

    except Exception as e:
        print(e)
예제 #10
0
def 电笔记(*attrs, **kwargs):
    ins = ' '.join(attrs)
    if ins == 'reload':
        ret_msg = [Plain('知识库已更新,现有词条:\n')]
        for i in os.listdir('DigitalElectronicsTech'):
            if i[-6:] == '.json5':
                with open('DigitalElectronicsTech/' + i, 'r') as f:
                    j = json5.load(f)
                for k, v in j.items():
                    ret_msg.append(Plain('\t- ' + k + '\n'))
                    GLOBAL.DEKnowledge[k] = [
                        Plain(f'''{k}\n别名:{v['AN']}\n{v['desc']}''')
                    ]
                    if 'img' in v:
                        for vi in v['img']:
                            GLOBAL.DEKnowledge[k].append(
                                Image.fromFileSystem(
                                    'DigitalElectronicsTech/img/' + vi))
                    for an in v['AN']:
                        GLOBAL.DEKnowledge[an] = GLOBAL.DEKnowledge[k]
        return ret_msg
    elif ins in GLOBAL.DEKnowledge:
        return GLOBAL.DEKnowledge[ins]
    else:
        return [Plain('不存在此条目')]
예제 #11
0
파일: hello.py 프로젝트: zdf0221/Hothot
async def daily_pic(app: Mirai, group: Group, member: Member,
                    message: MessageChain):
    matches = ['.setu', '来张色图', '来份色图', '不够色', '就这?']
    if any(x in message.toString() for x in matches):
        ans = random.randint(0, 1)
        if ans:
            try:
                path = os.path.abspath(__file__)
                path = os.path.dirname(path)
                path = os.path.join(path, 'Tornado_webite_test')
                path = os.path.join(path, 'Pixiv')
                # print(path)
                pic_name = os.listdir(path)
                # print(pic_name)
                random_pic = os.path.join(path, random.choice(pic_name))
                await app.sendGroupMessage(group.id, [
                    At(target=member.id),
                    Image.fromFileSystem(random_pic),
                    Plain(text="这是您点的一份色图~")
                ])
            except (RuntimeError, ValueError, EnvironmentError,
                    PermissionError, ConnectionRefusedError):
                print("send setu message error!")
        else:
            await app.sendGroupMessage(group.id, [
                At(target=member.id),
                Plain(text="本烫不想理你"),
                Face(faceId=212),
            ])
예제 #12
0
def infoProcess(groupId,sender,check):
    if sender in getAdmin(groupId):
        if infoCheckJudge(check):
            if check in adminCheck:
                return showSetting(groupId,sender,check)
            else:
                if not sender==HostQQ:
                    record("setting:Insufficient permissions","none",sender,groupId,False,"function")
                    return [
                        At(target=sender),
                        Plain(text="Insufficient permissions!")
                    ]
                else:
                    return showSetting(groupId,sender,check)
        else:
            record("setting:command error","none",sender,groupId,False,"function")
            return [
                At(target=sender),
                Plain("Command error!")
            ]
    else:
        return [
            At(target=sender),
            Plain(text="爬爬爬,你没有管理权限!离人家远一点啦!死变态!")
        ]
예제 #13
0
 async def wipDDL(g, mb, tit, delays):
     print('delay:', delays)
     try:
         await asyncio.sleep(delays)
         with open(f'ddl/{g}', 'r') as fr:
             j = json.load(fr)
         del ddlQueuer[tit]
         del j[tit]
         with open(f'ddl/{g}', 'w') as fw:
             json.dump(j, fw)
         if delays > -10:
             if g >= 2**39:
                 if random.randint(0, 4):
                     await GLOBAL.app.sendGroupMessage(
                         g - 2**39,
                         [At(mb), Plain(tit + '大限已至,我扔掉了。')])
                 else:
                     await GLOBAL.app.sendGroupMessage(
                         g - 2**39,
                         [At(mb), Plain(tit + '变臭力,只能扔了(悲')])
             else:
                 if random.randint(0, 4):
                     await GLOBAL.app.sendFriendMessage(
                         g, [Plain(tit + '大限已至,我扔掉了。')])
                 else:
                     await GLOBAL.app.sendFriendMessage(
                         g, [Plain(tit + '变臭力,只能扔了(悲')])
     except Exception as e:
         print(e)
예제 #14
0
async def GMHandler(app: Mirai, group: Group, member: Member,
                    message: GroupMessage):
    print(message)
    print(message.toString())
    global RECORDS, STATUS
    if "醒醒不对劲" in message.toString():
        STATUS = True
        await app.sendGroupMessage(group, [Plain(text="我还想再睡会儿!")])

    if not STATUS:
        return

    if "报名" in message.toString():
        try:
            message_handler(member, message.toString())
            await app.sendGroupMessage(group, [Plain(text=format_table())])
        except Exception:
            await app.sendGroupMessage(group, [Plain(text="糟糕,坑满啦!")])
    elif "clear" in message.toString():
        RECORDS = {}
        await app.sendGroupMessage(group, [Plain(text=format_table())])
    elif "出来吧憨憨" in message.toString():
        time.sleep(1)
        await app.sendGroupMessage(group, [Plain(text="余目才是憨批!")])
    elif message.toString() == "/roll":
        await app.sendGroupMessage(group,
                                   [Plain(text=str(random.randint(0, 100)))])
    elif "At::target=75960775" in message.toString():
        if random.randint(0, 10) < 4:
            await app.sendGroupMessage(
                group,
                [Plain(text="喊我干啥,我又不是小爱同学"),
                 Face(faceId=QQFaces['nanguo'])])
        else:
            await app.sendGroupMessage(group, [Plain(text=random_words())])
    elif "睡吧不对劲" in message.toString():
        STATUS = False
        await app.sendGroupMessage(group, [
            Plain(text="晚安~"),
            Image(
                type='Image',
                imageId='AD698F3D-FCEC-0516-C6DA-346967FF876E',
                url=HttpUrl(
                    'http://gchat.qpic.cn/gchatpic_new/843452214/1032083209-2934067879-AD698F3DFCEC0516C6DA346967FF876E/0?term=2',
                    scheme='http',
                    host='gchat.qpic.cn',
                    tld='cn',
                    host_type='domain',
                    path=
                    '/gchatpic_new/843452214/1032083209-2934067879-AD698F3DFCEC0516C6DA346967FF876E/0',
                    query='term=2'))
        ])
    else:
        num = random.randint(0, 100)
        if num < 10:
            time.sleep(1)
            await app.sendGroupMessage(group, [Plain(text=random_words())])

    if random.randint(0, 100) < 30 and "At::target" not in message.toString():
        WORDS.append(message.toString())
예제 #15
0
파일: __init__.py 프로젝트: weearc/MiraiBot
async def execute(app: Mirai) -> None:
    delay = 10
    while True:
        targets = Database.load().__root__
        if not targets:
            await asyncio.sleep(delay)
            continue
        for target in targets:
            if target.groups:
                try:
                    await asyncio.sleep(delay)
                    resp = await getDynamicStatus(target.uid)
                    if resp:
                        footer = f"\n\n动态地址: https://t.bilibili.com/{resp.dynamic_id}"
                        EventLogger.info(
                            f'{target.name}动态更新:https://t.bilibili.com/{resp.dynamic_id}'
                        )
                        # noinspection PyTypeChecker,PydanticTypeChecker
                        components = [Plain(resp.msg)] + \
                                     [await app.uploadImage(
                                         'group', await Image.fromRemote(url)
                                     ) for url in resp.imgs] + \
                                     [Plain(footer)]
                        [
                            asyncio.create_task(
                                app.sendGroupMessage(group=group_id,
                                                     message=components))
                            for group_id in target.groups
                        ]
                except Exception as e:
                    EventLogger.error(f'动态检查出错:{target.name} {e}')
                    EventLogger.error(traceback.format_exc())
                    continue
예제 #16
0
async def aps_job(app: Mirai, msg: str, member: Member, isAll=False):
    if isAll:
        await app.sendGroupMessage(member.group, [AtAll(), Plain(text=msg)])
    else:
        await app.sendGroupMessage(
            member.group,
            [At(target=member.id), Plain(text=msg)])
예제 #17
0
파일: String.py 프로젝트: thx114/bot_irori
def 转电码(*attrs, **kwargs):
    global z2m, a2m
    msg = ' '.join(attrs).upper()

    conf = re.findall('''SPLIT=(.*?) ''', msg)
    split_symbol = '/'
    print(conf)
    if not conf:
        conf = re.findall('''SPLIT=(.*?)$''', msg)
        print(conf)
        if conf:
            split_symbol = conf[0]
            for i in conf:
                msg = msg.replace(f'''SPLIT={i}''', '')
    else:
        split_symbol = conf[0]
        for i in conf:
            msg = msg.replace(f'''SPLIT={i}''', '')

    msg = msg.replace(' ', '_')
    ans = []
    cmsg = msg
    for i in msg:
        if i in z2m:
            cmsg = cmsg.replace(i, '_' + z2m[i] + '_')
        elif i not in z2m and i not in a2m:
            return [Plain(f'不合法的字符:{i}')]
    # while '  ' in cmsg:
    #     cmsg = cmsg.replace('  ',' ')

    for i in cmsg:
        ans.append(a2m[i])

    return [Plain(split_symbol.join(ans))]
예제 #18
0
async def Main(app: Mirai, group: Group, member: Member, message: MessageChain,
               source: Source):
    m_id = message.getSource()
    m_text = message.toString()
    if m_text.startswith("pkg"):
        if m_text == "pkg":
            await app.sendGroupMessage(group, [Plain(text="使用pkg+空格+包名来使用!")])
            raise IndexError(message.toString())
        try:
            await app.sendGroupMessage(group, [Plain(text="正在搜索...请稍后...")])
            nn = await search(m_text[4:])
        except IndexError:
            await app.sendGroupMessage(group, [Plain(text="未找到此包!")])
        else:
            nnn = len(nn)
            if nnn > 2:
                nnnn = ""
                for i in range(nnn):
                    if i > 6:
                        break
                    nnnn += nn[i]["pkgname"] + "\n"
                await app.sendGroupMessage(group,
                                           [Plain(text="搜索到了多个包:\n%s" % nnnn)])
            else:
                text = tmp % (nn[0]["repo"], nn[0]["pkgname"], nn[0]["pkgver"],
                              nn[0]["pkgdesc"], nn[0]["last_update"],
                              nn[0]["url"])
                await app.sendGroupMessage(group, [Plain(text=text)])
예제 #19
0
파일: String.py 프로젝트: thx114/bot_irori
def 译电码(*attrs, **kwargs):
    global m2a
    msg = ' '.join(attrs).upper()

    conf = re.findall('''SPLIT=(.*?) ''', msg)
    split_symbol = '/'
    print(conf)
    if not conf:
        conf = re.findall('''SPLIT=(.*?)$''', msg)
        print(conf)
        if conf:
            split_symbol = conf[0]
            for i in conf:
                msg = msg.replace(f'''SPLIT={i}''', '')
    else:
        split_symbol = conf[0]
        for i in conf:
            msg = msg.replace(f'''SPLIT={i}''', '')

    msg = msg.replace(' ', '')
    ans = []
    for i in msg.split(split_symbol):
        if i not in m2a:
            return [Plain(f'不合法的电码:{i}')]
        ans.append(m2a[i])
    return [Plain(''.join(ans))]
예제 #20
0
async def event_gm(app: Mirai, gm: GroupMessage, group: Group, member: Member):
    async with aiohttp.ClientSession() as session:
        if str(type(gm.messageChain.__root__[1])) == "<class 'mirai.event.message.components.Plain'>":
            message = gm.messageChain.__root__[1].text
            if regex.compile('^#?(RWKK)?(?<keyword>.*)$', regex.I).match(message)[1] == 'RWKK':
                print('开始处理')
                keyword=regex.compile('^#?(RWKK)?(?<keyword>.*)$', regex.I).match(message)[2]
                if keyword == 'None':
    			    async with session.get('https://api.lolicon.app/setu/?apikey=408800685e6e285c17f744&size1200=true') as r:
                    data =await r.json()['data'][0]
                else:
    		        async with session.get('https://api.lolicon.app/setu/?apikey=408800685e6e285c17f744&size1200=true&keyword=' + keyword) as r:
                    data =await r.json()['data'][0]
                if await r.json()['code'] == '404':
                    await app.sendGroupMessage(group,[Plain(text='弟啊你XP咋那么奇怪啊?')])
                else:
                    pid =data.get('pid')
                    url = data.get('url')
                    title = data.get('title')
                    file = antishield(url, pid)
                    if file == '0':
                        await app.sendGroupMessage(group,[Plain(text='图片获取失败!')])
                    else:
                        await app.sendGroupMessage(group, [Plain(text=f'标题:{title},ID:{pid}')])
                        message1 = urllib.parse.quote(f'[CQ:image,file={url}]')
    		   			async with session.get(f"http://120.79.196.188:5700/send_group_msg?group_id={group.id}&message={message1}") as send:
                    	    if await send.json().get('status') == 'ok':
                        	    print('ok')
                                await asyncio.sleep(15)
                                async with session.get(f"http://120.79.196.188:5700/delete_msg?message_id={await send.json().get('data').get('message_id')}") as send1:
                                    print (send1.json())
예제 #21
0
파일: Spider.py 프로젝트: thx114/bot_irori
def 爬OEIS(*attrs, **kwargs):
    if attrs:
        for i in attrs[0].split(','):
            if not i.isdigit():
                return [Plain('输入格式需为半角逗号分隔的整数')]
            else:
                r = requests.get(
                    f'http://oeis.org/search?fmt=data&q={attrs[0]}')
                s = BeautifulSoup(r.text, 'html.parser')
                resp = []
                for i in s('table',
                           attrs={
                               'cellpadding': '0',
                               'cellspacing': '0',
                               'border': '0',
                               'width': '100%'
                           }):
                    try:
                        #print(i)
                        t1 = Plain('oeis.org' + i.tr.td.a['href'] + '\n')
                        t2 = Plain('$$$'.join(
                            list(i.next_sibling.next_sibling.tt.strings)) +
                                   '\n\n')
                        resp.append(t1)
                        resp.append(t2)
                    except:
                        pass
                return resp
    else:
        return [Plain('输入格式需为半角逗号分隔的整数')]
예제 #22
0
async def edit_config(app: Mirai, group: Group, member: Member,
                      message: MessageChain):
    if member.id in conf.get("permission", "operator"):
        try:
            _, segment, block, method, value = message.toString().split(" ")
        except ValueError:
            await app.sendGroupMessage(group, [At(member.id), Plain("参数不足")])
            return
        try:
            data = json.loads(value)
        except json.decoder.JSONDecodeError:
            data = value
        try:
            if method == "replace":
                conf.set(segment, block, data)
            elif method == "update":
                c = conf.get(segment, block)
                if isinstance(c, (list, tuple)):
                    c.append(data)
                elif isinstance(c, dict):
                    c.update(data)
            else:
                await app.sendGroupMessage(
                    group,
                    [At(member.id), Plain(f"未知方法:{method}")])
                return
            await app.sendGroupMessage(group, [At(member.id), Plain("修改成功")])
        except ValueError as e:
            await app.sendGroupMessage(
                group,
                [At(member.id), Plain(f"修改配置时发生错误:\n{e}")])
예제 #23
0
파일: String.py 프로젝트: thx114/bot_irori
def 编码base64(*attrs, **kwargs):
    try:
        return [
            Plain(text=str(base64.b64encode(bytes(i, 'utf-8'))) + '\n')
            for i in attrs
        ]
    except Exception as e:
        return [Plain(text=str(e))]
예제 #24
0
파일: app.py 프로젝트: wyapx/sabee_bot
async def repeat(app: Mirai, group: Group, member: Member, cp: CommandParser):
    args = cp.parse_with_valid(("Int", ("Int", "String")))  # count, content
    if isinstance(args, str):
        return await app.sendGroupMessage(group, [At(member.id), Plain(args)])
    if member.id not in admin and args[0][1] > 3:
        return await app.sendGroupMessage(group, [At(member.id), Plain("次数不能大于3")])
    for _ in range(args[0][1]):
        await app.sendGroupMessage(group, [Plain(str(args[1][1]))])
예제 #25
0
파일: function.py 프로젝트: GG-yuki/QQBot
def askSth(sender,question):
    return [
        At(target=sender),
        Plain(text="啧啧啧,都多大了,还不会百度嘛,不会的话谷歌也行啊\n"),
        Plain(text="什么?你说还不会?你可真是个小憨批呢\n"),
        Plain(text="没办法呢,就让聪明的我来帮帮你吧!\n"),
        Plain(text="https://baidu.sagiri-web.com/?%s"%question)
    ]
예제 #26
0
async def get_list(app: Mirai, group: Group, member: Member):
    if member.id in conf.get("permission", "operator"):
        await app.sendGroupMessage(group, [
            At(member.id),
            Plain("模块列表:"),
            Plain(json.dumps(conf.get("plugins", "active"), indent=2))
        ])
    else:
        await app.sendGroupMessage(group, [At(member.id), Plain("权限不足")])
예제 #27
0
def 营销生成器(*attrs,**kwargs):
    try:
        subject = attrs[0]
        event = attrs[1]
        event2 = attrs[2]
        synthesis = f'''{subject}{event}是怎么回事呢?{subject}相信大家都很熟悉,但是{subject}{event}是怎么回事呢,下面就让小编带大家一起了解吧。\r\n{subject}{event},其实就是{event2},大家可能会很惊讶{subject}怎么会{event}呢?但事实就是这样,小编也感到非常惊讶。\r\n这就是关于{subject}{event}的事情了,大家有什么想法呢,欢迎在评论区告诉小编一起讨论哦!'''
        return [Plain(synthesis)]
    except Exception as e:
        return [Plain(str(e))]
예제 #28
0
async def rm_modules(app: Mirai, group: Group, member: Member,
                     message: MessageChain):
    if member.id in conf.get("permission", "operator"):
        mp = message.toString().split(" ", 1)[1]
        conf.get("plugins", "active").remove(mp)
        await app.sendGroupMessage(
            group, [At(member.id), Plain("删除模块成功,将在下次重载生效")])
    else:
        await app.sendGroupMessage(group, [At(member.id), Plain("权限不足")])
예제 #29
0
async def active_list(app: Mirai, group: Group, member: Member):
    if member.id not in conf.get("permission", "operator"):
        await app.sendGroupMessage(group, [At(member.id), Plain("权限不足")])
        return
    await app.sendGroupMessage(group, [
        At(member.id),
        Plain("已激活群组:"),
        Plain(json.dumps(conf.get("active", "group_id"), indent=2))
    ])
예제 #30
0
 async def Noticer(g, mb, kotoba, delays):
     print('delay:', delays)
     if delays < 0:
         return
     await asyncio.sleep(delays)
     if g >= 2**39:
         await GLOBAL.app.sendGroupMessage(g - 2**39,
                                           [At(mb), Plain(kotoba)])
     else:
         await GLOBAL.app.sendFriendMessage(g, [Plain(kotoba)])