Closed NiceCatCoder closed 2 years ago
如果希望通过代码配置,可以参考 Core#快速开始 - 特定Bot注册 但是这时是使用Core模块,其与SpringBoot无任何关系也没有整合。
在spring boot中如果想要自定义注册一个bot(比如mirai组件的bot),可以参考:
@Component
public class Test implements ApplicationRunner {
// 任何启动完成后执行的方式
// love.forte.simbot.application.Application
@Autowired
private Application application;
@Override
public void run(ApplicationArguments args) throws Exception {
for (BotManager<?> manager : application.getBotManagers()) {
// 找到Mirai组件的botManager
if (manager instanceof MiraiBotManager) {
MiraiBotManager miraiBm = (MiraiBotManager) manager;
// 配置类
final MiraiBotConfiguration miraiBotConfiguration = new MiraiBotConfiguration();
// 配置撤回策略
miraiBotConfiguration.setRecallCacheStrategy(...);
// 配置其他mirai自身使用的原生配置类对象
miraiBotConfiguration.setInitialBotConfiguration(BotConfiguration.getDefault());
final Bot bot = miraiBm.register(123L, "password", miraiBotConfiguration);
// 启用bot
bot.startBlocking();
// bot.startAsync()
break;
}
}
}
}
需要注意,在注入使用 Application
的地方,不能存在监听函数
eh...抱歉,我还是习惯用v2版本
v2 参考这里 ,但是我已经忘记v2有没有完全自定义配置的方案了。
我现在有2点疑惑
你说的这个 defaultConfiguration 是在哪儿看到的
你看看 SimbotAppConfiguration.java 也许存在参考价值,虽然我忘了,但是貌似v2的spring boot starter部分是用Java写的
这里的 defaultConfiguration
并不是一个实际存在的默认值,他是一个可以为 null
的参数,如果没有指定则值为null,可以通过 SimbotApp.run(...)
指定
Solved!BotManager可以热注册Bot,至于自定义的配置,就只能另起炉灶了。
@SimbotApplication(@SimbotResource("bncat-robot-config.yml"))
public class BNCRobot {
private static final Logger LOGGER = LoggerFactory.getLogger(BNCRobot.class);
public static void main(String[] args) throws IOException, NoSuchFieldException, IllegalAccessException {
AnsiConsole.systemInstall();
SimbotContext context = SimbotApp.run(BNCRobot.class, args);
Bot bot = context.getBotManager().registerBot(BotVerifyInfo.withCodeVerification("794384470", "*"));
}
}
版本号
love.forte.simple-robot:component-mirai:2.4.0
疑问描述
我不知道如何编写Kotlin 我想在main函数里使用代码进行Simbot配置,但是我看不懂kotlin,就找不到方法(捂脸 defaultConfiguration这是一个疑似默认配置的变量,但我不如何反射拿到此Kotlin对象,每次都报错...