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']))
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'])
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)
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()
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))
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))
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')
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))
async def zhihuTop(session: CommandSession): msg = await get_yiyan() await session.send(MessageSegment.text(msg))
async def kua(session: CommandSession): msg = await get_caihong() await session.send(MessageSegment.text(msg))
async def translate(session: CommandSession): words = session.get('words', prompt='你想翻译什么句子呢?') report = await get_translate(words) await session.send(MessageSegment.text(report))
async def joke(session: CommandSession): msg = await get_joke() await session.send(MessageSegment.text(msg))