DocumentationДокументация
//docs/about
   ____ _            _ _
  / ___| | __ _ _ __(_) |_ _   _
 | |   | |/ _` | '__| | __| | | |
 | |___| | (_| | |  | | |_| |_| |
  \____|_|\__,_|_|  |_|\__|\__, |
                           |___/

What Clarity isЧто такое Clarity

Clarity is a chat-bot for Twitch and Kick rolled into one. A single bot account (shizick666 on Twitch, sh1zick on Kick) works on any channel where it is moderator.

Clarity — это чат-бот для Twitch и Kick в одном лице. Один аккаунт бота (shizick666 на Twitch, sh1zick на Kick) умеет работать на любом канале где он назначен модератором.

what it can doчто умеет

  • Faceit — live elo, stats for today, last match, lobby with live score
  • Stream — status, uptime, change title/category by command
  • Music recognition!track identifies the song playing (Shazam-like via AudD)
  • Economy — coins for activity, transfers, leaderboards, daily bonuses
  • Trivia / mini-games — quizzes with auto-start, in-chat mini-games
  • Giveaways / lottery — raffles through the bot
  • Timers — recurring chat messages
  • Custom commands with templating ($(random), $(choose), $(urlfetch))
  • Auto-moderation — link and ban-word filters with timeout
  • Faceit — реальное эло, статистика за сегодня, последний матч, лобби с live score
  • Stream — статус, аптайм, изменение названия/категории через команду
  • Music recognition!трек распознаёт играющий трек (Shazam-like через AudD)
  • Economy — монеты за активность, переводы, топ, ежедневные бонусы
  • Trivia / mini-games — викторины с автозапуском, мини-игры в чате
  • Giveaways / lottery — розыгрыши через бота
  • Timers — периодические сообщения в чат
  • Custom commands с шаблонизатором ($(random), $(choose), $(urlfetch))
  • Auto-moderation — фильтр ссылок и банвордов с таймаутом

tech stackтех-стек

runtime  :: python 3.12  + asyncio
web      :: quart (async flask)
twitch   :: twitchio (irc) + helix api
kick     :: kick public api v1 + webhooks
deploy   :: vps (ubuntu) :: systemd :: nginx
Clarity/docsдокументация/connect the botподключение

Connect the botПодключить бота

1. Sign in1. Войти

Open claritysync.ru/login and press Sign in with Twitch or Sign in with Kick. Confirm access in the provider window — you will land straight in the dashboard.

Открой claritysync.ru/login и нажми Войти через Twitch или Войти через Kick. Подтверди доступ в окне провайдера — и сразу окажешься в панели.

Clarity only asks for the permissions the bot actually needs: reading chat, moderation and changing stream info.Clarity запрашивает только те права, которые боту нужны для работы: чтение чата, модерация и изменение информации о трансляции.

2. Make the bot a moderator2. Сделать бота модератором

Timeouts, deleting messages and sending without cooldown all require moderator rights. Type this in your own chat:

Таймауты, удаление сообщений и отправка без кулдауна работают только с правами модератора. Напиши у себя в чате:

/mod shizick666     # Twitch
/mod sh1zick        # Kick

3. Turn the bot on3. Включить бота

On the Dashboard screen find Quick actions and flip the Bot in chat switch. The bot joins your chat right away.

На экране Главная найди блок Быстрые действия и включи тумблер Бот в чате. Бот сразу зайдёт в твой чат.

4. Set things up4. Настроить

Everything else lives on the Modules screen. Twelve blocks, each switched on separately — turn on only what you need so the chat is not flooded with commands nobody uses.

Всё остальное — на экране Модули. Двенадцать блоков, каждый включается отдельно. Включай только нужное, чтобы в чате не болтались команды, которыми никто не пользуется.

  • FACEIT stats — enter your FACEIT nickname, otherwise !elo and friends have nothing to look up
  • Moderation — ban-word and link filter
  • Viewer points — needed for activities, lottery and track requests
  • Event responses — greetings for raids, follows and subs
  • Статистика FACEIT — впиши свой ник на FACEIT, иначе !elo и остальным нечего искать
  • Модерация — фильтр запрещённых слов и ссылок
  • Баллы зрителей — нужны для активностей, лотереи и заказа треков
  • Реакции на события — приветствия на рейды, фолловы и подписки
Module settings save by themselves. There is no Save button — flip a switch and it is already stored.Настройки модулей сохраняются сами. Кнопки «Сохранить» там нет: переключил тумблер — уже записалось.
Главная/Документация/dashboardпанель

Dashboard tourОбзор панели

The panel is split into eight screens. Navigation lives in the sidebar on the left; on a phone it hides behind the menu button.

Панель разбита на восемь экранов. Навигация — в боковом меню слева, на телефоне оно прячется за кнопкой меню.

ScreensЭкраны

Dashboard
Главная
stream status, today’s numbers, title and category, quick actions, presets, channel commands, live activity feedстатус стрима, показатели за сегодня, название и категория, быстрые действия, пресеты, команды канала, лента событий
Analytics
Аналитика
messages per hour, top chatters, top donorsсообщения по часам, топ чаттеров, топ донатеров
Streamers
Стримеры
admin only: all channels, add and remove, bot on/offтолько для админа: все каналы, добавление и удаление, включение бота
Modules
Модули
twelve feature blocks with their own settings, search and filterдвенадцать блоков возможностей со своими настройками, поиск и фильтр
Giveaway
Розыгрыш
start, stop, pick a winner; sees raffles started from chat tooзапуск, остановка, выбор победителя; видит и розыгрыши, запущенные из чата
Timers
Таймеры
automatic messages on a scheduleавтосообщения по расписанию
Overlays
Оверлеи
links for OBS with live previewsссылки для OBS с живым превью
Settings
Настройки
theme, accent colour, language, connected servicesтема, акцентный цвет, язык, подключённые сервисы

Top barВерхняя панель

Shows the current screen name. Admins also get a channel switcher: pick a channel and the whole panel switches to it. On the right — language and theme toggles.

Показывает название текущего экрана. У админа рядом переключатель каналов: выбираешь канал, и вся панель переключается на него. Справа — язык и тема.

SavingСохранение

Module settings save by themselves — there is no Save button. Flip a switch or change a number and it is stored. Commands, timers and presets are saved by their own buttons.

Настройки модулей сохраняются сами — кнопки «Сохранить» там нет. Переключил тумблер или поменял число — уже записалось. Команды, таймеры и пресеты сохраняются своими кнопками.

Clarity/docsдокументация/FACEITFACEIT

FACEIT statsСтатистика FACEIT

Needs a FACEIT nickname in Modules → FACEIT stats. Works with CS2 and CS:GO. Each command can be switched off separately inside the module.

Нужен ник на FACEIT в Модули → Статистика FACEIT. Работает с CS2 и CS:GO. Каждую команду можно выключить отдельно внутри модуля.

!elo !эло
current Elo and smart-Elo with today’s deltaтекущее эло и смарт-эло с учётом дельты за сегодня
!checkelo
Elo of any player: !checkelo nicknameэло любого игрока: !checkelo ник
!today !сегодня
today’s stats: wins, losses, Elo change, starting Eloстатистика за сегодня: победы, поражения, изменение эло, стартовое эло
!last !ласт
last match: map, score, Elo changeпоследний матч: карта, счёт, изменение эло
!stats !статы
profile summary: level, Elo, K/D, win rateсводка профиля: уровень, эло, K/D, винрейт
!lobby !лобби
live status of the current match: map, score, time, average team Eloстатус текущего матча: карта, счёт, время, средний эло команд

How to set upКак настроить

Modules → FACEIT stats → turn the module on → press Configure → type your nickname → Save. Below the field there are six switches, one per command.

Модули → Статистика FACEIT → включи модуль → нажми Настроить → впиши ник → Сохранить. Под полем шесть тумблеров, по одному на команду.

Data comes from the official FACEIT API. Live lobby state uses an unofficial endpoint, so it can occasionally lag or go quiet.

Данные идут из официального API FACEIT. Состояние живого лобби берётся из неофициального эндпоинта, поэтому иногда может отставать или молчать.

Clarity/docsдокументация/stream controlуправление стримом

Stream controlУправление стримом

Lets moderators change title and category without opening the dashboard. Switch on in Modules → Stream control.

Позволяет модераторам менять название и категорию, не заходя в панель. Включается в Модули → Управление стримом.

!title — мод
change the stream title: !title new titleсменить название: !title новое название
!game !category — мод
change the category: !game Counter-Strike 2сменить категорию: !game Counter-Strike 2
!cs !cs2 !кс !кс2 — мод
shortcut for Counter-Strike 2быстрое переключение на Counter-Strike 2
!dota !дота — мод
shortcut for Dota 2быстрое переключение на Dota 2
!jc !общение — мод
shortcut for Just Chattingбыстрое переключение на Just Chatting
!афк — мод
shortcut for the AFK categoryбыстрое переключение на категорию AFK
!stream !стрим !streamstats !статистика
uptime, viewers, current title and categoryаптайм, зрители, текущее название и категория
The same thing is available on the Dashboard screen, with live category search.То же самое есть на экране «Главная», там категория ищется подсказкой по мере ввода.
Clarity/docsдокументация/musicмузыка

MusicМузыка

Two different things live here: recognising what is playing right now, and letting viewers request tracks for coins.

Здесь два разных механизма: распознать, что играет прямо сейчас, и дать зрителям заказывать треки за монеты.

!track !трек !song !песня !music !музыка !shazam
recognise the track currently playing on streamраспознать трек, который сейчас играет на стриме
!тречок !заказтрек !songrequest !sr
request a track — costs coins, needs the Viewer points moduleзаказать трек — стоит монет, нужен модуль «Баллы зрителей»

How recognition worksКак работает распознавание

The bot grabs a few seconds of your stream audio, builds a fingerprint and asks the AudD service. Recognition needs yt-dlp, ffmpeg and an AUDD_API_TOKEN on the server.

Бот берёт несколько секунд звука с твоего стрима, строит отпечаток и спрашивает сервис AudD. Для этого на сервере нужны yt-dlp, ffmpeg и AUDD_API_TOKEN.

Possible answersЧто может ответить

  • artist and title — recognised
  • nothing found — music too quiet, drowned by voice, or not in the database
  • stream offline — there is no audio to listen to
  • исполнитель и название — узнал
  • ничего не найдено — музыка слишком тихая, забита голосом или её нет в базе
  • стрим офлайн — слушать нечего
Clarity/docsдокументация/currencyвалюта

Viewer pointsБаллы зрителей

Coins are earned for chatting and for donations. They are spent on games, lottery tickets, track requests and paid commands. Switch on in Modules → Viewer points; each command has its own toggle inside.

Монеты копятся за активность в чате и за донаты. Тратятся на игры, билеты лотереи, заказ треков и платные команды. Включается в Модули → Баллы зрителей, у каждой команды свой тумблер внутри.

Balance and transfersБаланс и переводы

!баланс !balance !деньги !кошелек !монеты
your coin balanceтвой баланс монет
!перевод !pay !дать !give
send coins to someone: !перевод nickname 500перевести монеты другому: !перевод ник 500
!me !стата
your own stats: messages, coins, place in the rankingтвоя статистика: сообщения, монеты, место в топе
!sign !signa !сигна
buy a Steam signature for coinsкупить подпись в Steam за монеты
!givecoins !накрутить !выдать !забрать — мод
hand out or take away coins: !givecoins nickname 1000выдать или забрать монеты: !givecoins ник 1000

LeaderboardsТопы

!богачи !rich !миллионеры !topmoney
top by coinsтоп по монетам
!top !топ
top by messages, all timeтоп по сообщениям за всё время
!topday !топдень !chatleader !топсегодня
top by messages todayтоп по сообщениям за сегодня
!topmonth !топмесяц
top by messages this monthтоп по сообщениям за месяц

Paid commandsПлатные команды

You can charge coins for your own custom commands — handy for requests, shout-outs and jokes.

За свои команды можно брать монеты — удобно для реквестов, приветов и шуток.

!addcmdmon — мод
make a command paid: !addcmdmon !hello 500сделать команду платной: !addcmdmon !привет 500
!editcmdmon — мод
change the priceизменить цену
!delcmdmon — мод
make it free againснова сделать бесплатной
!listcmdmon !платныекоманды !моникоманды
list of paid commands and pricesсписок платных команд и цен

Coins for donationsМонеты за донаты

Connect DonationAlerts in Settings, then set the rate in Modules → Viewer points. At a rate of 10 a 100 ₽ donation gives the viewer 1000 coins.

Подключи DonationAlerts в Настройках, потом задай курс в Модули → Баллы зрителей. При курсе 10 донат на 100 ₽ даст зрителю 1000 монет.

Clarity/docsдокументация/triviaвикторина

TriviaВикторина

The bot asks a question, viewers answer for a stake in coins. First correct answer takes the pot. Needs the Viewer points module.

Бот задаёт вопрос, зрители отвечают за ставку в монетах. Первый правильный ответ забирает банк. Нужен модуль Баллы зрителей.

!trivia !тривия !викторина — мод
start a round: !trivia 500 where 500 is the stakeзапустить раунд: !trivia 500, где 500 — ставка
!ответ !ans !a !о !answer
answer the current question: !ответ Parisответить на текущий вопрос: !ответ Париж

SettingsНастройки

  • Attempt cost — how many coins one answer costs
  • Round duration — how long the question stays open
  • Cooldown — pause before the next round can start
  • Categories — CS2, Dota, anime, films, music, countries
  • Цена попытки — сколько монет стоит один ответ
  • Длительность раунда — сколько висит вопрос
  • Пауза между раундами — сколько ждать до следующего
  • Категории — CS2, Dota, аниме, кино, музыка, страны

AutostartАвтозапуск

Turn on Start automatically and set the interval in minutes — the bot will run rounds on its own without anyone typing the command.

Включи Запускать автоматически и задай интервал в минутах — бот будет сам запускать раунды, без команды.

Clarity/docsдокументация/gamesигры

Chat activitiesАктивности в чате

Ставки, дуэли и предсказания на баллы зрителей. Включается в Модули → Активности в чате, у каждой свой тумблер.

Ставки, дуэли и предсказания на баллы зрителей. Включается в Модули → Активности в чате, у каждой свой тумблер.

!казино !крутить !casino !slots — мод
slot machine, bet in coins: !казино 100автомат, ставка в монетах: !казино 100
!рулетка !roulette — мод
Russian roulette — the loser gets a short timeoutрусская рулетка — проигравший получает короткий таймаут
!монетка !орел !решка !flip !coinflip — мод
heads or tails on a betорёл или решка на ставку
!дуэль !duel — мод
challenge someone: !дуэль nickname 500вызвать на дуэль: !дуэль ник 500
!принять !accept
accept a duel challengeпринять вызов на дуэль
!сдаться !отказаться !decline
decline a duel challengeотказаться от дуэли
!гороскоп !horoscope !звезды — мод
a joke prediction for the dayшуточное предсказание на день
!vanish !исчезнуть !ливнуть
disappear from chat for a second — a one-second self-timeoutисчезнуть из чата на секунду — таймаут самому себе
Commands marked мод are launched by a moderator, but anyone in chat can take part.Команды с пометкой мод запускает модератор, а участвовать в них может любой зритель.
Clarity/docsдокументация/giveawayрозыгрыш

Giveaway and lotteryРозыгрыш и лотерея

GiveawayРозыгрыш

Viewers type a keyword in chat and get into the list. The winner is drawn at random. You can run it from the dashboard or straight from chat — the panel sees both.

Зрители пишут в чат ключевое слово и попадают в список. Победитель выбирается случайно. Запускать можно из панели или прямо из чата — панель видит и то, и другое.

!raffle start !раффл !gw — мод
start: !raffle start !roll — viewers then type !rollзапустить: !raffle start !roll — дальше зрители пишут !roll
!raffle stop — мод
close entries, participants stay in the listзакрыть приём заявок, участники остаются в списке
!raffle pick — мод
pick a winnerвыбрать победителя
!raffle reset — мод
clear the list completelyполностью очистить список
There is an OBS overlay for the giveaway: a live counter and a spinner with the winner. Link on the Overlays screen.Для розыгрыша есть оверлей в OBS: живой счётчик и барабан с победителем. Ссылка — на экране «Оверлеи».

LotteryЛотерея

Runs by itself on a timer. Viewers buy tickets for coins, the bot periodically draws the whole pot between them. Needs the Viewer points module.

Работает сама по таймеру. Зрители покупают билеты за монеты, бот периодически разыгрывает между ними весь банк. Нужен модуль Баллы зрителей.

!lottery !лотерея !lot
current pot, ticket price and time until the drawтекущий банк, цена билета и время до розыгрыша
!билет !buyticket !ticket
buy tickets: !билет 5купить билеты: !билет 5

In the module you set ticket price, how often to draw, and the minimum number of tickets — below that the draw is skipped.

В модуле задаются цена билета, как часто разыгрывать и минимум билетов — если их меньше, розыгрыш пропускается.

Clarity/docsдокументация/death counterсчётчик смертей

Death counterСчётчик смертей

Counts deaths during the stream and shows them on screen through an OBS overlay. Controlled from chat — you do not need to open the dashboard mid-run.

Считает смерти за стрим и показывает их на экране через оверлей в OBS. Управляется из чата, чтобы не лезть в панель посреди забега.

!deaths !смерти
show the current countпоказать текущий счёт
!deaths +1 !deaths -2, !deaths 10 — мод
add, subtract or set an exact number. Works with or without a space: !deaths+ and !deaths +1 do the sameприбавить, убавить или поставить точное число. Работает и слитно, и с пробелом: !deaths+ и !deaths +1 — одно и то же
!deaths+ — мод
add oneдобавить одну
!deaths- — мод
subtract oneубрать одну
!deathsreset — мод
reset to zeroобнулить счётчик
!deathson / !deathsoff — мод
show or hide the widget on stream — the OBS source stays in place, it just fadesпоказать или скрыть виджет на стриме — источник в OBS остаётся, просто плавно гаснет
!deathstarget !попыток — мод
attempt mode: !deathstarget 40 shows 24/40, !deathstarget 0 turns it offрежим попыток: !deathstarget 40 покажет 24/40, !deathstarget 0 выключит

OverlayОверлей

The link lives in the module: Modules → Death counter → Configure. Add it to OBS as a Browser source. Count and target update instantly, no need to recreate the source.

Copy the link once. Count, target and on-screen visibility arrive over a live connection, so they change in OBS immediately — no need to recreate the source.

Ссылка лежит в модуле: Модули → Счётчик смертей → Настроить. Добавь её в OBS как источник «Браузер». Число и цель меняются мгновенно, пересоздавать источник не нужно.

Ссылку достаточно скопировать один раз. Счёт, цель и показ на стриме приходят по живому соединению, поэтому меняются в OBS сразу — источник пересоздавать не нужно.

Clarity/docsдокументация/timersтаймеры

TimersТаймеры

Automatic messagesАвтосообщения

The bot repeats a message in chat at a set interval. Handy for channel rules, social links and reminders. Set up on the Timers screen: type the text, set the interval in minutes, press Create.

Бот повторяет сообщение в чат через заданный интервал. Удобно для правил канала, ссылок на соцсети и напоминаний. Настраивается на экране Таймеры: пишешь текст, ставишь интервал в минутах, нажимаешь «Создать».

Templating works here too: $(random), $(choose) and the rest. See the Templating section.Здесь работают шаблоны: $(random), $(choose) и остальные. Смотри раздел «Шаблоны в ответах».

Stopwatch and countdownСекундомер и обратный отсчёт

Separate from the automatic messages: these two draw a timer on the stream through an OBS overlay. The link is on the Overlays screen.

Это не про автосообщения: эти две команды рисуют таймер на стриме через оверлей в OBS. Ссылка — на экране «Оверлеи».

!sw start !stopwatch !секундомер — мод
start the stopwatchзапустить секундомер
!sw stop — мод
pause — !sw start continuesпауза, продолжить через !sw start
!sw reset — мод
reset to zeroсбросить в ноль
!sw — мод
show current timeпоказать текущее время
!timer start !таймер !countdown — мод
countdown: !timer start 10 — ten minutes, !timer start 5:30 — five and a halfобратный отсчёт: !timer start 10 — десять минут, !timer start 5:30 — пять с половиной
!timer stop !timer pause — мод
pause the countdownпоставить отсчёт на паузу
Clarity/docsдокументация/moderationмодерация

ModerationМодерация

Automatic chat filter. Works without commands: switch the module on and it starts watching. Offenders get a ten-minute timeout.

Автоматический фильтр чата. Работает без команд: включил модуль — он начал следить. Нарушителю выдаётся таймаут на десять минут.

Ban wordsЗапрещённые слова

The bot deletes messages containing words from the list and times the author out. The list is edited in the module.

Бот удаляет сообщения со словами из списка и выдаёт автору таймаут. Список редактируется в модуле.

Link protectionЗащита от ссылок

By default any link from a viewer is deleted. Two switches loosen this:

По умолчанию любая ссылка от зрителя удаляется. Два тумблера это ослабляют:

  • Allow Twitch links — clips and channel links stay
  • Allow all links — link protection off completely
  • Разрешить ссылки на Twitch — клипы и ссылки на каналы остаются
  • Разрешить любые ссылки — защита от ссылок выключена полностью
Moderators and the streamer are never filtered. The bot must be a moderator of the channel, otherwise it cannot delete anything.Модераторы и стример под фильтр не попадают. Боту нужны права модератора канала, иначе он ничего не сможет удалить.
Clarity/docsдокументация/custom commandsсвои команды

Custom commandsСвои команды

Your own commands: the viewer types a trigger, the bot answers with a set text. Manage them from chat or on the Dashboard screen.

Свои команды: зритель пишет триггер, бот отвечает заданным текстом. Управлять можно из чата или на экране «Главная».

!addcmd — мод
create: !addcmd !discord discord.gg/mychannelсоздать: !addcmd !дискорд discord.gg/mychannel
!editcmd — мод
change the answer: !editcmd !discord new textизменить ответ: !editcmd !дискорд новый текст
!delcmd — мод
delete: !delcmd !discordудалить: !delcmd !дискорд
!help !commands !команды
list of available commands on the channelсписок доступных команд канала
Answers support templating — random numbers, picking from a list, pulling text from a URL. See the next section.В ответах работают шаблоны — случайные числа, выбор из списка, подстановка текста по ссылке. Смотри следующий раздел.
//docs/commands/templating

templating // dynamic substitutions

Inside a custom command response (and timer message) you can use templates. They are substituted on the fly.

Внутри ответа кастомной команды (и timer-сообщения) можно использовать шаблоны. Они подставляются на лету.

$(user)
name of who called the commandимя того кто вызвал команду
$(channel)
channel nameимя канала
$(touser)
name of who was mentioned (after @)имя того кого упомянули в команде (после @ )
$(random N M)
random number from N to Mслучайное число от N до M
$(choose a|b|c)
random choice from list separated by |случайный вариант из списка через |
$(urlfetch URL)
fetch text from URL and insert (for API integration)скачать текст по URL и вставить (для API)

examplesпримеры

$ !addcmd !hug $(user) hugs $(touser) 🤗
user:  !hug @viewer
bot:   user hugs viewer 🤗

$ !addcmd !dice rolled $(random 1 6) 🎲
bot:   rolled 4 🎲

$ !addcmd !shoot $(choose hit|missed|critical hit)
bot:   critical hit
$ !addcmd !hug $(user) обнимает $(touser) 🤗
user:  !hug @viewer
bot:   user обнимает viewer 🤗

$ !addcmd !dice выпало $(random 1 6) 🎲
bot:   выпало 4 🎲

$ !addcmd !shoot $(choose попал|промахнулся|критический хит)
bot:   критический хит
Clarity/docsдокументация/overlaysоверлеи

OverlaysОверлеи

Ready-made HTML chat overlays for embedding in OBS. Connected as a Browser Source — separate layer on top of the scene. Support role-based colors (broadcaster / mod / vip / sub), badges, 7TV/BTTV/FFZ emotes, avatars and smooth fade-out of old messages.

Готовые HTML-оверлеи чата для встройки в OBS. Подключаются как Browser Source — отдельным слоем поверх сцены. Поддерживают цвета по ролям (broadcaster / mod / vip / sub), бейджи, 7TV/BTTV/FFZ эмодзи, аватарки и плавный fade-out старых сообщений.

how to connect in OBSкак подключить в OBS

  1. open the Overlays screen in the panel
  2. pick a style you like, copy its URL
  3. in OBS: + → Browser → URL, paste the link, width 420, height 720 (or your size)
  4. checkbox Shutdown source when not visible — recommended (saves CPU)
  5. в панели открыть экран Оверлеи
  6. выбрать понравившийся стиль из списка, скопировать его URL
  7. в OBS: + → Browser → URL, вставить ссылку, ширина 420, высота 720 (или под себя)
  8. галочка Shutdown source when not visible — рекомендуется (экономит CPU)

stylesстили

7 ready-made designs included — for different stream aesthetics:

В комплекте 7 готовых оформлений — для разной эстетики стрима:

  • cards — colored plates with avatar inside (name above, text below). The most "modern".
  • terminal — monochrome console style (different colors per role). Good for hacker/IT streams.
  • glass — semi-transparent cards with blur effect. Minimalism.
  • neon — neon glow and gradients. For bright scenes.
  • minimal — no frames, just colored nicks and text. Doesn't distract.
  • retro — pixel font + thick shadows. Vintage/retro games.
  • bubbles — big bubbles with avatar on the left (name+text in one line).
  • cards — цветные плашки с аватаркой внутри (имя сверху, текст ниже). Самый «современный».
  • terminal — монохромный консольный стиль (под клиент-роли разные цвета). Хорош для хакерских/IT-стримов.
  • glass — полупрозрачные карточки с blur-эффектом. Минимализм.
  • neon — неоновое свечение и градиенты. Под яркие сцены.
  • minimal — без рамок, только цветные ники и текст. Не отвлекает.
  • retro — пиксельный шрифт + жирные тени. Винтаж/ретро-игры.
  • bubbles — крупные пузыри с аватарой слева (имя+текст в одной строке).

URL parametersпараметры в URL

The Overlays screen has settings that change URL parameters automatically. Full format:

На экране «Оверлеи» есть настройки — они меняют параметры ссылки автоматически. Полный формат:

https://<host>/overlay/chat/<channel>?style=cards&fade=15&fadeAnim=slide-up&max=30
  • style — one of the 7 above
  • fade — after how many seconds a message disappears (0 = keep)
  • fadeAnim — fade-out animation: blur, slide-up, slide-left, scale, dissolve, glitch
  • max — how many messages to keep on screen at once
  • style — один из 7 выше
  • fade — через сколько секунд сообщение исчезает (0 = не убирать)
  • fadeAnim — анимация исчезновения: blur, slide-up, slide-left, scale, dissolve, glitch
  • max — сколько максимум сообщений держать одновременно

emotes (7TV/BTTV/FFZ)эмодзи (7TV/BTTV/FFZ)

Third-party emotes are loaded automatically — both global packs and your channel-specific emotes. To add memes (KEKW, OMEGALUL, Pog, etc.) — go to 7tv.app, log in via Twitch, find the emote and click Add to Active Set. Backend picks them up in ~5 minutes.

Третьесторонние эмодзи подгружаются автоматически — и глобальные пакеты, и эмодзи конкретно твоего канала. Чтобы добавить мемные (KEKW, OMEGALUL, Pog и т.д.) — заходишь на 7tv.app, логинишься через Twitch, ищешь нужный и жмёшь Add to Active Set. Бэкенд подцепит за ~5 минут.

badgesбейджи

Real Twitch badges are used (mods get a green sword, VIP — a diamond, subs — a star, etc.). Loaded via Helix API on the first chat message.

Используются настоящие бейджи Twitch (моды получают зелёный меч, VIP — алмаз, сабы — звезду и т.д.). Подгружаются через Helix API при первом сообщении в чате.

demo modeдемо-режим

If your channel is still empty — the preview runs a demo chat with fake messages: see how the style will look in real conditions. Demo emotes are global only (KEKW and similar shared emotes won't show up until you add them yourself).

Если на канале ещё тихо — в превью идёт демо-чат с фейковыми сообщениями: посмотреть как стиль будет выглядеть в реальной обстановке. Эмодзи в демо — только глобальные (KEKW и подобные shared-эмодзи не покажутся пока ты их не добавишь себе).

known issuesизвестное

Old OBS (built-in Chromium) may "sharply" cut the top of the chat instead of smooth fade. We have a JS-fallback that renders fade manually — should work. If it doesn't — update OBS to 28+.

Старая версия OBS (Chromium встроенный) может «резко» обрезать верх чата вместо плавного fade. У нас есть JS-fallback который рендерит fade вручную — должно работать. Если не работает — обнови OBS до 28+.

Clarity/docsдокументация/analyticsаналитика

AnalyticsАналитика

Channel chat analytics — how many messages, who chats the most, which commands are called more often. The Analytics screen in the panel. Only the channel owner sees it.

Аналитика чата канала — сколько сообщений, кто пишет больше всех, какие команды звучат чаще. Экран Аналитика в панели. Видит только владелец канала.

what it showsчто показывает

  • KPI cards — messages today / unique chatters today / messages this week / month
  • messages/hour chart — line chart of chat activity for 24h / 7d / 30d (toggle)
  • top chatters — top-10 most active viewers for day / week / month with progress bars
  • KPI-карточки — сообщений сегодня / уникальных чаттеров сегодня / сообщений за неделю / месяц
  • график messages / hour — линейный график активности чата за 24 часа / 7 дней / 30 дней (переключатель)
  • top chatters — топ-10 самых активных зрителей за день / неделю / месяц с прогрессбарами

how it worksкак это работает

Bot sits in IRC chat and counts every message into an in-memory buffer (no disk writes — fast, doesn't block chat). Once every 60 seconds the buffer is flushed to a SQLite database analytics.db. The dashboard shows you aggregates — no raw messages are stored.

Бот сидит в IRC-чате и считает каждое сообщение в in-memory буфер (без записи на диск — это быстро и не блокирует чат). Раз в 60 секунд буфер сливается в SQLite-базу analytics.db. В панели ты видишь только сводки — сами тексты сообщений нигде не хранятся.

what is NOT collectedчто НЕ собирается

  • message text (only counters)
  • private/whisper messages
  • data from other channels — each streamer sees only themselves
  • тексты сообщений (только счётчики)
  • приватные/whisper-сообщения
  • данные с других каналов — каждый стример видит только себя

data collection start pointс какого момента данные

Analytics starts accumulating from the moment the bot is enabled on the channel. No historical data before that — Twitch doesn't provide it. First numbers on the chart will appear 1-2 minutes after start.

Аналитика начинает копиться с момента включения бота на канале. Исторических данных за период до подключения нет — Twitch их не отдаёт. Первые цифры на графике появятся через 1-2 минуты после старта.

roadmap

phase 2 planned: activity heatmap by hour/day-of-week, top commands (!faceit, !music), top emotes, follower growth per day, per-stream breakdown (peak viewers per each stream).

в этап 2 запланированы: heatmap активности по часам/дням недели, топ команд (!faceit, !музыка), топ эмодзи, рост followers по дням, per-stream breakdown (peak viewers за каждый стрим).

//docs/platforms/twitch

twitch integration

bot accountаккаунт бота

shizick666 — single bot account for all Twitch channels.

shizick666 — единый аккаунт бота для всех Twitch-каналов.

how to authorizeкак авторизоваться

On /login type 1 or twitch. Twitch OAuth opens — grant access.

На странице /login введи 1 или twitch. Откроется OAuth страница Twitch — разреши доступ.

messagesсообщения

Bot sends via official Helix /chat/messages endpoint — this gives your stream a bot badge in chat (same as other "Verified Bot" accounts).

Бот отправляет через официальный Helix /chat/messages endpoint — это даёт твоему стриму бот-значок в чате (как у других "Verified Bot" аккаунтов).

not supportedчто не поддерживается

  • Message pin — Twitch doesn't expose API for third-party (only via web cookies)
  • Subscriber events — partially via EventSub, not everywhere
  • Pin сообщений — Twitch не предоставляет API для third-party (только через web-cookies)
  • Subscriber events — частично через EventSub, не везде
//docs/platforms/kick

kick integration

bot accountаккаунт бота

sh1zick — single bot account for all Kick channels.

sh1zick — единый аккаунт бота для всех Kick-каналов.

how to addкак добавить

  1. On /login type 2 or kick
  2. Authorize via Kick OAuth
  3. Switch to your Kick channel in the panel — the dropdown at the top
  4. In Kick chat give bot mod rights: /mod sh1zick
  5. На /login введи 2 или kick
  6. Авторизуй через Kick OAuth
  7. В панели переключись на свой Kick-канал — выпадающий список сверху
  8. В чате Kick выдай боту мод-права: /mod sh1zick

what worksчто работает

  • Faceit (!elo, !lobby, etc.)
  • Custom commands + templating
  • Economy
  • Trivia + autostart
  • Mini-games / lottery
  • Giveaways + timers
  • Moderation (link/banword filter)
  • Stream control (!title, !game, quick-cats)
  • Music (!track)
  • Faceit (!elo, !lobby и т.д.)
  • Кастомные команды + шаблонизатор
  • Экономика
  • Trivia + автозапуск
  • Mini-games / lottery
  • Giveaways + timers
  • Moderation (фильтр ссылок/банвордов)
  • Стрим-управление (!title, !game, quick-cats)
  • Music (!трек)

notesособенности

On Kick new accounts may not be allowed to post links — it's blocked by Kick itself, not our bot. Fixed by account verification or mod rights on the channel where it posts.

На Kick новые аккаунты могут не иметь права писать ссылки — это блокирует сам Kick, не наш бот. Решается верификацией аккаунта или mod-правами на канале где он пишет.

//docs/public api/nightbot

public faceit api // for nightbot / streamelements / fossabot

Any streamer can add Faceit commands to their Nightbot (or StreamElements / Fossabot) via our public API — no registration, no auth.

Любой стример может добавить Faceit-команды в свой Nightbot (или StreamElements / Fossabot) через наш публичный API — без регистрации, без авторизации.

API returns plain text, cached for 60 seconds, limited to 400 chars (Nightbot's limit for $(urlfetch)).

API возвращает plain text, кэшируется на 60 секунд, ограничен 400 символами (лимит Nightbot для $(urlfetch)).

endpoints

/api/nb/elo
current elo + today's W/Lтекущее эло + сегодняшние W/L
/api/nb/today
today's stats (W/L and ± elo)статистика за сегодня (W/L и +/- эло)
/api/nb/last
last match (map, score, K/D)последний матч (карта, счёт, K/D)
/api/nb/lobby
live status of current match (map, score, time, avg elo)live-статус текущего матча (карта, счёт, время, avg elo)

Parameter: ?nick=FaceitNick (also ?nickname=...). Case-insensitive.

Параметр: ?nick=FaceitNick (можно также ?nickname=...). Регистр не важен.

examplesпримеры

// test in browser, replace nick with yours:проверь прямо в браузере, заменив ник на свой:
https://claritysync.ru/api/nb/elo?nick=sh1zick

// response (plain text):ответ (plain text):
⭐ Lvl 10 · 2350 elo · today: 5W-2L (+45)сегодня: 5W-2L (+45)

how to add to nightbotкак добавить в nightbot

  1. Go to your Nightbot dashboard → Commands → Custom
  2. Click Add Command
  3. Fill in:
    Name:    !elo
    Message: $(urlfetch https://claritysync.ru/api/nb/elo?nick=YOUR_FACEIT_NICK)
    Userlevel: Everyone
    Cooldown: 5
  4. Save and test in chat with !elo
  5. Зайди в свою Nightbot dashboard → Commands → Custom
  6. Нажми Add Command
  7. Заполни:
    Name:    !elo
    Message: $(urlfetch https://claritysync.ru/api/nb/elo?nick=ТВОЙ_ФЕЙСИТ_НИК)
    Userlevel: Everyone
    Cooldown: 5
  8. Сохрани и проверь в чате !elo

add via chat (faster)добавить через чат (быстрее)

In your Twitch chat tell Nightbot (replace sh1zick with your faceit nick):

В своём Twitch-чате напиши Nightbot'у (вместо sh1zick — свой faceit ник):

!addcom !elo $(urlfetch https://claritysync.ru/api/nb/elo?nick=sh1zick)
!addcom !today $(urlfetch https://claritysync.ru/api/nb/today?nick=sh1zick)
!addcom !last $(urlfetch https://claritysync.ru/api/nb/last?nick=sh1zick)
!addcom !lobby $(urlfetch https://claritysync.ru/api/nb/lobby?nick=sh1zick)

streamelements / fossabot

Works identically — use the same URL inside ${urlfetch} (SE) or (customapi) (Fossabot).

Работает идентично — используй такой же URL внутри ${urlfetch} (SE) или (customapi) (Fossabot).

streamelements exampleпример streamelements

!command add !elo ${urlfetch https://claritysync.ru/api/nb/elo?nick=sh1zick}

fossabot exampleпример fossabot

!commands add !elo $(customapi https://claritysync.ru/api/nb/elo?nick=sh1zick)

limits and stabilityлимиты и стабильность

  • 60s cache — repeat requests within a minute return the same response instantly, no load on Faceit.
  • 400 char limit — long responses are auto-truncated with .
  • Nightbot itself sets default cooldown ~5s per command — that's fine.
  • Faceit API limits our bot to ~10 req/sec, but with 60s cache it's not a problem even on big channels.
  • Кэш 60 секунд — повторные запросы за минуту отдают тот же ответ мгновенно, без нагрузки на Faceit.
  • Лимит 400 символов — длинные ответы автоматически обрезаются с .
  • Сам Nightbot ставит cooldown по умолчанию ~5 секунд на команду — это норм.
  • Faceit API ограничивает наш бот ~10 запросов/секунду, но с кэшем 60с это не проблема даже на крупных каналах.

legacy pathsустаревшие пути

Old paths /api/public/faceit/elo etc. work the same, use whichever. The new /api/nb/* are just shorter.

Старые пути /api/public/faceit/elo и т.д. — работают так же, можешь использовать любые. Новые /api/nb/* просто короче.

//docs/troubleshoot

troubleshoot

bot doesn't respond in chatбот не отвечает в чате

  • Check the Bot in chat switch is on, on the Dashboard screen
  • Check that bot is a mod on your channel (/mod shizick666 on twitch)
  • Twitch may delay messages from new bots on new channels — wait a few minutes
  • Проверь, что тумблер Бот в чате включён на экране «Главная»
  • Проверь что бот — мод твоего канала (/mod shizick666 на twitch)
  • Twitch может задерживать сообщения новых ботов на новых каналах — подожди несколько минут

!track says "feature not configured"!трек пишет "функция не настроена"

Server doesn't have yt-dlp or ffmpeg installed. Admin should install:

На сервере не установлен yt-dlp или ffmpeg. Админ должен установить:

apt install -y ffmpeg
pip install yt-dlp

!track says "audd: quota exceeded"!трек пишет "audd: quota exceeded"

AudD free limit (300/mo) is used up. Need to update token in .env or wait until next month.

Закончился бесплатный лимит AudD (300/мес). Надо обновить токен в .env или подождать следующего месяца.

streamer shows offline while onlineстример показывается offline хотя онлайн

Cache refreshes every 60 seconds — wait a minute. If still offline — ping us, we'll check logs.

Cache обновляется раз в 60 секунд — подожди минуту. Если всё равно offline — пиши, посмотрим логи.

//docs/contact

contact / about

$ cat ~/about.txt

coder. ~2 years deep in python — asyncio, quart, twitchio,
some frontend (vanilla js, html, css), deploys on linux-vps,
nginx, systemd. love when everything works by itself and quietly.

clarity is my main long-term project.
started as a simple twitch-bot for my own channel, grew into
a multi-platform thing with kick integration, faceit live-summaries,
economy, mini-games, shazam-style music recognition and
a full web dashboard.

i do everything myself: backend, frontend, deploy, support, docs.
open to commercial projects, bot/integration gigs and just
interesting collabs.
кодер. ~2 года плотно в python — asyncio, quart, twitchio,
немного frontend (vanilla js, html, css), деплой на linux-vps,
nginx, systemd. люблю когда всё работает само и тихо.

clarity — мой основной долгосрочный проект.
начинал как простой twitch-бот для своего канала, вырос до
multi-platform штуки с kick-интеграцией, faceit live-сводками,
экономикой, мини-играми, шазам-распознаванием музыки и
полноценной веб-панелью.

делаю всё сам: backend, frontend, deploy, support, документация.
открыт к коммерческим проектам, заказам на ботов / интеграции
и просто интересным коллабам.

$ whoami --details

role     :: developer / admin / solo
nickname :: sh1zick
since    :: ~2 years in python
stack    :: python · asyncio · quart · twitchio · kick api · sqlite · aiohttp
frontend :: vanilla js · html · css (without frameworks, on purpose)
deploy   :: ubuntu vps · systemd · nginx
status   :: open for work

twitch   :: twitch.tv/shizick666
kick     :: kick.com/sh1zick
telegram :: t.me/sh1zick666
email    :: shizick@claritywork.ru