本项目是主题创建程序的后端,需要结合ThemeWeb(前端网页界面)使用
interface BotConfig {
botApi:string
}
interface DBConfig {
username:string
password:string
}
let devObject:BotConfig={
botApi:""
}
let proObject:BotConfig={
botApi: ""
}
let dbConfig:DBConfig={
username:"",
password:"",
}
export let dbConfigPro:DBConfig={
username:"",
password:"",
}
export {devObject, proObject,dbConfig,DBConfig}项目中定义了两个主要的数据库模型,用于存储主题切换记录和编辑日志:
-
jump_to_theme:- 字段:
type: 主题类型(0 表示 Android,1 表示桌面)。theme_name: 主题名称。date: 切换时间。
- 字段:
-
theme_editor_log:- 字段:
kind: 日志种类。ip: 用户 IP 地址。date: 操作时间。
- 字段:
import { initModels } from './db/models/init-models';
import { Sequelize } from 'sequelize';
const sequelize = new Sequelize('database', 'username', 'password', {
host: 'localhost',
dialect: 'mysql',
});
initModels(sequelize);
sequelize.sync();服务启动后,将同时运行 HTTP API 和 Telegram Bot。相关初始化逻辑位于 server.ts 文件中:
import { initBot } from "./src/bot/bot";
import { initHttp } from "./src/express/http-config";
// 启动 HTTP 服务
initHttp();
// 启动 Telegram Bot
initBot();用户可以通过发送 /start 命令并附带参数来发送主题。例如:
/start ${themeNameA}:切换到名为themeName的 Android 主题。/start ${themeNameD}:切换到名为themeName的桌面主题。
本项目提供了一组 RESTful API 接口,用于管理 Telegram 主题(.attheme 文件)、生成预览、编辑模板以及记录日志。以下是详细的 HTTP API 说明。
- 服务器地址:
http://<your-server-ip>:3000 - 跨域支持: 允许所有来源 (
*) - 静态文件目录:
-
/public/tempelete/tohuemodle(存储模板文件)- 每 一个模板文件都对应一个ts文件
-
/public/myserver-bot-public/attheme -
/public/myserver-bot-public/desk
-
- URL:
/attheme - Method:
GET - Description: 返回当前可用的 Android 主题列表。
- URL:
/desk - Method:
GET - Description: 返回当前可用的桌面主题列表。
- URL:
/colorlist - Method:
POST - Description: 根据请求数据生成颜色图片。
- URL:
/attheme-create - Method:
POST - Description: 根据请求数据生成不透明的 Android 主题文件。
- Request Body:
- URL:
/attheme-create/tran - Method:
POST - Description: 根据请求数据生成透明的 Android 主题文件。
- Request Body:
- URL:
/tdesktop-create - Method:
POST - Description: 根据请求数据生成桌面主题文件。
- Request Body:
- URL:
/templete-info - Method:
GET - Description: 返回当前支持的模板信息。
- Response:
- URL:
/templete-editor/ - Method:
POST - Description: 根据请求数据应用模板并生成新的主题文件。
- Request Body:
{
"kind": "android", // 或 "desktop"
"type": "black", // 或 "white"
"model": "default",
"hue": 200,
"sat": 50,
"lig": 75,
"alpha": 0.8
}