在 Node.js 中使用
引入依赖
Acidify 支持导出到 Kotlin/JS 平台,除了在 Maven Central 发布了 acidify-core-js 库之外,还在 NPM Registry 发布了供纯 JavaScript 开发者使用的 @acidify/core,包含了 Acidify 的核心功能的 JavaScript 实现,可以在 Node.js 16+ 环境中使用。可以通过以下命令在项目中引入:
npm install @acidify/core@acidify/core 包含完整的 TypeScript 类型定义,因此可以在 TypeScript 项目中使用。
使用示例
@acidify/core 包导出的类型和 API 与 Kotlin 版本的 acidify-core 基本保持一致,但在其他方面有一些重要的区别:
- 在使用 Kotlin 单例对象时(如
SimpleLogHandler),需要通过getInstance()方法来获取实例。 - 由于
kotlinx-coroutines并没有针对 JavaScript 平台提供类型定义,因此@acidify/core提供了一个简化的CoroutineScope包装类型,接收一个boolean表示该协程作用域是否为SupervisorJob,同时只暴露了一个方法cancel()用于取消协程作用域。 Bot没有暴露eventFlow属性,而是转而通过onXxx方法来注册事件处理器,同时提供了对应的offXxx方法来注销事件处理器。
以下是一个完整的 TypeScript 使用示例:
// 从文件中加载 SessionStore,如果文件不存在则创建一个空的 SessionStore
let sessionStore: SessionStore;
if (existsSync('session-store.json')) {
const data = await readFile('session-store.json', 'utf-8');
sessionStore = SessionStore.fromJson(data);
} else {
sessionStore = SessionStore.empty();
}
const scope = new CoroutineScope(true);
const signProvider = new UrlSignProvider(scope, '...');
// 创建 Bot 实例
const bot = await Bot.create(
await signProvider.getAppInfo()!,
sessionStore,
signProvider,
scope,
LogLevel.DEBUG,
SimpleLogHandler.getInstance()
);
bot.onSessionStoreUpdated(async (event) => {
await writeFile('session-store.json', event.sessionStore.toJson());
});
await bot.login();
await bot.sendGroupMessage(111111111n, async (b) => {
b.text('Hello, @acidify/core from Node.js!');
});
await bot.offline();
scope.cancel(); // 停止所有的协程,结束程序更多的使用说明请参考在 Kotlin 中使用。
最后更新于