Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/nicholaiii/teamspeak-async
A node library to interface the ServerQuery protocol on your Teamspeak Server
https://github.com/nicholaiii/teamspeak-async
Last synced: 2 days ago
JSON representation
A node library to interface the ServerQuery protocol on your Teamspeak Server
- Host: GitHub
- URL: https://github.com/nicholaiii/teamspeak-async
- Owner: Nicholaiii
- License: mit
- Created: 2017-07-23T13:02:07.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-06-05T02:53:52.000Z (5 months ago)
- Last Synced: 2024-09-17T20:17:51.855Z (about 2 months ago)
- Language: JavaScript
- Size: 71.3 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: readme.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
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