mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-03-30 14:15:55 +00:00
* 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)
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.