MiraiForum

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

    有关Bot.getInstance()的提问

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

      我目前重新开始写定时发消息功能的插件,依据前人讨论得知要用

      bot = Bot.getInstance(xxxx).getGroup(xxxx)
      

      来发送消息,但是经测试,输出Bot.instances时为空列表,这显然无法通过getInstance获取实例.
      那么要怎样才能正确使用这个方法并发送消息?

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

        是console还是core
        可以确保已经登录bot吗

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

          返回的是执行那一瞬间的可用 bot, 返回 null 说明执行的时候并没有 bot 可用

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

            开发console的插件,同样遇到了这个问题,已配置自动登录,但根据QQ号获取不到实例。
            推测是插件执行顺序的原因,查看启动日志,发现是先加载插件,后登录QQ,可能这就是原因。
            使用Thread.sleep()测试,发现onEnable()不结束,就不会登录QQ。

            Nambers 1 条回复 最后回复 回复 引用 0
            • Nambers
              Nambers 摸鱼 @imldy 最后由 编辑

              @imldy Console as-design
              把代码移到BotOnlineEvent试一下

              I 1 条回复 最后回复 回复 引用 0
              • I
                imldy @Nambers 最后由 imldy 编辑

                @nambers 感谢,已测试,可行。

                代码如下:

                @Override
                public void onEnable() {
                    getLogger().info("Plugin loaded!");
                    GlobalEventChannel.INSTANCE.subscribeAlways(BotOnlineEvent.class, event -> {
                        Bot bot = Bot.getInstance(qqLong);
                        EventChannel<BotEvent> eventChannel = bot.getEventChannel();
                        eventChannel.registerListenerHost(new Handler());
                    });
                }
                
                1 条回复 最后回复 回复 引用 0
                • 1 / 1
                • First post
                  Last post
                Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact