有关Bot.getInstance()的提问
-
我目前重新开始写定时发消息功能的插件,依据前人讨论得知要用
bot = Bot.getInstance(xxxx).getGroup(xxxx)
来发送消息,但是经测试,输出Bot.instances时为空列表,这显然无法通过getInstance获取实例.
那么要怎样才能正确使用这个方法并发送消息? -
是console还是core
可以确保已经登录bot吗 -
返回的是执行那一瞬间的可用 bot, 返回 null 说明执行的时候并没有 bot 可用
-
开发console的插件,同样遇到了这个问题,已配置自动登录,但根据QQ号获取不到实例。
推测是插件执行顺序的原因,查看启动日志,发现是先加载插件,后登录QQ,可能这就是原因。
使用Thread.sleep()测试,发现onEnable()不结束,就不会登录QQ。 -
@imldy Console as-design
把代码移到BotOnlineEvent试一下 -
@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()); }); }