Files
sh 2df13dad36 core: add custom data commands, fix groups parser (#6691)
* core: add custom data commands, fix groups parser

- Add APISetGroupCustomData and APISetContactCustomData to ChatCommand,
  with parsers (/_set custom #, /_set custom @) and processors
  following the APISetChatUIThemes pattern
- Fix APIListGroups parser missing space ("/_groups" -> "/_groups ")
  to align with auto-generated cmdString
- Add chatCommandsDocsData entries for APISetGroupCustomData,
  APISetContactCustomData, and APISetUserAutoAcceptMemberContacts

* core: named fields for codegen, run codegen

- Use named record fields for APISetGroupCustomData,
  APISetContactCustomData, APISetUserAutoAcceptMemberContacts
  (required for chatCommandsDocsData field resolution)
- Fix OnOff field name to "onOff" (avoids clash with User field)
- Remove APISetUserAutoAcceptMemberContacts from undocumentedCommands
- Regenerate COMMANDS.md and commands.ts

* nodejs: add ChatApi wrappers for custom data and apiGetChat

- apiSetGroupCustomData, apiSetContactCustomData
- apiSetAutoAcceptMemberContacts
- apiGetChat (manual wrapper, APIGetChat undocumented)
2026-03-19 09:10:19 +00:00
..
2026-01-15 16:36:35 +00:00

SimpleX Chat Node.js library

This library replaced now deprecated SimpleX Chat WebRTC TypeScript 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.4.4

Simple bot that replies with squares of numbers you send to it:

(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: {dbFilePrefix: "./squaring_bot", dbKey: ""},
    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:

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.

You can run it with: npx ts-node ./examples/squaring-bot.ts

Documentation

The library docs are here.

Library provides these modules:

  • bot: 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: 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: 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: useful functions for chat events and types.

This library uses @simplex-chat/types package with auto-generated bot API types.

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