为了最高的性能和安全性,后端完全采用 Rust 开发。
- Install [Rust].
- Setup your bot with @botfather.
- Clone this repository.
- Set the environment variables:
export TELOXIDE_TOKEN=<BOT TOKEN e.g. 123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ> export TELOXIDE_PROXY=<PROXY e.g. http://127.0.0.1:7890> export SAFC_DB_PATH=<DATABASE PATH e.g. /path/to/safc.db>
- Run
cargo runfrom the repository directory. - Send a message to your bot with
/startcommand. - Enjoy!
作为系统服务运行参考:
[Unit]
Description=SAFC Bot Service
After=network.target
[Service]
Environment="https_proxy=http://127.0.0.1:7890"
Environment="http_proxy=http://127.0.0.1:7890"
Environment="TELOXIDE_TOKEN=123456789:ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Environment="TELOXIDE_PROXY=http://127.0.0.1:7890"
Environment="SAFC_DB_PATH=/path/to/db.sqlite"
ExecStart=/path/to/safc_bot
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target目前:完全前后端分离,前端使用完全静态的界面,后端只提供 API
前端使用 next.js 开发,采用git submodule的方式集成,submodule路径为web, 仓库为 safc-web
项目使用 GitHub Actions 执行基础的格式化、静态检查与测试流程。提交前请至少手动运行以下命令,避免破坏 CI:
cargo fmt:保持 Rust 代码风格一致cargo clippy --all-targets --all-features:提前发现潜在问题cargo test --all:确认现有功能未被破坏
对于前端改动,请在 web/ 子仓库执行 npm install 后运行 npm run lint 与 npm test。如需调试失败的 CI,请参考 .github/workflows/ 中的配置文件获取完整命令。
数据库需要完全彻底的重构,但具体的实现方案仍未妥善设计。重新设计的数据库需满足去中心化的特征。
目前还仍然只是构想阶段,目前可以用以下极其临时的方法创建新中心:
- 获取可执行文件与数据库文件
- 向 @botfather 申请并运行 bot
- 在 @SAFC_group 声名您的 bot
- 定期同步数据库
目前仍是通过手动运行脚本来完成这个特征。仍有很多代码内外的事情需要考虑。
目前的重点工作:数据库需要完全彻底的重构
- VIS
- logo
- db
- 使用更现代化的 sql 范式
- 定时备份、发布数据库 在 SAFC 官方 tg 群中
- web 端 bot 端均能下载数据库
- 数据库版本管理、合并与更新
- tg bot 功能
-
/start重构 —— 作为功能指引 - 嵌套评价
- 更方便优雅地评价(翻页、回调)
- 输出可能长于 4096,超出单条消息上线
- 提供多格式数据库下载
- 提供
sqlite文件下载的功能 - [x] 模糊/快速 搜索 - 转为内联按钮的形式
- 提供
- 评价的编辑与删除
- 数据汇报
- 抗攻击 - 按 uid 限制次数
- 数据定时上传备份到 @SAFC_group 目前高优先级
- 向管理员发送日志
-
- web
- 静态网页 demo
- GitHub Pages CD
- next.js 重构
- 完整功能
- 欢迎页
- 提供多格式数据库下载
- 提供
sqlite文件下载的功能
- 提供
- 提供一些实用工具
- 可用网页列表与存活性检查
- 静态网页 demo
- 更多平台
- 浏览器插件 方便地加入导师相关评价
- Discord、matrix 等更多社群平台
- 部署
- env 转而使用配置文件的形式 & docker
- CI CD 自动部署
- 数据
- wiki 形式的客体基本信息
-
tmp_from_tg数据待录入
- 文档
- 开发文档
- 使用文档,包括导师评价规范、隐私目的的文字指导、社区公约等
- 带计划!
- 基于 Telegram 通讯的分布式数据库与分布式 bot
- 目前的想法是使用区块链类似的结构
- 基于 Telegram 通讯的分布式数据库与分布式 bot