コード例 #1
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']))
コード例 #2
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'])
コード例 #3
0
ファイル: wikiPedia.py プロジェクト: 89461561511656/nonebot1
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)
コード例 #4
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()
コード例 #5
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))
コード例 #6
0
ファイル: jizicibot.py プロジェクト: ZeroAurora/Works
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))
コード例 #7
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')
コード例 #8
0
ファイル: zhihuTop.py プロジェクト: 89461561511656/nonebot1
async def zhihuTop(session: CommandSession):
    data = await get_zhTop()
    msg = ''
    for item in data:
        msg = msg + item['query'] + '\nurl:' + item['url'] + '\n'
    await session.send(MessageSegment.text(msg))
コード例 #9
0
ファイル: yiyan.py プロジェクト: 89461561511656/nonebot1
async def zhihuTop(session: CommandSession):
    msg = await get_yiyan()
    await session.send(MessageSegment.text(msg))
コード例 #10
0
async def kua(session: CommandSession):
    msg = await get_caihong()
    await session.send(MessageSegment.text(msg))
コード例 #11
0
async def translate(session: CommandSession):
    words = session.get('words', prompt='你想翻译什么句子呢?')
    report = await get_translate(words)
    await session.send(MessageSegment.text(report))
コード例 #12
0
async def joke(session: CommandSession):
    msg = await get_joke()
    await session.send(MessageSegment.text(msg))