eco.js - v1.6.1

npm GitHub Sponsors GitHub issues GitHub npm bundle size (scoped) Codacy Badge GitHub GitHub commit activity

GitHub package.json version GitHub release (latest SemVer)

ECO API Interface

Eco.js is a full WebAPI Interface for ECO GameServers for remote automated management and bots.

[!TIP] Just want an RCON library and not the full toolset? Check out @eco.js/rcon.

Installation

npm install eco.js

Setup

Eco.js

[!IMPORTANT] Eco.js requires an APIAdminAuthToken to make any authenticated calls. A Non-admin or User token can be used for limited read-only access. You must also enable AllowDebugCalls to make use of Chat features. Both of these can be found in the Users.eco config file on your server.

  • base_url - The WebServerUrl (or IP) & WebServerPort as defined in Network.eco config.
  • api_key - The APIAdminAuthToken as defined in Users.eco config.
  • serverVirtualPlayerName - The name for the Server when using Chat. (Default [Server])
  • serverChatUpdateInterval - Time (in ms) between checks for new chat messages.

[!NOTE] If base_url or api_key options are omitted from the EcoJSConfig object, the library will read that variable from the following ENV variables:

  • ECO_BASE_URL
  • ECO_API_KEY

[!TIP] To disable chat polling, pass serverChatUpdateInterval: 0 to the Startup perms.

Documentation

Documentation can be found HERE

Docs

Support Discord

https://discord.gg/uzeWjVTPSQ

Usage

import { ECO } from 'eco.js';
// const { ECO } = await import('eco.js');
const server = new ECO({
base_url: 'https://127.0.0.1:3001',
api_key: 'myAwesomeAPIAdminToken', // Admin Token **REQUIRED** for full features
serverVirtualPlayerName: '[Server]', // Name of the Bot when Messaging users
serverChatUpdateInterval: 5000, // Polling Interval for new messages, in Milliseconds
});

server.isReady.then(() => {
server.on('CHAT_MESSAGE', (chat_message) => {
if (
chat_message.Receiver == 'General' &&
chat_message.Text?.startsWith('!kickme')
) {
chat_message.senderUser.kick('User ran !kickme');
}
});
});

TextUtils

import { TextUtils } from 'eco.js';
const { color, foldout, table, italic, bold } = TextUtils;

server.chat.sendChat(
'#General',
`I can also do ${color('Colored Text', '#ffaa00')}, ${italic(
bold('Styling'),
)} and ${foldout(
color('Hoverable Text', '#00ff00'),
'With Tables!',
table([
['Column 1', 'Column2'],
['Much', 'Wow'],
]),
)}`,
);

ColorTextDemo

Generated using TypeDoc