MiraiForum

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

    已解决 如何实现监听器在一定时间内或接收指令一定次数后停止监听

    开发交流
    3
    5
    428
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 珂朵莉-诺塔-瑟尼欧里斯
      珂朵莉-诺塔-瑟尼欧里斯 最后由 编辑

      问题背景:想在群内实现2-5的小游戏,开局需要匹配参与人。群友需要对bot私聊(非好友为群临时会话消息,好友为好友消息?)发送指令参与。
      开始时,一个人@bot表示开始,这时开始监听,群友私聊发送指令参与,参与人达到5人或者10秒后停止监听。
      大佬们,这该如何实现,欧内该

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

        使用:
        EventChannel.subscribe:监听事件并自行觉得何时停止
        EventChannel.subscribeAlways:一直监听事件
        EventChannel.subscribeOnce:只监听一次事件

        参考https://docs.mirai.mamoe.net/Events.html#限制作用域

        珂朵莉-诺塔-瑟尼欧里斯 1 条回复 最后回复 回复 引用 0
        • 珂朵莉-诺塔-瑟尼欧里斯
          珂朵莉-诺塔-瑟尼欧里斯 @RainChan 最后由 编辑

          @rainchan 行吧,我去试试看能不能解决

          1 条回复 最后回复 回复 引用 0
          • Karlatemp
            Karlatemp 最后由 编辑

            以下是几种结束监听的方式

            var counter = 0
            val listener = [EventChannel].subscribe<***Event> {
                if () {
                    counter ++
                    return if (counter > 5) ListeningStatus.STOPPED else ListeningStatus.LISTENING
                }
                return ListeningStatus.LISTENING
            }
            delay(10000) // 10s
            listener.complete() // Cancel listener
            
            珂朵莉-诺塔-瑟尼欧里斯 1 条回复 最后回复 回复 引用 0
            • 珂朵莉-诺塔-瑟尼欧里斯
              珂朵莉-诺塔-瑟尼欧里斯 @Karlatemp 最后由 编辑

              @karlatemp 谢谢大佬!

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