Example #1
0
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)
Example #2
0
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)
Example #3
0
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
Example #4
0
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
Example #5
0
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]是 [其他]结束")
Example #6
0
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)
Example #7
0
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)
Example #8
0
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()
Example #9
0
async def get_name(name: str = ArgPlainText()) -> str:
    if not name:
        await music_cmd.reject("歌曲名不能为空呢,请重新输入!")
    return name
Example #10
0
async def arg_plain_text(key: str = ArgPlainText()) -> str:
    return key
Example #11
0
async def bind_handle(event: PrivateMessageEvent,
                      cookie: str = ArgPlainText()):
    set_cookie(event.user_id, cookie)
    await bind_cmd.finish("绑定成功!")