async def weather_handle(location: str = ArgPlainText()): """查询天气""" if not location: await weather_cmd.reject("要查询的城市名称不能为空呢,请重新输入!") weather_report = await get_weather_of_location(*location.split()) await weather_cmd.finish(weather_report)
async def handle_city(city: Message = Arg(), city_name: str = ArgPlainText("city")): if city_name not in ["北京", "上海"]: # 如果参数不符合要求,则提示用户重新输入 # 可以使用平台的 Message 类直接构造模板消息 await weather.reject(city.template("你想查询的城市 {city} 暂不支持,请重新输入!")) city_weather = await get_weather(city_name) await weather.finish(city_weather)
async def get_roll_input(input: str = ArgPlainText()) -> str: """检查输入是否能满足要求""" if not input: await roll_cmd.reject("ROLL 点方式不能为空呢,请重新输入") if not check_roll_syntax(input): await roll_cmd.reject("请输入正确的参数 ~>_<~") return input
async def get_door_number(door_number: str = ArgPlainText()) -> int: """获取门的数量""" if not door_number: await gate_cmd.reject("你什么都不输入我怎么知道呢,请告诉我有几个门!") if not door_number.isdigit(): await gate_cmd.reject("门的数量只能是数字!") number = int(door_number) if number not in [2, 3]: await gate_cmd.reject("暂时只支持两个门或者三个门的情况,请重新输入吧。") return number
async def _(matcher: Matcher, keyword: str = ArgPlainText(), state: T_State = State()): try: res = await get_board_name(keyword) except: logger.warning(traceback.format_exc()) await cc98.finish("出错了,请稍后再试") if res: board_name, score = res state["board_name"] = board_name if score >= 70: matcher.set_arg("confirm", Message("y")) else: await cc98.send(f"你要看的是不是[{board_name}]?\n[y]是 [其他]结束")
async def _( bot: Bot, event: GroupMessageEvent, state: T_State = State(), confirm: str = ArgPlainText(), ): board_name: str = state.get("board_name", "") if confirm not in ["y", "Y", "yes", "Yes", "是"]: await cc98.finish() try: topics = await get_topics(board_name) msgs = await print_topics(topics) except: logger.warning(traceback.format_exc()) await cc98.finish("出错了,请稍后再试") await send_forward_msg(bot, event, msgs)
async def _( bot: Bot, event: GroupMessageEvent, state: T_State = State(), topic_id: str = ArgPlainText(), ): page = 1 try: topic = await cc98_api.topic(topic_id) posts = await print_posts(topic, page) except: logger.warning(traceback.format_exc()) await show.finish("出错了,请稍后再试") state["topic"] = topic state["page"] = page msgs = [await str_to_message(post) for post in posts] await send_forward_msg(bot, event, msgs)
async def _( bot: Bot, event: GroupMessageEvent, state: T_State = State(), reply: str = ArgPlainText(), ): topic: dict = state.get("topic", {}) page: int = state.get("page", 1) reply_num = topic["replyCount"] + 1 if reply == "结束": await show.finish("会话已结束") elif reply == "+": if reply_num - page * 10 <= 0: await show.reject("当前已是最后一页") page += 1 elif reply == "-": if page == 1: await show.reject("当前已是第一页") page -= 1 elif reply.isdigit(): if not (1 <= int(reply) <= math.ceil(reply_num / 10)): await show.reject("请输入正确的页码") page = int(reply) else: await show.reject() try: posts = await print_posts(topic, page) except: logger.warning(traceback.format_exc()) await show.finish("出错了,请稍后再试") state["page"] = page msgs = [await str_to_message(post) for post in posts] await send_forward_msg(bot, event, msgs) await show.reject()
async def get_name(name: str = ArgPlainText()) -> str: if not name: await music_cmd.reject("歌曲名不能为空呢,请重新输入!") return name
async def arg_plain_text(key: str = ArgPlainText()) -> str: return key
async def bind_handle(event: PrivateMessageEvent, cookie: str = ArgPlainText()): set_cookie(event.user_id, cookie) await bind_cmd.finish("绑定成功!")