MiraiForum

    • 注册
    • 登录
    • 搜索
    • 热门
    • 最新
    • 未解决
    • 标签
    • 群组
    • 友情链接

    请教:如何写一个这样的复读机(自动提醒,和旧信息保留)

    开发交流
    4
    8
    574
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • K
      kixeb23099 最后由 编辑

      假如, 我们想复读机 可以 指令查询, 指令的结果 取决于是否有 新的消息, 如果没有新的消息,复读机就返回旧的 内容。例如

      甲: 天气,
      复读机:晴. #(因为这是最新的结果来自网络API)
      乙: 天气,
      复读机:晴. #(因为还是天晴没有发生改变)
      复读机:有太阳. #(复读机需要主动提醒, 因为有新的内容来自API)
      乙: 天气,
      复读机:有太阳. #(因为还是天晴没有发生改变)

      大大们这样的复读机, 需要如何造呢?

      1 条回复 最后回复 回复 引用 0
      • Samarium150
        Samarium150 童心未泯 最后由 编辑

        每次收到指令,bot都会查询API(假设API为HTTP),并记下查询者和查询结果,安排定时复查。到时间后或者有再次向API查询的指令则尝试获取更新,如果有更新,则对记录过的查询者发送更新。

        这样如何?

        K 1 条回复 最后回复 回复 引用 0
        • RainChan
          RainChan 摸鱼 最后由 编辑

          由于目前的天气API多半不支持主动推送数据的更改,所以只能用缓存解决问题。
          可以在第一次指令执行之后缓存结果,第二次执行直接取出结果发送;过一段时间时候缓存过期重新获取数据

          K 1 条回复 最后回复 回复 引用 0
          • K
            kixeb23099 @RainChan 最后由 编辑

            @rainchan 目前我们知道这个天晴API是有 自动推送API 功能的, 那么设计会有改变吗?

            1 条回复 最后回复 回复 引用 0
            • K
              kixeb23099 @Samarium150 最后由 编辑

              @samarium150 “并记下查询者和查询结果,安排定时复查。” 这个安排定时复查 不是很符合使用场景啊 . API 会自动提醒的呢。

              Samarium150 1 条回复 最后回复 回复 引用 0
              • RainChan
                RainChan 摸鱼 最后由 编辑

                有自动推送的话就不需要判断缓存是否过期了

                1 条回复 最后回复 回复 引用 0
                • Samarium150
                  Samarium150 童心未泯 @kixeb23099 最后由 编辑

                  @kixeb23099 有自动提醒就按websocket类似的方法处理囖

                  1 条回复 最后回复 回复 引用 0
                  • ryoii
                    ryoii 梦中的鸡翅 最后由 编辑

                    来自曾经redis缓存使用的经验

                    cache 开两个组。一个key 缓存了每个进行过查询的用户,一个key缓存api的查询结果。每次采集或接收到api数据变更,就对缓存的所有用户主动把新的消息推出去

                    • 缓存用户的key要设置过期时间
                    • api结果的缓存可以在每次查询的时候,也可以定时刷新,但在只要触发缓存刷新,就根据你缓存过的用户推消息

                    如果你的天气api可以主动推送,那很好。用户查直接读缓存,缓存更新时根据缓存发用户

                    1 条回复 最后回复 回复 引用 0
                    • 1 / 1
                    • First post
                      Last post
                    Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact