Files
simplex-chat/packages/simplex-chat-nodejs/README.md
T
sh 0ff297b3b7 simplex-chat-nodejs: bump types and nodejs vesions (#6884)
* simplex-chat-nodejs: bump types and nodejs vesions

* update README
2026-04-25 11:47:41 +01:00

131 lines
4.3 KiB
Markdown

# SimpleX Chat Node.js library
This library replaced now deprecated [SimpleX Chat WebRTC TypeScript client](https://www.npmjs.com/package/@simplex-chat/webrtc-client).
## Use cases
- chat bots: you can implement any logic of connecting with and communicating with SimpleX Chat users. Using chat groups a chat bot can connect SimpleX Chat users with each other.
- control of the equipment: e.g. servers or home automation. SimpleX Chat provides secure and authorised connections, so this is more secure than using rest APIs.
- any scenarios of scripted message sending.
- chat and chat-based interfaces.
Please share your use cases and implementations.
## Quick start: a simple bot
```
npm i simplex-chat@6.5.0-beta.10
```
Simple bot that replies with squares of numbers you send to it:
```javascript
(async () => {
const {bot} = await import("simplex-chat")
// if you are running from this GitHub repo:
// const {bot} = await import("../dist/index.js")
const [chat, _user, _address] = await bot.run({
profile: {displayName: "Squaring bot example", fullName: ""},
dbOpts: {type: "sqlite", filePrefix: "./squaring_bot"},
options: {
addressSettings: {welcomeMessage: "Send a number, I will square it.",
},
onMessage: async (ci, content) => {
const n = +content.text
const reply = typeof n === "number" && !isNaN(n)
? `${n} * ${n} = ${n * n}`
: `this is not a number`
await chat.apiSendTextReply(ci, reply)
}
})
})()
```
If you installed this package as dependency, you can run this example with:
```sh
node ./node_modules/simplex-chat/examples/squaring-bot-readme.js
```
If you run it on Mac, the first time it will take 20-30 seconds for MacOS to verify the library.
If you cloned this repository, you can:
```
cd ./packages/simplex-chat-nodejs
npm install
npm run build
node ./examples/squaring-bot-readme.js
```
There is an example with more options in [./examples/squaring-bot.ts](./examples/squaring-bot.ts).
You can run it with: `npx ts-node ./examples/squaring-bot.ts`
## PostgreSQL backend
By default, the package uses SQLite. To use PostgreSQL instead:
```bash
npm install simplex-chat --simplex_backend=postgres
```
Or persist the setting in `.npmrc`:
```ini
simplex_backend=postgres
```
### Prerequisites (PostgreSQL)
- `libpq5` must be installed on the host system (`apt install libpq5` on Debian/Ubuntu)
- PostgreSQL backend is only available for Linux x86_64
- A PostgreSQL server accessible via connection string
### Passing PostgreSQL connection
The `DbConfig` type is a discriminated union — pick the variant that matches
the backend you installed:
```ts
// SQLite (default)
dbOpts: {type: "sqlite", filePrefix: "./data/bot"}
// optional: encryptionKey: "<sqlcipher-key>"
// PostgreSQL
dbOpts: {
type: "postgres",
connectionString: "postgres://user:pass@host/db",
// schemaPrefix: "bot", // optional — defaults to "simplex_v1"
}
```
## Documentation
The library docs are [here](./docs/README.md).
Library provides these modules:
- [bot](./docs/Namespace.bot.md): a simple declarative API to run a chat-bot with a single function call. It automates creating and updating of the bot profile, address and bot commands shown in the app UI.
- [api](./docs/Namespace.api.md): an API to send chat commands and receive chat events to/from chat core. You need to use it in bot event handlers, and for any other use cases.
- [core](./docs/Namespace.core.md): a low level API to the core library - the same that is used in desktop clients. You are unlikely to ever need to use this module directly.
- [util](./docs/Namespace.util.md): useful functions for chat events and types.
This library uses [@simplex-chat/types](https://www.npmjs.com/package/@simplex-chat/types) package with auto-generated [bot API types](../../bots/api/README.md).
## Supported chat functions
Library provides types and functions to:
- create and change user profile (although, in most cases you can do it manually, via SimpleX Chat terminal app).
- create and accept invitations or connect with the contacts.
- create and manage long-term user address, accepting connection requests automatically.
- send, receive, delete and update messages, and add message reactions.
- create, join and manage group.
- send and receive files.
- etc.
## License
[AGPL v3](./LICENSE)