# teamspeak-async

> Use Teamspeak ServerQuery from Node

Latest version **1.2.2** (published 2017-07-28) · MIT license · 0 weekly downloads

## Install

```sh
npm install teamspeak-async
pnpm add teamspeak-async
yarn add teamspeak-async
bun add teamspeak-async
```

## 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 | 2017-07-28 |
| First published | 2017-07-23 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 3 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | Nicholai Nissen |
| Maintainers | nicholai |
| Keywords | teamspeak, serverquery, async, await, promise, ts, ts3, server, query |

## Links

- npm: https://www.npmjs.com/package/teamspeak-async
- Repository: https://github.com/nicholaiii/teamspeak-async
- Homepage: https://github.com/nicholaiii/teamspeak-async#readme
- Issues: https://github.com/nicholaiii/teamspeak-async/issues
- npm.io page: https://npm.io/package/teamspeak-async

## Dependencies (3)

- [debug](https://npm.io/package/debug.md) ^2.6.8
- [byline](https://npm.io/package/byline.md) ^4.2.1
- [bluebird](https://npm.io/package/bluebird.md) ^2.9.33

## Alternatives

- [promise-throttle](https://npm.io/package/promise-throttle.md) — 44.2K weekly downloads
- [@commercetools/sync-actions](https://npm.io/package/@commercetools/sync-actions.md) — 25.1K weekly downloads
- [cwait](https://npm.io/package/cwait.md) — 21.4K weekly downloads
- [@ledgerhq/hw-app-cosmos](https://npm.io/package/@ledgerhq/hw-app-cosmos.md) — 4.2K weekly downloads
- [@financial-times/o-loading](https://npm.io/package/@financial-times/o-loading.md) — 2.8K weekly downloads

## Recent versions

- 1.2.2 (latest) — 2017-07-28
- 1.2.1 — 2017-07-26
- 1.2.0 — 2017-07-26
- 1.1.2 — 2017-07-26
- 1.1.1 — 2017-07-25
- 1.1.0 — 2017-07-25
- 1.0.3 — 2017-07-25
- 1.0.2 — 2017-07-23
- 1.0.1 — 2017-07-23
- 1.0.0 — 2017-07-23

## README

# Teamspeak-Async
### A library to interface the ServerQuery protocol on your Teamspeak Server.
[![NPM](https://img.shields.io/npm/v/teamspeak-async.svg)](https://www.npmjs.com/package/teamspeak-async)
[![](https://img.shields.io/npm/l/teamspeak-async.svg)](https://github.com/Nicholaiii/teamspeak-async/blob/master/LICENSE)
[![](https://img.shields.io/badge/code_style-XO-5ed9c7.svg)](https://github.com/sindresorhus/xo)
[![](https://img.shields.io/npm/dt/teamspeak-async.svg)](https://www.npmjs.com/package/teamspeak-async)

## Usage
Targets Node `>= 7.6` and uses async/await. Transpile with Babel for older versions.

If provided with user and password, it will automatically authenticate on the server, and unless specified otherwise, it will `use 1` and register for `server` notifications.
This default is sensible for most users, but if you want to use another server, you can pass the option not to, same goes for registering for  `server` notifications.

```js
/* If using Babel, you can of course import it instead */
const TeamSpeakClient = require('teamspeak-async').TeamSpeakClient
const client = new TeamSpeakClient({host: 'example.com'})

async function getClientNames(){
	let clients = await client.send('clientlist')
	return clients.map(client => return client.client_nickname)
}

/* Print names of everyone online */
getClientNames()
  .then(names => {
    names.map(name => console.log(name))
  })

/* Make everyone online hate you */
client.send('clientlist').then(clients => {
  clients.map(user => client.send('clientpoke', {clid:user.clid, msg:`Hello ${user.client_nickname}`}))
})
```

I recommend using the [module config](https://www.npmjs.com/package/config), that enables a project-global, config, with many great features like JSON5 support and different environments.

```js
/* config example */
const config = require('config')
const TeamSpeakClient = require('teamspeak-async').TeamSpeakClient
const client = new TeamSpeakClient(config.teamspeak) /* or: config.get('teamspeak') */
```

Options:
- `host`: IP or Hostname for Teamspeak server - **required**
- `port`: Port for ServerQuery, default `10011` - *optional*
- `user`: Username to authenticate with - *optional*
- `password`: Password to authenticate with - *optional*
- `server`: Server ID to select, default `1` - *optional*
- `disableUse`: Disables automatically using server, default `false` - *optional*
- `disableRegister`: Disables registering for `server` notifications, default `false` - *optional*

Methods:
- `send(command, params)` Send a request to the ServerQuery
- `authenticate(user, password)` Authenticate on your server
- `register(event)` Registers for an event
- `use(server)` Use a particular server

## Contributions
Feel free to contribute to this repo. Just send a PR.

```
TODO:
Webpack instead of Babel, with uglify et al.
Unit tests with AVA
Linting with XO
```
## Development
Clone repository and run `npm install` in directory.

To build run `npm run build`

Development requires at least `npm@4`, but I highly recommend `npm@5` for a lot faster npm experience.

## Debug
Teamspeak-async uses the debug module, to display extensive debug information. To enable it set TeamSpeakClient as target for the debug env variable before running your application
- windows: `set DEBUG=TeamSpeakClient`
- linux/mac: `DEBUG=TeamSpeakClient npm start`

## Acknowledgements
Parsing of lines largely based on xbenjii/Teamspeak, the module that inspired me to create a modernised async Teamspeak ServerQuery client.

class `Queue` based on Queue.js by Stephen Morley

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