twitch-chat.js
Version:
A simple twitch API wrapper
176 lines (147 loc) • 4.03 kB
Markdown
# Twitch-chat.js
A simple Twitch API wrapper
# Contents
- [Installing](#installing)
- [Getting Starting](#getting-starting)
- [Creating command and event handlers](#creating-a-command-and-event-handlers)
- [First Event](#first-event)
- [First Command](#first-command)
- [Advenced](#advenced)
- [Creating an env file](#creating-an-env-file)
- [Example main file](#example-main-file)
# Installing
```bash
npm i twitch-chat.js --save
```
- Node version "16.18.0" or newer is required
# Getting Starting
```js
const { Client } = require('twitch-chat.js');
const client = new Client({
client_name: 'YOUR_BOT_NAME',
client_id: 'CLIENT_ID',
channels: ['foo']
})
.on('ready', () => {
console.log(`Hello ${client.user.login_name}`)
})
.on('message', message => {
if(message.channel.type !== 'whisper') return;
if(message.content === '!ping') return message.channel.send(`Websocket: ${client.ping}ms`)
})
client.login('BOT_TOKEN')
```
### Creating a Command and Event Handlers
```js
const { Client, Collection } = require('twitch-chat.js');
const { Command, Event } = require('@twitchchatjs/handlers');
const client = new Client({
client_name: 'YOUR_BOT_NAME',
client_id: 'CLIENT_ID',
channels: ['foo']
})
client.commands = new Collection()
client.aliases = new Collection()
/*
Handlers Examples
'./path/to/folder/'
Example:
*/
let commands = new Command(client, './test/commands/')
let event = new Event(client, './test/events/')
event.load()
commands.load()
client.login('BOT_TOKEN')
```
> Note: You need to create a folder for your commands and events
| Option (Handler) | Argument | Description | Default |
| ------------------- | ------------ | ------------------------ | ----------- |
| subFolder | Boolean | Enable/Disable subfolder | false |
## First Event
```js
module.exports = class Message {
run(message) {
if(message.channel.type == 'whisper') return;
if(!message.content.startsWith('!')) return;
const args = message.content
.trim()
.slice(1)
.split(/ +/g);
const command = args.shift().toLowerCase();
let commands = global.client.commands.get(command) || global.client.aliases.get(command)
let ctx = {
client: global.client,
message: message,
args: args
}
if(!commands) return;
commands.run(ctx)
}
}
```
## First Command
```js
module.exports = class PingCommand {
constructor() {
this.name = 'ping',
this.aliases = ['pong'],
this.run = this.run
}
run(ctx) {
return ctx.message.channel.send(`Pong! WebSocket ping: ${ctx.client.ping}ms`)
}
}
```
# Advenced
> You can create a ".env" file for set `CLIENT_TOKEN` & `CLIENT_ID`
#### Creating an env file
```env
CLIENT_TOKEN=TOKEN_HERE
CLIENT_ID=CLIENT_ID_HERE
```
#### Example main file
```js
const { Client } = require('twitch-chat.js');
const client = new Client({
client_name: 'CLIENT_NAME',
channels: ['foo']
})
client.login()
```
# Releases
## Packages
### twitch-chat.js@2.0.0
#### Bug Fixed
- `join()` doesn't work correctly and stop the code
#### Added (Methods)
- `Channel.edit()`
- `Channel.deleteMessages()`
- `Channel.moderators()`
- `Client.user.block()`
- `Client.user.unblock()`
- `Message.channel.stream.ads()`
- `Message.channel.stream.ban()`
- `Message.channel.stream.block()`
- `Message.channel.stream.thumbnailURL()`
- `Message.channel.stream.unban()`
- `Message.channel.stream.user.ban()`
- `Message.channel.stream.user.unban()`
- `Message.delete()`
#### Added (Properties)
- `Client.id`
- `Client.token`
- `Message.channel.stream.user`
- `User.email`
#### Added (Events)
- `punishment`
- `unpunishment`
#### Removed (ENV and options)
- `TWITCH_NAME`
- `CHANNELS`
#### Change (ENV and options)
- `TWITCH_TOKEN` to `CLIENT_TOKEN`
- `OptionsClient = { name: 'foo'}` to `OptionsClient = { client_name: 'foo'}`
#### Change (Methods)
- `Message.channel.createClip()` to `Message.channel.stream.createClip()`
- `Message.channel.clip()` to `Message.channel.stream.clip()`
- `Client.join()` to `Client.user.join()`