npoqDocumentationHome Page

Introduction

npoq is a chatbot, overlay/alert, widget and stats platform for Kick streamers. Sign in with your Kick account and manage commands, alerts, periodic messages, giveaways, leaderboards and variables from one panel.

Getting started

  • 1. Click Sign in with Kick (top right). Your channel connects automatically on first login.
  • 2. Enable the chat bot in the panel — the default commands work instantly.
  • 3. Add commands, alerts, giveaways and widgets; paste a widget overlay URL into OBS as a browser source.

Commands

Default commands work out of the box. You can also create your own custom commands with role/availability and cooldown settings.

!pointsViewer's points
!uptimeStream uptime
!followageFollow age
!followersFollower count
!levelViewer level
!topLeaderboard
!watchtimeWatch time
!xpViewer XP
!commandsCommand list
!addcomAdd a command (mod)

Variables

Variables persist data across commands and scripts. There are three kinds:

Global variablesA single value (text) for the whole channel.
CountersA numeric value; ideal for increment/decrement (e.g. death counter).
Viewer variablesA per-viewer value (stored per user).

Advanced Editor

The Advanced Editor lets you run JavaScript inside a <script> block in a command response — make your commands dynamic and smart.

  • You must define a Main function and return a value — that value becomes the command output.
  • Main can be async; use await with npoq and fetch calls.
  • Keep scripts short and fast; the response length is limited.
  • fetch supports only http/https URLs and returns text (string).

npoq — Global variables

npoq.getGlobalVar(name)Promise<string | null>Reads a global variable.
npoq.setGlobalVar(name, value)Promise<void>Writes a global variable.
npoq.deleteGlobalVar(name)Promise<void>Deletes a global variable.

npoq — Counters

npoq.getCounter(name)Promise<number | null>Reads a counter value.
npoq.setCounter(name, value)Promise<void>Sets a numeric counter value.
npoq.deleteCounter(name)Promise<void>Deletes a counter.

npoq — Viewer variables

npoq.getViewerVar(name, viewer)Promise<string | null>Reads a viewer's value.
npoq.setViewerVar(name, viewer, value)Promise<void>Writes a viewer's value.
npoq.deleteViewerVar(name, viewer)Promise<void>Deletes a viewer's value.
npoq.clearViewerVar(name)Promise<void>Clears the variable for all viewers.

sender — The command user

sender.usernamestringUsername of the viewer who ran the command.
sender.slugstringViewer's channel slug.

Built-ins

fetch(url, options?)Promise<string>HTTP/HTTPS request; returns the response as text.
console.log(...args)voidLogs to the editor test panel.
Math, JSON, Date, Object, Array …Standard JavaScript built-ins are available.
Win counter
<script>
const Main = async () => {
  const wins = (await npoq.getCounter('wins')) || 0
  await npoq.setCounter('wins', wins + 1)
  return `${sender.username} → ${wins + 1} galibiyet 🏆`
}
</script>
Dice roll (random)
<script>
const Main = () => {
  const roll = Math.floor(Math.random() * 6) + 1
  return `${sender.username} 🎲 ${roll} attı!`
}
</script>
Fetch from an API
<script>
const Main = async () => {
  const res = await fetch('https://official-joke-api.appspot.com/random_joke')
  const joke = JSON.parse(res)
  return `${joke.setup} — ${joke.punchline}`
}
</script>

Widgets

Each widget generates its own overlay URL; add it to OBS as a browser source. Colors, size and styles are configured in the panel.

Riot TrackerLoL / Valorant / TFT rank, session W/L and match history overlay.
Follower & Sub GoalA live-filling goal bar — 6 styles (classic, text-inside, sharp, vertical, circle, neon).
Kicks CupCoins drop into a glass with real physics as Kicks arrive (7 cup models).
Emote RainChat emotes/emojis appear at random positions with random animations (confetti, spin…).
Chat BoxShows Kick chat as an overlay with 7TV emotes and badges.
GiveawayLive keyword-entry giveaway with a slot-reel winner draw.