尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Web dashboard for YEPPBot - ASP.NET Core 10 backend + Angular 22 frontend
翻译准备中
取自仓库 README
正在加载完整 README。 以下为已保存的摘录。
Web dashboard for YEPPBot — a monolithic Twitch chat bot with no interactive console of its own. YEPPDash lets broadcasters control YEPPBot from a browser instead of only via Twitch chat commands, without weakening the bot's security posture: end users never talk to the bot directly, only to this dashboard's backend.查看完整 README ↗Web dashboard for YEPPBot — a monolithic Twitch chat bot with no interactive console of its own. YEPPDash lets broadcasters control YEPPBot from a browser instead of only via Twitch chat commands, without weakening the bot's security posture: end users never talk to the bot directly, only to this dashboard's backend.
Status: early beta, actively developed. Twitch login, moderator/VIP/editor management, letting the bot join/leave your channel, custom commands, quote management, follower birthdays, BDSM test results, auto-shoutouts for raiders, a channel point reward that buys a timeout, and two OBS overlays (a lucky wheel and a subathon timer) are live. The UI, and the feature set, are still changing.
!queue commands are not in YEPPBot yet, so nothing can join it today)| Backend | ASP.NET Core 10 (C#), MVC Controllers, Dapper + MySqlConnector, ClosedXML |
| Frontend | Angular 22 + Angular Material, SSR (@angular/ssr + Express) |
| Auth | Twitch OAuth2 (authorization code) + Helix /users — no local passwords/user table |
| Database | One MariaDB for both environments, split by schema: YEPPBot owns and migrates helix (YEPPBot-Dev in development), YEPPDash owns YEPPDash (YEPPDash-Dev) |
| Twitch events | EventSub over WebSocket, one connection per broadcaster — every EventSub limit is counted per client id and user id together |
| Live updates | Server-Sent Events, one in-process hub per feature — assumes a single backend instance, which docker-compose.yaml runs |
| Reverse proxy | Caddy, run by the operator outside this repo — subdomain routing (dash.yeppbot.com/.dev → frontend, api.yeppbot.com/.dev → backend) |
YEPPDash/
├── backend/ # ASP.NET Core 10 Web API (Rider project)
├── frontend/ # Angular 22 + Material SSR app (WebStorm project)
├── docs/ # API client docs
├── docker-compose.yaml # local dev only: backend + frontend, ports published directly, no reverse proxy
└── .env.example # template for the gitignored .env (DB connection strings)
Reverse proxying (Caddy) is not part of this repo — it's handled by the operator's separate, existing Caddy setup, which routes dash.yeppbot.com/.dev to the frontend and api.yeppbot.com/.dev to the backend.
backend/ and frontend/ are independent IDE project roots (Rider / WebStorm respectively) inside this one repository.
docs/twitch-api-client.md — endpoints and features of the two Twitch API wrappers (Helix + OAuth)docs/yeppbot-api-client.md — the HTTP client YEPPDash uses to talk to a running YEPPBot instance (join/leave a channel, reload custom commands)docs/subathon-timer.md — the table the subathon timer shares with YEPPBot: the statements each chat command is, and what either side must not touchdocs/queue.md — the same for the queue: why the waiting list is one text column, and which half owns which commanddocs/giveaway.md — how a channel point redemption becomes a weighted slice: why the reward filter runs before the shared redemption log, and why the overlay stream never sees the entrantsActions that change how the running bot behaves — join/leave a channel, reload custom commands — go through a small HTTP API on YEPPBot itself rather than being written into its state behind its back; see docs/yeppbot-api-client.md for the contract. That keeps YEPPBot's inputs to "its own HTTP API" and "the Twitch API," matching its existing security model.
The subathon timer and the queue are the exceptions, and deliberately so: both sides write the same row of one shared table, with no call in either direction. There is nothing to reload — the row is the state, and the bot reads it when it answers a command. docs/subathon-timer.md and docs/queue.md are the contracts that keep those halves in step.
BSD 3-Clause — see LICENSE.