MiraiForum

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

    未解决 【求助】突然无法监听到事件

    使用交流
    2
    9
    593
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • N
      N70_ 最后由 N70_ 编辑

      事件监听代码如下:

      override fun onEnable() {
          val channel = GlobalEventChannel
          val nudge = channel.filter { it is NudgeEvent }
          val memberJoin = channle.filter { it is MemberJoinEvent }
          memberJoin.subscribeAlways<MemberJoinEvent> { event ->
              (here is some code)
          }
          nudge.subscribeAlways<NudgeEvent> { event ->
              (here is some code)
          }
      

      当有新成员加入或者有人触发戳一戳时,不执行对应动作,控制台也没有事件触发的提示

      1 条回复 最后回复 回复 引用 0
      • Topic has been marked as a question  N N70_ 
      • N
        N70_ 最后由 编辑

        下载了其他人做好的戳一戳插件源码编译之后发现同样是无法收到事件

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

          安卓手表协议无法收到戳一戳事件
          请检查是否为改协议

          N 1 条回复 最后回复 回复 引用 0
          • N
            N70_ @cssxsh 最后由 编辑

            @cssxsh 感谢大佬回复,还想请教一下,安卓手表协议是否还有其他不支持的事件类型?在上面那段代码中,不只是戳戳事件,其他的事件(比如成员入群退群)似乎也无法监听的到

            cssxsh 1 条回复 最后回复 回复 引用 0
            • cssxsh
              cssxsh @N70_ 最后由 编辑

              @N70_
              你为什么不看看官方文档呢

              N 2 条回复 最后回复 回复 引用 0
              • N
                N70_ 最后由 编辑

                此回复已被删除!
                1 条回复 最后回复 回复 引用 0
                • N
                  N70_ @cssxsh 最后由 编辑

                  @cssxsh
                  我在文档中找到了这样的描述
                  Android 手机. 所有功能都支持.
                  Android 平板. 注意: 不支持戳一戳事件解析
                  Android 手表.
                  或许还有更详细的描述,我再去翻翻event那部分吧
                  因为有时候我需要切换到机器人登录的QQ号上处理一些事,所以我都是使用安卓手表的协议。但是问题提出的前一天机器人还是可以监听到新成员入群的事件的来着……

                  1 条回复 最后回复 回复 引用 0
                  • N
                    N70_ @cssxsh 最后由 编辑

                    @cssxsh
                    在BotConfiguration.kt中找到了下面的代码

                        /** 使用协议类型 */
                        public var protocol: MiraiProtocol
                    
                        public enum class MiraiProtocol {
                            /**
                             * Android 手机. 所有功能都支持.
                             */
                            ANDROID_PHONE,
                    
                            /**
                             * Android 平板.
                             *
                             * 注意: 不支持戳一戳事件解析
                             */
                            ANDROID_PAD,
                    
                            /**
                             * Android 手表.
                             */
                            ANDROID_WATCH,
                    
                            /**
                             * iPad - 来自MiraiGo
                             *
                             * @since 2.8
                             */
                            IPAD,
                    
                            /**
                             * MacOS - 来自MiraiGo
                             *
                             * @since 2.8
                             */
                            MACOS,
                    
                        }
                    

                    在MemberJoinEvent找到以下代码

                    /**
                     * 成员已经加入群的事件
                     */
                    public sealed class MemberJoinEvent(
                        public override val member: NormalMember
                    ) : GroupMemberEvent, BotPassiveEvent, Packet,
                        AbstractEvent(), GroupMemberInfoChangeEvent {
                        /**
                         * 被邀请加入群
                         */
                        public data class Invite @MiraiInternalApi constructor(
                            public override val member: NormalMember,
                            /**
                             * 邀请者
                             */
                            public val invitor: NormalMember
                        ) : MemberJoinEvent(member) {
                            public override fun toString(): String = "MemberJoinEvent.Invite(member=${member.id}, invitor=${invitor.id})"
                        }
                    
                        /**
                         * 成员主动加入群
                         */
                        public data class Active @MiraiInternalApi constructor(
                            public override val member: NormalMember
                        ) : MemberJoinEvent(member) {
                            public override fun toString(): String = "MemberJoinEvent.Active(member=${member.id})"
                        }
                    
                        /**
                         * 原群主通过 https://huifu.qq.com/ 恢复原来群主身份并入群,
                         * 此时 [member] 的 [Member.permission] 肯定是 [MemberPermission.OWNER]
                         */
                        public data class Retrieve @MiraiInternalApi constructor(
                            public override val member: NormalMember
                        ) : MemberJoinEvent(member) {
                            override fun toString(): String = "MemberJoinEvent.Retrieve(member=${member.id})"
                        }
                    }
                    

                    没有找到关于协议类型能够/不能收到的事件列表或者事件支持/不支持的协议描述……

                    cssxsh 1 条回复 最后回复 回复 引用 0
                    • cssxsh
                      cssxsh @N70_ 最后由 编辑

                      @N70_ 那就开issue 问

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