@axrxvm/achat.js
v0.1.0
Published
Achat bot SDK inspired by discord.js ergonomics.
Maintainers
Readme
achat.js
Achat bot SDK with discord.js-style ergonomics for both tiny bots and large multi-room deployments.
What you get
Clientclass with WS + HTTP fallback- Auto room-join lifecycle (
pending/memberaware) - Command registry (
!pingstyle) - Middleware pipeline (
ctx, next) for auth/routing/rate-limits - Configurable message concurrency for high-volume rooms
- REST wrapper for bot/user/room/message endpoints
Install
npm i achat.js socket.io-client@^2.3.0Or in this repo, consume locally:
const { Client, Events } = require("./achat.js");Quickstart
const { Client, Events } = require("achat.js");
const client = new Client({
baseUrl: process.env.ACHAT_API_BASE_URL || "http://localhost:8070",
commands: { prefix: "!" }
});
client.on(Events.Ready, user => {
console.log(`Ready as ${user.displayName} (${user.id})`);
});
client.command({
name: "ping",
execute: async ({ reply }) => {
await reply("pong");
}
});
client.login(process.env.ACHAT_BOT_TOKEN);Small bot pattern
- Keep default settings
- Register commands with
client.command(...) - Add 1-2 middleware handlers if needed
Use example: achat.js/examples/basic-bot.js
Large bot pattern
- Set
messageConcurrencyhigher - Use middleware for room sharding / pre-filtering
- Use
client.setRooms([...])to pin room ownership - Run multiple workers with shard env vars
Use example: achat.js/examples/scaled-bot.js
Core API
Constructor
const client = new Client({
token,
baseUrl,
rooms: ["7463", "8421"],
autoJoinRooms: true,
messageConcurrency: 8,
commands: {
enabled: true,
prefix: "!",
prefixResolver: ctx => "!"
}
});Frequently used methods
client.login(token)client.refresh()client.joinRoom(roomId)client.send(roomId, text)client.edit(roomId, messageId, text)client.delete(roomId, messageId)client.getRoomInfo(roomId)client.getUserInfo(userId, roomId)client.use((ctx, next) => ...)client.command({ name, execute })
Events
readyconnect/disconnectroomsUpdateroomHistoryroomJoinroomPendingmessageCreatemessageUpdatemessageDeleteroomPresenceUpdatetypingUpdatecommandErrormiddlewareErrorerror
Notes
- Requires Node.js
>= 18for built-infetch. - Uses Socket.IO server contract documented in
docs/bots-api.md. - If socket send/edit fails, SDK falls back to HTTP automatically.
