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
Mainfunction and return a value — that value becomes the command output. Maincan be async; useawaitwithnpoqandfetchcalls.- Keep scripts short and fast; the response length is limited.
fetchsupports 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.username | string | Username of the viewer who ran the command. |
sender.slug | string | Viewer's channel slug. |
Built-ins
fetch(url, options?) | Promise<string> | HTTP/HTTPS request; returns the response as text. |
console.log(...args) | void | Logs 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.