Skip to content
This repository has been archived by the owner on Feb 1, 2024. It is now read-only.
/ booyah.js Public archive

A simple booyah.live API implementation for chat bots or apps

Notifications You must be signed in to change notification settings

crivasr/booyah.js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

booyah.js

This is a work in progress npm module for interacting with the booyah API and chat.

Getting Started

Instalation

Install using npm:

npm install booyah.js

Connect with account

You first need to get your session_key:
Go to booyah and open the DevTool (press F12)
Then go to Application > Cookies > https://booyah.live/ and search for session_key. If you press it, it will show you the full token


Just copy that and replace "YOUR_SESSION_KEY" with that token.
"YOUR_USER_ID" is the id that shows when you got to your studio under your name.

const { Client } = require("booyah.js");

// start the bot with your credentials
const client = new Client("YOUR_SESSION_KEY", "YOUR_USER_ID");

client.connectChannels(["CHANNEL_ID"]);

client.on("chat", async (message, context, connection, self) => {
  //ignore messages sended by the bot
  if (self) return;
  
  const msg = message.data.msg;
  const name = message.data.nickname;
  
  if (msg.toLowerCase() == "hi"){
    connection.sendMessage(`Hello ${name}!`);
    // you can also do:
    // client.sendMessage(context.channel_id, `Hello ${name}!`);
  }
});

an other way to get a chat message is this:

const { Client, Constants } = require("booyah.js");

client.on("message", async (message, context, connection, self) => {
  if (self) return;

  if(Constants.msgTypes[message.event] != "chat") return;
  // TODO
});

Anonymous connection

You can also connect to a chat without those credentials, you can get the messages but you can't send them. Also, some API endpoints requires you to have a session, just like GET CHATROOMS/${user_id}/AUDIENCES*.

Instead of

const { Client } = require("booyah.js");

const client = new Client();

client.connectChannels(["CHANNEL_ID"]);

use

const { Client } = require("booyah.js");

const client = new Client();

client.connectChannelsAnon(["CHANNEL_ID"]);

If you use the other function it would still work but you'll have this alert when you connect Missing autentication parameters, starting anonoymous connection

Simple command handler

client.on("chat", async (message, context, connection, self) => {
  if (self) return;
  const msg = message.data.msg;

  const args = msg.split(" ");
  const commandName = args.shift();
  
  if (commandName == "!say"){
    connection.sendMessage(`${message.data.nickname} you said: ${args.join(" ")}`);
  }
})

More commands

  const isModerator = message.isModerator;

  // ban user by id 
  if (commandName == "!ban" && isModerator) {
    const target = args.shift();
    const reason = args.join(" ");

    connection.banUser(context.channel_id, target, reason).then((ban) => {
      // the banUser function bans an user and it returns a promise with the banned user and the channel where he got banned 
      // same for muteUser and pardonUser
      connection.sendMessage(`${ban.target.nickname} was banned, reason: ${reason}`);
    });
  }

  // unban an user by id
  if (commandName == "!pardon" && isModerator) {
    connection.pardonUser(context.channel_id, args[0]);
  }

  // ban for 10 minutes by id
  if (commandName == "!mute" && isModerator) {
    connection.muteUser(context.channel_id, args[0]);
  }