MiraiForum

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

    想询问一下如何在mirai-console中主动去发送信息到群或者好友?

    开发交流
    2
    6
    598
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • KJZH001
      KJZH001 童心未泯 最后由 编辑

      从官方文档中可以了解到

      获取联系人对象
      Bot.getFriends(),Bot.getGroups() 等方法可以获取到对象列表。
      
      可通过 Bot.getFriend, Bot.getGroup,Bot.getStranger 以 QQ 号或群号主动获取某个对象。
      
      可以通过事件被动获取 (后文介绍)。
      

      这是属于mirai core部分的文档,也就是说我需要能够取得bot对象才行

      目前我在插件中单独定义了一个类,并且在插件加载时完成实列化对象,然后需要在这个对象中主动的去向特定的好友和群发送消息

      对于被动事件,我此前都是采用SimpleListenerHost来被动获取的,并且由于java和kt确实比较菜,所以想不到在插件里怎么主动拿到联系人对象去发消息

      请问我该如何取得联系人对象呢?谢谢

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

        //kotlin
        val bot = Bot.getInstance(114514L)
        val group = bot.getGroup(1919810L)
        //以此类推
        
        //java
        Bot bot = Bot.getInstance(114514L);
        Group group = bot.getGroup(1919810L);
        //以此类推
        
        KJZH001 1 条回复 最后回复 回复 引用 0
        • KJZH001
          KJZH001 童心未泯 @MrXiaoM 最后由 编辑

          @MrXiaoM 感谢,原来这样就行了啊

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

            不过现在的话又遇到了一个新的问题
            ···
            @Throws(IOException::class)
            override suspend fun handle(exchange: HttpExchange)
            ···
            idea提示sendmessage需要suspend,但是上面的这个被快速修复加上了suspend之后又产生了另外一个报错

            Conflicting overloads: public open suspend fun handle(exchange: HttpExchange): Unit defined in tech.moeworld.moekaicore.webHookHandler, public abstract fun handle(exchange: HttpExchange!): Unit defined in com.sun.net.httpserver.HttpHandler
            

            请问各位大佬们这个怎么解决呢?

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

              @KJZH001 重载冲突,tech.moeworld.moekaicore.webHookHandler 和 com.sun.net.httpserver.HttpHandler 里面有两个函数名相同,参数相同的函数,编译器不知道要重载哪个

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

                @MrXiaoM 感谢,不过别人给了我一个别的解决办法
                将那个出错的suspend去掉
                然后用下面的格式包装一下sendmessage就好了

                plugin.launch {
                 //send messages...
                }
                

                这也算是给后面来的人留下个答案吧(滑稽)

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