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.jsImportant
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) &WebServerPortas defined inNetwork.ecoconfig.api_key- TheAPIAdminAuthTokenas defined inUsers.ecoconfig.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_URLECO_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'],
]),
)}`,
);
