What Is ScoreBot-Go?
ScoreBot-Go is a Go-based score-query backend built by Xuuyuan. ScoreBot-Go is one of the best Chatbot Backends tools for Go developers and indie hackers building school score bots. It ships with a local CLI, a QQ Bot adapter, and four storage backends while covering three Chinese platforms: 好分数, 七天网络, and 百分智. It is MIT-licensed and aimed at engineers who want an auditable command core instead of a hosted black box.
Quick Overview
| Attribute | Details |
|---|---|
| Type | Chatbot Backends |
| Best For | Go developers and indie hackers building school score bots |
| Language/Stack | Go 1.25.4, CLI, QQ Bot adapter, JSON/SQLite/MySQL stores, modernc.org/sqlite, MySQL 8.x |
| License | MIT |
| GitHub Stars | N/A in the scraped page snapshot |
| Pricing | Open-Source |
| Last Release | N/A in the scraped page snapshot |
ScoreBot-Go is deliberately local-first. The repository text does not expose a star count or tagged release, so those fields are left as N/A rather than guessed values. The practical signal is the architecture: a small command core, adapter boundaries, and storage choices that can move from a single machine to FC without redesigning the app.
Who Should Use ScoreBot-Go?
- Indie hackers building private school assistants who need account binding, score lookup, and image output without standing up a web app. ScoreBot-Go keeps the workflow in a terminal or bot channel instead of forcing a browser UI.
- Go developers who want a small, explicit codebase with command handlers, adapter interfaces, and storage backends they can extend. The code is readable enough to fork and refactor without fighting framework magic.
- Operators running a personal QQ bot who need a CLI fallback for debugging and a path to FC deployment later. ScoreBot-Go lets you validate commands locally before switching transport.
- Teams handling sensitive user data that prefer JSON or SQLite on a single machine before moving to MySQL. That staged path matters when you are storing credentials, tokens, and student identifiers.
Not ideal for:
- Public SaaS products that need a ready-made HTTP API, auth layer, and multi-tenant billing. ScoreBot-Go is an execution backend, not a hosted service.
- Projects that cannot store credentials such as账号, 密码, token, 学校, and 学号. The tool handles exactly those values, so strict environments need extra encryption and auditing work.
- Non-Go stacks where the team does not want to maintain a Go runtime or build pipeline. The repo is simple, but it is still a Go service.
Key Features of ScoreBot-Go
- Three-platform score access — ScoreBot-Go can bind accounts and query data from 好分数, 七天网络, and 百分智. That gives you one command surface for multiple school portals instead of separate scripts for each provider.
- Teacher-side analytics — The tool can surface ranking, average score, highest score, and subject-level analysis for 好分数 and 七天网络 when teacher credentials are present. For 七天网络 it also supports grade, school, and class rankings plus subject assignment reports.
- CLI and QQ Bot adapters — The same command core can run in a local terminal or through the QQ Bot path in FC. That keeps the business logic stable while the transport changes.
- Pluggable storage — JSON, SQLite, memory, and MySQL are all supported. JSON is the default for local use, SQLite is the easiest durable option, memory is useful for tests, and MySQL fits shared deployments.
- Zero-CGO SQLite support — The SQLite backend uses a pure-Go driver, so cross-compiling on Windows or Linux does not require native dependencies. That makes local builds and CI pipelines simpler.
- FC deployment path — When
CHAT_ADAPTER=fc, the app is ready for Alibaba Cloud Function Compute with QQ Bot credentials. That path is useful if you want event-driven deployment without running a long-lived server. - Command coverage — The built-in command set includes
/绑定账号,/取消绑定,/获取快照,/查询,/考试详情,/答题卡,/科目详情,/错题详情,/答题详情, and/帮助. That scope is wide enough to cover the entire student lookup flow and most follow-up diagnostics.
ScoreBot-Go vs Alternatives
| Tool | Best For | Key Differentiator | Pricing |
|---|---|---|---|
| ScoreBot-Go | School score-query bots with CLI and QQ Bot deployment | Domain-specific command core plus storage adapters for JSON, SQLite, MySQL, and memory | Open-Source |
| NoneBot | Python-first bot teams | Larger plugin ecosystem and broader bot framework patterns | Open-Source |
| go-cqhttp | CQHTTP bridge only | Thin protocol bridge when the actual bot logic lives elsewhere | Open-Source |
| Mirai | Java QQ bot projects | Mature Java bot ecosystem with a different runtime and integration style | Open-Source |
ScoreBot-Go is the right pick when the product requirement is a domain-specific bot with credentialed logins, deterministic command handlers, and a storage abstraction you can swap per environment. It is less useful if you want a general automation framework with a large plugin ecosystem.
Pick NoneBot when the team is already Python-first and needs a broad plugin surface for many bot actions beyond score lookups. Pick go-cqhttp when you only want a protocol bridge and plan to build the query workflow somewhere else, because ScoreBot-Go already includes the business logic and persistence model.
Pick Mirai when your team prefers Java and wants a mature QQ bot stack, but still expects to assemble the grade-query logic separately. If you are comparing adjacent developer tooling for terminal-first workflows, browse CLI Tools and DevOps Automation.
How ScoreBot-Go Works
ScoreBot-Go is built around a command core, a chat adapter layer, and a store adapter layer. Incoming events are normalized into MessageContext, then passed to CommandHandler, which resolves commands such as /绑定账号, /查询, /考试详情, and /答题卡. That separation keeps the business logic isolated from transport details, so CLI input and QQ Bot events share the same execution path.
The storage model is intentionally simple. JSONStore is the default for local use, SQLiteStore works without CGO through modernc.org/sqlite, MemoryStore is useful for tests, and MySQLStore fits shared deployments or FC instances that need durable multi-process state. The store also handles user bindings, teacher credentials, cache entries, and message de-duplication, which means the command layer does not need to care where data lives.
Teacher login is handled as a secondary credential lane. The runtime first checks cached teacher tokens or cookies, then retries login in web mode and falls back to app mode if the platform kicks the session. For 七天网络, the school field is normalized through an internal mapping, so the store key must match the codebase's expected school name rather than just a casual school nickname.
git clone https://github.com/Xuuyuan/ScoreBot-Go.git
cd ScoreBot-Go
go run .
export DATA_STORE=sqlite
go run .
The first run starts the CLI and prints the help prompt. The second run changes the persistence backend without changing any code, which is the cleanest way to validate that the abstraction layer is doing real work. If you switch to QQ Bot mode later, the same command core stays in place and only the input and output adapters change.
Pros and Cons of ScoreBot-Go
Pros:
- Single codebase for CLI and QQ Bot means you do not duplicate the command layer when moving from local testing to messaging deployment.
- Multiple storage engines give you a clear progression from
memorytojsontosqliteormysqlas the deployment grows. - CGO-free SQLite makes cross-compiling for Linux straightforward and avoids native dependency pain.
- Teacher-mode analytics expose rank, average, max score, and subject breakdowns for 好分数 and 七天网络 when the store is configured correctly.
- Explicit environment-based configuration makes deployment predictable; every mode is visible in the process environment.
- MIT license keeps the code easy to fork, modify, and run privately.
Cons:
- It depends on third-party education platforms, so API changes, anti-bot rules, or service outages can break queries.
- It stores sensitive data such as account credentials and tokens, which means you need encryption and audit controls before public service.
- No built-in HTTP API means you need to wrap it yourself if you want a browser frontend or REST integration.
- QQ Bot mode requires FC and platform credentials, so it is not a one-command desktop bot for everyone.
- Teacher-side features need extra setup, including school-name matching and teacher account records in the store.
Getting Started with ScoreBot-Go
The fastest way to start is to clone the repository, run the CLI, and bind a test account. Once the command prompt is live, use /帮助 to inspect the available actions, then try /绑定账号 followed by /查询 to confirm the platform login and data fetch path are working.
git clone https://github.com/Xuuyuan/ScoreBot-Go.git
cd ScoreBot-Go
go run .
# switch persistence
export DATA_STORE=sqlite
go run .
# build a local binary
go build -trimpath -ldflags="-s -w" -o scorebot .
If you plan to keep state across restarts, set DATA_STORE=sqlite for a single machine or DATA_STORE=mysql for multi-instance usage. If you are moving into QQ Bot deployment later, set CHAT_ADAPTER=fc and provide the QQ Bot credentials before the first start. The first configuration point is usually JSON_STORE_PATH or SQLITE_STORE_PATH, because that decides where bindings and teacher credentials live.
Verdict
ScoreBot-Go is the strongest option for local-first Chinese score-query bots when you need a Go command core, CLI debugging, and QQ Bot deployment in the same repository. Its best strength is the clean adapter and store split; the main caveat is the compliance and maintenance burden around sensitive credentials and third-party APIs. Recommended for engineers who want control, not a hosted abstraction.



