nikeee / node-ts

Node.js TeamSpeak® 3 Server Query client implemented in TypeScript
GNU Lesser General Public License v3.0
38 stars 6 forks source link

node-ts Build Status npm version Dependency Status License Downloads Per Month

This is a CommonJS module which allows you to connect to any TeamSpeak® 3 server which has the Server Query API enabled. Using the Server Query API, you can do everything a normal TeamSpeak user can do (except sending and receiving voice data) automatically via JavaScript/TypeScript (e. g. listing clients logged in on the server).

The Server Query specification is available here. I also created a script to import the complete query API from a TeamSpeak 3 server using the help command. This (json) dump will later be used to auto genrate some stuff. It is available as Gist here.

This is a fork of gwTumm's node-teamspeak which has been ported from JS to TS.

Install

npm install -S node-ts # install package

Example Usage

After registering a Server Query account using your TeamSpeak Client, you can login using node-ts (Alternatively, you can login as the root account "ServerAdmin" which is created during the installation of the server). The following code prints out a JSON-array containing all clients that are currently connected to the first virtual server:

import { TeamSpeakClient } from "node-ts";
// Node.js without ES Modules:
// const { TeamSpeakClient } = require("node-ts");

async function main() {
    const client = new TeamSpeakClient("server.example.com");

    try {
        await client.connect();

        await client.send("use", { sid: 1 });

        const me = await client.send("whoami");
        console.log(me);

        // Log in to use more features
        await client.send("login", {
            client_login_name: "##USERNAME##",
            client_login_password: "##PASSWORD##"
        });

        const clientList = await client.send("clientlist");
        console.log(clientList);

        await client.subscribePrivateTextEvents(); // Tell the server we want to receive private text events

        // Register a callback for these events
        client.on("textmessage", data => {
            console.log(`Message received: ${data.msg}`);
        });

    } catch (err) {
        console.error("An error occurred:")
        console.error(err);
    }
}
main();

Usage information