Exemplo n.º 1
0
async def command(chat_attrs: ChatAttribute, args: List):
    if not args:
        return False
    if len(args) != 2:
        return False

    dst_driver_name = args[0]
    dst_chat_id = int(args[1])

    dst_driver = driver_lookup_table.get(dst_driver_name)
    if not dst_driver:
        return

    assert isinstance(dst_driver, QQ.QQDriver)

    context = dict()
    if chat_attrs.chat_type == ChatType.UNSPECIFIED:
        return
    context['message_type'] = f"{chat_attrs.chat_type}"
    context['message'] = list()
    if chat_attrs.chat_type == ChatType.PRIVATE:
        context['user_id'] = dst_chat_id
    else:
        context[f'{chat_attrs.chat_type}_id'] = abs(dst_chat_id)

    for i in range(256):
        context['message'].append(MessageSegment.text(f'Emoji {i}: '))
        context['message'].append(MessageSegment.face(i))
        context['message'].append(MessageSegment.text('\n'))

    await dst_driver.bot.send(context, context['message'])
Exemplo n.º 2
0
async def setu(session: CommandSession):
    print('执行setu' + session.current_arg_text)
    res = ''
    code = 0
    if session.current_arg_text == '':
        src = get_random_src(option.get_option()['sql_dir'])
        res = '恭喜你获得老婆一只!'
        print(src)
        await session.send(MessageSegment.image(src), at_sender=True)
        await session.send(res, at_sender=True)
    else:
        s = session.current_arg_text
        if isnumber(s):
            num = int(session.current_arg_text)
            if num >= 10:
                await session.send('做人不能太贪心哦!', at_sender=True)
                num = 1
            for i in range(num):
                src = get_random_src(option.get_option()['sql_dir'])
                await session.send(MessageSegment.image(src), at_sender=True)
            res = '共计获得老婆' + str(num) + '只!'
            await session.send(res, at_sender=True)
        else:
            try:
                src = get_pic_from_sql(session.current_arg_text)
                res = '恭喜你获得' + session.current_arg_text.strip() + '老婆一只!'
            except Exception:
                src = get_random_src(option.get_option()['sql_dir'])
                res = '网络受到神秘的非物质力量干扰,故老婆丢失,这边给您换了一个'
            await session.send(MessageSegment.image(src), at_sender=True)
            await session.send(res, at_sender=True)
Exemplo n.º 3
0
async def _(session: CommandSession):
    # 若用户对机器人说“天气”,则此变量为 `['']`
    # 若用户对机器人说“天气 香港”,则此变量为 `['香港']`
    # 若用户对机器人说“天气 香港 详细”,则此变量为 `['香港', '详细']`
    args = session.current_arg_text.strip().split(' ', 1)
    if not args[0]:
        city = await session.aget(key='city',
                                  prompt='请问是什么城市呢?',
                                  at_sender=True)
    else:
        city = args[0]
    func = get_current_weather_short
    result = await func(city)
    if result['msg'] == 'success':
        data = result['data']
        cityname = data['cityname']
        temp = data['temp']
        weather = data['weather']
        pm25 = data['pm25']
        time = data['time']
        msg='天气数据最后更新时间:'+time+'\n'+'城市:'+cityname+'\n'+\
        '天气:'+weather+' '+temp+'℃\n'+'PM2.5:'+pm25+'μg/m3\n'
        await session.send(MessageSegment.text(msg))
    else:
        await session.send(MessageSegment.text(result['msg']))
Exemplo n.º 4
0
async def argue(event: Event):
    if event.group_id in ENABLED_GROUPS:
        msg = Message(event.message).extract_plain_text()
        if random() <= 0.001:
            reply: Message = MessageSegment.at(
                event.user_id) + MessageSegment.text("{}个头".format(msg[0]))
            await bot.send(event, reply)
            logger.info("怼人了!({} -> 群号 {})".format(str(reply), event.group_id))
Exemplo n.º 5
0
async def wikipedia(session: CommandSession):
    words = session.get('words', prompt='你想查询什么词条呢?')
    data = await get_wikipedia(words)
    if len(data) == 1:
        res = MessageSegment.text(data[0])
        await session.send(res)
    elif len(data) == 2:
        res = MessageSegment.text(data[0])
        img = MessageSegment.image(data[1])
        await session.send(res + img)
Exemplo n.º 6
0
    async def _chick_in():
        uid = session.ctx['sender']['user_id']

        if check_in_interval_judgment(uid):
            chick_in(uid)

            image = await get_image(uid)

            card = session.ctx.get('sender').get('_card')
            if card:
                text = chick_in_text(uid, card)
            else:
                nickname = session.ctx['sender']['nickname']
                text = chick_in_text(uid, nickname)

            image = ImageProcessing(image, text, 256, 'send')
            await image.save()

            bot = session.bot
            boo = await bot.can_send_image()
            boo = boo['yes']

            if not boo:
                await session.send(text)
            else:
                with open('./chick_image_cache/send.png', 'rb') as f:
                    base = base64.b64encode(f.read())
                img = MessageSegment.image(f'base64://{base.decode()}')
                await session.send(img)
        else:
            await session.send('您今天已经签到过了')
Exemplo n.º 7
0
async def _(session: CommandSession):
    hour: str = session.get('hour', prompt='您想几点运行,多个时间用逗号隔开')
    minute: str = session.get('minute', prompt='您想几分运行,多个时间用逗号隔开')
    cmd: str = session.get('cmd', prompt='请输入要运行的指令')
    cmd = cmd.strip('命令')  #Hoshino消息只处理一次,加上命令前缀防止触发命令
    session.event.raw_message = cmd
    session.event.message = Message(MessageSegment.text(cmd))
    try:
        global _running_jobs
        job = add_cron_job(task,
                           hour=hour,
                           minute=minute,
                           args=[session.event])
        _running_jobs.append(job)
        global _tasks

        #对event先处理,剔除由RexTrigger添加的match对象
        if 'match' in session.event:
            del session.event['match']

        _tasks['data'].append(
            dict({
                "id": job.id,
                "event": session.event,
                "hour": hour,
                "minute": minute
            }))
        save_config(_tasks, _task_path)
        await session.send('设置成功')
    except ValueError as ex:
        sv.logger.error(f'添加定时任务时出现异常{ex}')
        await session.send('参数错误,请重新设置')
    except:
        print_exc()
Exemplo n.º 8
0
async def twelve():
    logger.info("十二点了!")
    msg: Message = MessageSegment.image(
        "f29b5c32ad65cdbd38f097e6b5e314d4.image")
    for group in ENABLED_GROUPS:
        await bot.send_group_msg(group_id=group, message=msg)
        logger.info("报时已发送至群号 {}".format(group))
Exemplo n.º 9
0
async def help_(bot: Bot, event: Event, state: dict):
    if int(event.get_user_id()) != event.self_id:
        path_ = os.getcwd()
        path_ = path_ + '\help.png'
        mypath = 'file:///' + path_
        print(mypath)
        await bot.send(event=event, message=MessageSegment.image(mypath))
Exemplo n.º 10
0
async def pixivmale(bot, event):  # 提取pixiv男性向的图片
    data = feedparser.parse(config.rsshub + 'pixiv/ranking/day_male')
    id = random.randrange(0, len(data.entries))
    link = data.entries[id].link
    title = data.entries[id].title
    summary = data.entries[id].summary
    pattern = re.compile(r'src="(.*?)"', re.I)
    img = re.findall(pattern, summary)
    sendimg = MessageSegment.image(img[0])
    await bot.send(event, "标题:" + title + "\n" + link + "\n" + "原图发送~太慢就等等啦~")
    await bot.send(event, sendimg)


# 该api不可用
# async def pixivr18(bot, event):     # 提取pixivR18日榜榜的图片
#     if event.group_id in config.whilelst: #群组白名单
#         data = feedparser.parse(config.rsshub + 'pixiv/ranking/day_r18')
#         id = random.randrange(0, len(data.entries))
#         link = data.entries[id].link
#         title = data.entries[id].title
#         summary = data.entries[id].summary
#         pattern = re.compile(r'src="(.*?)"', re.I)
#         img = re.findall(pattern,summary)
#         sendimg = MessageSegment.image(img[0])
#         await bot.send(event, "标题:" + title + "\n" + link + "\n" + "原图发送~太慢就等等啦~")
#         await bot.send(event, sendimg)
#     else:
#         await bot.send(event, "だめですよ~")
Exemplo n.º 11
0
async def pixiv_analysis(session: CommandSession):
    # await session.send('功能修复中.')
    bot = get_bot()
    reg = session.current_arg_text
    # seq = MessageSegment.image(os.getcwd()+'\\pixdata\\0.jpg')
    # await bot.send_group_msg(group_id=debug_group, message=seq)

    # try:
    # await bot.send_group_msg(group_id=debug_group,
    #  message='[CQ:image,file=https://img.cheerfun.dev:233/c/540x540_70/img-master/img/2019/12/26/10/47/03/78484613_p0_master1200.jpg]')
    #  message='[CQ:image,file=https://img.cheerfun.dev:233/c/540x540_70/img-master/img/2019/12/26/10/47/03/78484613_p0_master1200.jpg]')
    # except CQHttpError as e:
    # print(e)

    if not reg:
        await session.send('未输入搜索关键词.')
    await bot.send_group_msg(group_id=debug_group, message='p站搜索中,tag:' + reg)
    await session.send("当前参数: 查找%d张图片,搜索页数%d,最低收藏数%d,正在搜索..." %
                       (num, page, bookmark))
    datas = searchByTag(reg, num, page, bookmark)
    # print(ill)
    if not datas:
        await session.send('未搜索到图片或网络错误.')
    else:
        await session.send('搜索到%d组图片.' % len(datas))
    for data in datas:
        await session.send(data[0])
        for i in range(1, len(data)):
            seq = MessageSegment.image(os.getcwd() + '\\pixdata\\' + data[i])
            try:
                await session.send(seq)
            except CQHttpError as e:
                print(e)
            sleep(2)
Exemplo n.º 12
0
async def garbageSort(session: CommandSession):
    args = session.current_arg_text.strip().split(' ', 1)
    if not args[0]:
        keyword = await session.aget(key='city', prompt='请问是什么物品呢?', at_sender=True)
    else:
        keyword = args[0]
    result = await get_garbageSort(keyword)
    await session.send(MessageSegment.text(result))
Exemplo n.º 13
0
async def cmd50_(bot: Bot, event: Event):
    if int(event.get_user_id()) != event.self_id:
        path_ = os.getcwd()
        path_ = path_ + '\yuyinbao\你个大叔,怎么那么坏,老是要看这看那的.mp3'
        mypath = 'file:///' + path_
        print(mypath)
        sst = MessageSegment.record(file=str(mypath))
        await bot.send(event=event, message=Message(sst))
Exemplo n.º 14
0
async def cmd27_(bot: Bot, event: Event):
    if int(event.get_user_id()) != event.self_id:
        path_ = os.getcwd()
        path_ = path_ + '\yuyinbao\就算搞基我也只做攻 就是把你压在身下那种。.mp3'
        mypath = 'file:///' + path_
        print(mypath)
        sst = MessageSegment.record(file=str(mypath))
        await bot.send(event=event, message=Message(sst))
Exemplo n.º 15
0
async def cmd6_(bot: Bot, event: Event):
    if int(event.get_user_id()) != event.self_id:
        path_ = os.getcwd()
        path_ = path_ + '\yuyinbao\。哎呀好的啦 小哥哥不要生气了嘛.mp3'
        mypath = 'file:///' + path_
        print(mypath)
        sst = MessageSegment.record(file=str(mypath))
        await bot.send(event=event, message=Message(sst))
Exemplo n.º 16
0
async def WZ_(bot: Bot, event: Event, state: dict):
    if int(event.get_user_id()) != event.self_id:
        await bot.send(event=event,
                       message=MessageSegment(type_='video',
                                              data=({
                                                  'file':
                                                  str(await get_DSP())
                                              })))
Exemplo n.º 17
0
async def _():
    bot = nonebot.get_bot()
    record = MessageSegment.record("ATOS/AOTS.mp3")
    try:
        await bot.send_group_msg(group_id=请在此输入群号, message=record)
        await bot.send_group_msg(group_id=请在此输入群号,
                                 message=f'G114514次列车即将进站,请工作人员做好接车准备')
    except CQHttpError:
        pass
Exemplo n.º 18
0
async def handle_YY(bot: Bot, event: Event, state: dict):
    yuying = state["yuying"]
    huan = str(get_yuying(yuying))
    huan = huan.replace('\n', '')
    await bot.send(event=event,
                   message=MessageSegment(type_='record',
                                          data=({
                                              'file': huan
                                          })))
Exemplo n.º 19
0
Arquivo: demo.py Projeto: x-dmp/qqbot
async def setu(session: CommandSession):
    print('执行setu' + session.current_arg_text)
    res = ''
    code = 0
    if session.current_arg_text == '':
        src = get_pic_from_local()
        res = '恭喜你获得老婆一只!'
        await session.send(MessageSegment.image(src), at_sender=True)
        await session.send(res, at_sender=True)
    else:
        s = session.current_arg_text
        if isnumber(s):
            num = int(session.current_arg_text)
            if num >= 10:
                await session.send('做人不能太贪心哦!', at_sender=True)
                num = 1
            for i in range(num):
                src = get_pic_from_local()
                await session.send(MessageSegment.image(src), at_sender=True)
            res = '共计获得老婆' + str(num) + '只!'
            await session.send(res, at_sender=True)
        else:
            try:
                code, src, quota = get_pic(r18=0,
                                           keyword=session.current_arg_text)
                if code == 0:
                    res = '恭喜你获得' + session.current_arg_text.strip() + '老婆一只!'
                else:
                    src = get_pic_from_local()
                    if code == -1:
                        print('api内部错误')
                    elif code == 401:
                        print('由于不规范的操作而被拒绝调用')
                    elif code == 403:
                        print('找不到符合关键字的色图')
                    elif code == 429:
                        print('达到调用额度限制')
                await session.send('剩余服务次数:' + str(quota))
            except Exception:
                src = get_pic_from_local()
                res = '网络受到神秘的非物质力量干扰,故老婆丢失,这边给您换了一个'
            await session.send(MessageSegment.image(src), at_sender=True)
            await session.send(res, at_sender=True)
Exemplo n.º 20
0
    async def _send(self, to_chat: int, chat_type: ChatType, message: UnifiedMessage):
        """
        :return:
        """
        self.logger.debug('begin processing message')
        context = dict()
        if chat_type == ChatType.UNSPECIFIED:
            self.logger.warning(f'Sending to undefined group or chat {to_chat}')
            return

        context['message_type'] = f'{chat_type}'
        context['message'] = list()
        if message.image:
            image_name = os.path.basename(message.image)
            context['message'].append(MessageSegment.image(image_name))

        if (chat_type == ChatType.PRIVATE and self.config.NameforPrivateChat) or \
                (chat_type in (ChatType.GROUP, ChatType.DISCUSS) and self.config.NameforGroupChat):
            # name logic
            if message.chat_attrs.name:
                context['message'].append(MessageSegment.text(message.chat_attrs.name))
            if message.chat_attrs.reply_to:
                context['message'].append(MessageSegment.text(' (➡️️' + message.chat_attrs.reply_to.name + ')'))
            if message.chat_attrs.forward_from:
                context['message'].append(MessageSegment.text(' (️️↩️' + message.chat_attrs.forward_from.name + ')'))
            if message.chat_attrs.name:
                context['message'].append(MessageSegment.text(': '))

            # at user
            if message.send_action.user_id:
                context['message'].append(MessageSegment.at(message.send_action.user_id))
                context['message'].append(MessageSegment.text(' '))

        context['message'].append(MessageSegment.text(message.text))

        if chat_type == ChatType.PRIVATE:
            context['user_id'] = to_chat
        else:
            context[f'{chat_type}_id'] = to_chat
        self.logger.debug('finished processing message, ready to send')
        result = await self.bot.send(context, context['message'])
        if message.chat_attrs:
            set_egress_message_id(src_platform=message.chat_attrs.platform,
                                  src_chat_id=message.chat_attrs.chat_id,
                                  src_chat_type=message.chat_attrs.chat_type,
                                  src_message_id=message.chat_attrs.message_id,
                                  dst_platform=self.name,
                                  dst_chat_id=to_chat,
                                  dst_chat_type=chat_type,
                                  dst_message_id=result.get('message_id'),
                                  user_id=self.config.Account)
        self.logger.debug('finished sending')
        return result.get('message_id')
Exemplo n.º 21
0
async def _():
    bot = nonebot.get_bot()
    i = str(random.randint(1, 130))
    record = MessageSegment.record("melody/" + i + ".mp3")
    try:
        await bot.send_group_msg(group_id=请在此输入群号, message=f'G114514次列车即将发车')
        await bot.send_group_msg(group_id=请在此输入群号, message=record)
        await bot.send_group_msg(group_id=请在此输入群号, message=f'车门即将关闭,请注意安全!')
    except CQHttpError:
        pass
Exemplo n.º 22
0
async def pixivday(bot, event):  # 提取pixiv日榜的图片
    data = feedparser.parse(config.rsshub + 'pixiv/ranking/day')
    id = random.randrange(0, len(data.entries))
    link = data.entries[id].link
    title = data.entries[id].title
    summary = data.entries[id].summary
    pattern = re.compile(r'src="(.*?)"', re.I)
    img = re.findall(pattern, summary)
    sendimg = MessageSegment.image(img[0])
    await bot.send(event, "标题:" + title + "\n" + link + "\n" + "原图发送~太慢就等等啦~")
    await bot.send(event, sendimg)
Exemplo n.º 23
0
def get_downloaded_image_path(response: dict, path: str):
    url = response['url']
    image_response = requests.get(url, stream=True)
    image_response.raise_for_status()
    path = f'{path}/{response["filename"]}'
    if not os.path.exists(path):
        with open(path, 'wb') as file:
            file.write(image_response.content)

    resp = str(MessageSegment.image(f'file:///{path}'))
    return resp
Exemplo n.º 24
0
async def epicfree(bot, event):
    data = feedparser.parse(config.rsshub + 'epicgames/freegames')
    for i in range(0, len(data.entries)):
        title = data.entries[i].title
        summary = data.entries[i].summary
        link = data.entries[i].link
        pattern = re.compile(r'src="(.*?)"', re.I)
        img = re.findall(pattern, summary)
        sendimg = MessageSegment.image(img[0])
        await bot.send(event,
                       sendimg + "\n" + "游戏名:" + title + "\n" + "链接:" + link)
Exemplo n.º 25
0
async def zaobao():
    (bot, ) = nonebot.get_bots().values()
    text = await get_zaobao()
    text.replace('\n', '')
    for id in group_id_list:
        await bot.send_msg(message_type="group",
                           group_id=int(id),
                           message='早上好,兄弟萌☀\n━━━━━━━━\n60s读懂世界\n' +
                           MessageSegment.image(text))
        await bot.send_msg(message_type="group",
                           group_id=int(id),
                           message=str(get_today()))
Exemplo n.º 26
0
async def setu(bot, event):
    if event.group_id in config.whilelst:  #群组白名单
        id = random.randrange(12, 131)
        url = config.url + "%d" % id
        res = requests.get(url=url)
        pic = json.loads(res.content)['data']
        await bot.send(event, "" + pic['title'] + "\n" + "url:" + pic['url'])
        img = MessageSegment.image("https://pixiv.cat/%d" % pic['pid'] +
                                   ".jpg")
        await bot.send(event, img)
    else:
        await bot.send(event, "您配吗?")
Exemplo n.º 27
0
async def pixivmonth(bot, event):  # 提取pixiv月榜的图片
    data = feedparser.parse(config.rsshub + 'pixiv/ranking/month')
    id = random.randrange(0, len(data.entries))
    link = data.entries[id].link
    title = data.entries[id].title
    summary = data.entries[id].summary
    pattern = re.compile(r'src="(.*?)"', re.I)
    img = re.findall(pattern, summary)
    await bot.send(event, "标题:" + title + "\n" + link + "\n" + "原图发送~太慢就等等啦~")
    # sendimg = MessageSegment.image(img[0])
    sendimg = MessageSegment.image(
        'https://cdn.jsdelivr.net/gh/tydaytygx/NA/NA_icon_report_1080_.png')
    await bot.send(event, sendimg)
Exemplo n.º 28
0
async def kaw(bot, event):  # 提取Konachan Anime Wallpapers日榜的图片
    if event.group_id in config.whilelst:  #群组白名单
        data = feedparser.parse(config.rsshub +
                                'konachan/post/popular_recent/1d')
        id = random.randrange(0, len(data.entries))
        link = data.entries[id].link
        title = data.entries[id].title
        summary = data.entries[id].summary
        pattern = re.compile(r'src="(.*?)"', re.I)
        img = re.findall(pattern, summary)
        await bot.send(event, "tag:" + title + "\n" + link)
        sendimg = MessageSegment.image(img[0])
        await bot.send(event, sendimg)
    else:
        await bot.send(event, "您配吗?")
Exemplo n.º 29
0
async def tawawa(session: CommandSession):
    qq_number = '10000'  # todo it should be catch from session
    await session.send('功能暂时不可用')
    try:
        msg, ok, no = action.start(qq_number)
        log.write([msg, ok, no])
        if ok is False:
            await session.send(msg)
        else:
            prev_msg = '现在发送第' + str(no) + '话'
            await session.send(prev_msg)

            b64_str = get_b64_content(msg)
            seg = MessageSegment.image(b64_str)
            await session.send(seg)
    except Exception as e:
        log.write(e)
        await session.send('发生了些小小的错误呢')
Exemplo n.º 30
0
async def ph_(bot: Bot, event: Event, state: dict):
    if event.get_user_id != event.self_id:
        print(str(event.message))
        ch = str(event.message)
        i = 0
        ss = [' '] * 2
        for it in ch.split(' '):
            if i == 2:
                break
            ss[i] = it
            i = i + 1
        ph_generator(str(ss[0]), str(ss[1]))
        path_ = os.getcwd()
        path_ = path_ + '\ph.png'
        mypath = 'file:///' + path_
        print(mypath)
        sst = MessageSegment.image(file=str(mypath))  #(file = str(mypath))
        await bot.send(event=event, message=Message(sst))