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.
npm install 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
- TheWebServerUrl
(or IP) &WebServerPort
as defined inNetwork.eco
config.api_key
- TheAPIAdminAuthToken
as defined inUsers.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 can be found HERE
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');
}
});
});
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'],
]),
)}`,
);