https://github.com/webfreak001/hack.chat.js
*No longer maintained* API wrapper for hack.chat using ws package
https://github.com/webfreak001/hack.chat.js
Last synced: 12 months ago
JSON representation
*No longer maintained* API wrapper for hack.chat using ws package
- Host: GitHub
- URL: https://github.com/webfreak001/hack.chat.js
- Owner: WebFreak001
- License: mit
- Created: 2015-07-15T13:13:29.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2015-07-24T10:28:09.000Z (about 11 years ago)
- Last Synced: 2025-02-28T14:47:01.151Z (over 1 year ago)
- Language: JavaScript
- Homepage:
- Size: 150 KB
- Stars: 15
- Watchers: 7
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# hack.chat.js
[](https://www.npmjs.com/package/hack-chat)
API wrapper for hack.chat using ws package
## Usage
```js
var HackChat = require("hack-chat");
var chat = new HackChat(); // Client group for multiple channels
chat.join("lobby", "TestUser");
var programmingSession = chat.join("programming", "TestUser");
chat.on("onlineSet", function(session, users) {
// Each event from a group contains a session argument as first argument
console.log("Users online in ?" + session.channel + ": " + users.join(", "));
});
chat.on("chat", function(session, nick, text) {
console.log(nick + "@" + session.channel + ": " + text);
if (session.channel != "programming") {
programmingSession.sendMessage("Quote from ?" + session.channel + ": " + text);
}
});
```
## HackChat.Session methods
### `new(channel: string, username: string, password?: string, options?: any = { server: "wss://hack.chat/chat-ws" })`
**Description:** Constructs a new chat session and directly connects to it
**Example:**
```js
var session = new HackChat.Session("programming", "My_Username", "password123", { server: "wss://custom-server.com/chat-ws" });
```
### `sendRaw(json: any)`
**Description:** Sends a raw JSON packet
**Example:**
```js
session.sendRaw({ cmd: "ping" });
```
### `sendMessage(message: string)`
**Description:** Sends a chat message
**Example:**
```js
session.sendMessage("Hi everybody");
```
### `invite(user: string)`
**Description:** Invites a user to a random channel
**Example:**
```js
session.on("invited", function(nick, channel, time) {
var invitedSession = chat.join(channel, "My_Username", "password123");
invitedSession.once("onlineAdd", function(nick, time)
{
invitedSession.sendMessage("Hi, " + nick);
});
});
session.invite("WebFreak");
```
### `ping()`
**Description:** Sends a ping packet. Can be used to check IP limit.
### `leave()`
**Description:** Disconnects from the server, making `this` unusable
## HackChat.Session events
**All HackChat events are the same as the HackChat.Session events with the exception that the session where it got emitted from is the first argument**
### `.on("joining")`
**Description:** Emitted when sending the join request.
**Arguments:** None
### `.on("left")`
**Description:** Emitted when disconnected from WebSocket.
**Arguments:** None
### `.on("chat")`
**Description:** Emitted when someone sends a regular message.
**Arguments:**
* `nick` (String)
* `text` (String)
* `time` (Number, Unix Time)
* `isAdmin` (Boolean)
* `trip` (String) - Hash from password
### `.on("info")`
**Description:** Emitted when some unhandled info event passes through.
**Arguments:**
* `text` (String)
* `time` (Number, Unix Time)
### `.on("infoRaw")`
**Description:** Emitted when any info event occurs. Will also trigger if it gets handled.
**Arguments:**
* `text` (String)
* `time` (Number, Unix Time)
### `.on("warn")`
**Description:** Emitted when some unhandled warn event passes through.
**Arguments:**
* `text` (String)
* `time` (Number, Unix Time)
### `.on("warnRaw")`
**Description:** Emitted when any warn event occurs. Will also trigger if it gets handled.
**Arguments:**
* `text` (String)
* `time` (Number, Unix Time)
### `.on("ratelimit")`
**Description:** Emitted when server is sending IP ratelimit warning. Will cancel regular warn event.
**Arguments:**
* `time` (Number, Unix Time)
### `.on("banned")`
**Description:** Emitted when admin is banning the user. Will cancel regular warn event.
**Arguments:**
* `time` (Number, Unix Time)
### `.on("nicknameInvalid")`
**Description:** Emitted when nickname trying to join with is invalid ("!", "$", "?", etc.) Will cancel regular warn event.
**Arguments:**
* `time` (Number, Unix Time)
### `.on("nicknameTaken")`
**Description:** Emitted when nickname trying to join with is already taken. Will cancel regular warn event.
**Arguments:**
* `time` (Number, Unix Time)
### `.on("invited")`
**Description:** Emitted when WebSocket successfully invited someone. Will cancel regular info event.
**Arguments:**
* `nick` (String)
* `channel` (String)
* `time` (Number, Unix Time)
### `.on("invitation")`
**Description:** Emitted when someone invited WebSocket. Will cancel regular info event.
**Arguments:**
* `nick` (String)
* `channel` (String)
* `time` (Number, Unix Time)
### `.on("onlineSet")`
**Description:** Emitted when successfully joined. Will contain an array of users.
**Arguments:**
* `nicks` (String[])
* `time` (Number, Unix Time)
### `.on("onlineAdd")`
**Description:** Emitted when someone joins the channel.
**Arguments:**
* `nick` (String)
* `time` (Number, Unix Time)
### `.on("onlineRemove")`
**Description:** Emitted when someone leaves the channel.
**Arguments:**
* `nick` (String)
* `time` (Number, Unix Time)
### `.on("error")`
**Description:** Emitted when receiving invalid JSON or if WebSocket fails to send.
**Arguments:**
* `exception` (any)