# teamspeak-server-query

> Lightweight teamspeak server query which prints the response as javascript object

Latest version **1.2.2** (published 2019-05-27) · ISC license · 0 weekly downloads

## Install

```sh
npm install teamspeak-server-query
pnpm add teamspeak-server-query
yarn add teamspeak-server-query
bun add teamspeak-server-query
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.2.2 |
| Published | 2019-05-27 |
| First published | 2019-04-29 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 17.1 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Jonathan Francke |
| Maintainers | joni1802 |
| Keywords | teamspeak, server-query, teamspeak-query, teamspeak3, ts3, teamspeak-server-query |

## Links

- npm: https://www.npmjs.com/package/teamspeak-server-query
- Repository: https://joni1802@bitbucket.org/joni1802/teamspeak-server-query
- Homepage: https://bitbucket.org/joni1802/teamspeak-server-query#readme
- npm.io page: https://npm.io/package/teamspeak-server-query

## Alternatives

- [gamedig](https://npm.io/package/gamedig.md) — 29.3K weekly downloads
- [join-monster](https://npm.io/package/join-monster.md) — 12.8K weekly downloads
- [masked](https://npm.io/package/masked.md) — 5.5K weekly downloads
- [@comunica/actor-query-process-explain-logical](https://npm.io/package/@comunica/actor-query-process-explain-logical.md) — 4.7K weekly downloads
- [@veracity/vui](https://npm.io/package/@veracity/vui.md) — 4.6K weekly downloads

## Recent versions

- 1.2.2 (latest) — 2019-05-27
- 1.2.1 — 2019-05-22
- 1.2.0 — 2019-05-20
- 1.1.0 — 2019-05-04
- 1.0.4 — 2019-05-02
- 1.0.3 — 2019-05-02
- 1.0.2 — 2019-05-01
- 1.0.1 — 2019-05-01
- 1.0.0 — 2019-04-29

## README

# Teamspeak Server Query

A simple and lightweight server query for a teamspeak 3 server

```javascript
const serverquery = require('teamspeak-server-query')
const ts3 = new serverquery()

ts3.connect({host: '127.0.0.1', port: '10011'})
  .then(() => ts3.login({client_login_name: 'serveradmin', client_login_password: 'XXX'}))
  .then(() => ts3.use({sid: 1}))
  .then(() => ts3.clientdblist())
  .then(response => {
    let clients = response

    console.log(clients)
    /*
      [ { cldbid: '2',
      client_unique_identifier: 'odJYAh+ZlPblMwy6RebOCSg9/y0=',
      client_nickname: 'TeamSpeakUser',
      client_created: '1555355453',
      client_lastconnected: '1556716574',
      client_totalconnections: '20',
      client_description: null,
      client_lastip: '10.10.10.30',
      client_login_name: null },
    { cldbid: '3',
      client_unique_identifier: 'ServerQuery',
      client_nickname: 'ServerQuery Guest',
      client_created: '1555355453',
      client_lastconnected: '1555355453',
      client_totalconnections: '0',
      client_description: null,
      client_lastip: null,
      client_login_name: null },
    { cldbid: '4',
      client_unique_identifier: 'GSgJBYEL0YD9yd3w3PxM2TkYH4Y=',
      client_nickname: 'Gast01',
      client_created: '1556314829',
      client_lastconnected: '1556314829',
      client_totalconnections: '1',
      client_description: null,
      client_lastip: '10.10.10.30',
      client_login_name: null } ]
     */
  })
  .then(() => ts3.quit())
  .catch(err => console.log(err))
```

## Installing

Installation is done using the npm install command:

```
$ npm install teamspeak-server-query
```

## How it works

All available query commands can be called as a method. The paramters are represented as an object.

```javascript
ts3.servergroupadd({name: 'Super Bros'}) // => "servergroupadd name=Super\sBros"
```

The methods always return the first response from the server query as an array.

```javascript
let response = await ts3.servergroupadd({name: 'SuperBros'})

console.log(response) // [ { sgid: '20' } ]
```

```javascript
let response = await ts3.servergrouprename({
  sgid: 21,
  name: 'My New Awesome Name'
})

console.log(response) // [ { error: null, id: '0', msg: 'ok' } ]

```

If the query returns an error, the response contains the error. Simple as that.

```javascript
await ts3.servergroupadd({name: 'Buddies'})
let response = await ts3.servergroupadd({name: 'Buddies'})

console.log(response) // [ { error: null, id: '1282', msg: 'database duplicate entry' } ]
```

## Event Listeners

| Name          | Description                                                                                                              |
| ------------- |--------------------------------------------------------------------------------------------------------------------------|
| 'close'       | Emitted when the connection to server gets closed.                                                                       |
| 'notify'      | Emitted when a server notification is send by the server.                                                                |

## Examples

### Using Async Await

```javascript
const serverquery = require('teamspeak-server-query')
const ts3 = new serverquery()

let params = {
  host: '127.0.0.1',
  port: 10011
}

let queryStuff = async () => {
  try {
    await ts3.connect(params)

    await ts3.login({
      client_login_name: 'serveradmin',
      client_login_password: 'XYZ'
    })

    await ts3.use({
      sid: 1
    })

    let clients = await ts3.clientdblist()

    console.log(clients)

    await ts3.quit()
  } catch(err) {
    console.log(err)
  }
}

queryStuff()
```

### Listen on server notifications

```javascript
ts3.on('notify', data => {
  console.log(data)
})

await ts3.servernotifyregister({
  id: 0,
  event: 'channel'
})
```

### Quit the Connection

... as you would do it in the telnet session.

```javascript
ts3.quit()
```

## Built With

* my hands
* [net.Socket](https://nodejs.org/api/net.html#net_class_net_socket)

## Authors

* **Jonathan Francke**

---
_Source: https://npm.io/package/teamspeak-server-query · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
