Database 数据库 API 文档
Database 是 EasyBot 提供的数据库操作 API,封装了 EF Core 操作,用于管理服务器、玩家、社交账号等核心数据。每次操作都会创建新的 ServiceScope 确保数据一致性。
数据类型
ServerStateType 枚举
服务器状态类型枚举,用于记录玩家行为:
enum ServerStateType {
Unknown, // 未知状态
Join, // 玩家加入
Leave, // 玩家离开
Chat, // 玩家聊天
Death, // 玩家死亡
Achievement // 玩家成就
}
核心接口
- ServerInfo: 服务器信息,包含 ID、名称、Token、创建时间和玩家列表
- Player: 玩家信息,包含 ID、名称、UUID、IP、时间戳和关联数据
- SocialAccount: 社交账号信息,包含平台、UUID、名称、头像等
- ServerState: 服务器状态记录
- PlayerRecord: 玩家行为记录
- ServerGroup: 服务器组管理
- Group: 群组信息管理
服务器管理
GetServers()
功能: 获取所有服务器信息
语法: function GetServers(): ServerInfo[]
示例:
const servers = db.GetServers();
logger.info(`共有 ${servers.length} 个服务器`);
GetServer()
功能: 根据 Token 获取服务器信息
语法: function GetServer(token: string): ServerInfo | null
参数:
token(string): 服务器 Token
示例:
const server = db.GetServer("server-token-123");
if (server) {
logger.info(`服务器名称: ${server.Name}`);
}
GetServerByName()
功能: 根据名称获取服务器信息
语法: function GetServerByName(name: string): ServerInfo | null
参数:
name(string): 服务器名称
示例:
const server = db.GetServerByName("我的服务器");
CreateServer()
功能: 创建新服务器
语法: function CreateServer(name: string, token: string): ServerInfo
参数:
name(string): 服务器名称token(string): 服务器 Token
示例:
const newServer = db.CreateServer("新服务器", "unique-token");
DeleteServer()
功能: 删除服务器
语法: function DeleteServer(token: string): boolean
参数:
token(string): 服务器 Token
示例:
const deleted = db.DeleteServer("server-token");
玩家管理
GetPlayers()
功能: 获取所有玩家
语法: function GetPlayers(): Player[]
示例:
const players = db.GetPlayers();
GetPlayerByName()
功能: 根据名称获取玩家
语法: function GetPlayerByName(name: string): Player | null
参数:
name(string): 玩家名称
示例:
const player = db.GetPlayerByName("Steve");
GetPlayerByUuid()
功能: 根据 UUID 获取玩家
语法: function GetPlayerByUuid(uuid: string): Player | null
参数:
uuid(string): 玩家 UUID
示例:
const player = db.GetPlayerByUuid("player-uuid");
GetServerPlayers()
功能: 获取服务器中的所有玩家
语法: function GetServerPlayers(serverToken: string): Player[]
参数:
serverToken(string): 服务器 Token
示例:
const players = db.GetServerPlayers("server-token");
CreatePlayer()
功能: 创建新玩家
语法: function CreatePlayer(name: string, uuid?: string, ip?: string): Player
参数:
name(string): 玩家名称uuid(string, 可选): 玩家 UUIDip(string, 可选): 玩家 IP
示例:
const player = db.CreatePlayer("Steve", "uuid-123", "192.168.1.1");
UpdatePlayer()
功能: 更新玩家信息
语法: function UpdatePlayer(playerId: number, name?: string, uuid?: string, ip?: string): boolean
参数:
playerId(number): 玩家 IDname(string, 可选): 玩家名称uuid(string, 可选): 玩家 UUIDip(string, 可选): 玩家 IP
示例:
const updated = db.UpdatePlayer(1, "NewName");
DeletePlayer()
功能: 删除玩家
语法: function DeletePlayer(playerId: number): boolean
参数:
playerId(number): 玩家 ID
示例:
const deleted = db.DeletePlayer(1);
社交账号管理
GetSocialAccounts()
功能: 获取所有社交账号
语法: function GetSocialAccounts(): SocialAccount[]
示例:
const accounts = db.GetSocialAccounts();
GetSocialAccount()
功能: 根据平台和 UUID 获取社交账号
语法: function GetSocialAccount(platform: string, uuid: string): SocialAccount | null
参数:
platform(string): 平台名称uuid(string): 平台用户 UUID
示例:
const account = db.GetSocialAccount("qq", "123456789");
CreateSocialAccount()
功能: 创建社交账号
语法: function CreateSocialAccount(platform: string, uuid: string, name?: string, avatarUrl?: string): SocialAccount
参数:
platform(string): 平台名称uuid(string): 平台用户 UUIDname(string, 可选): 用户名称avatarUrl(string, 可选): 头像 URL
示例:
const account = db.CreateSocialAccount("qq", "123456789", "用户名");
UpdateSocialAccount()
功能: 更新社交账号信息
语法: function UpdateSocialAccount(accountId: number, name?: string, avatarUrl?: string): boolean
参数:
accountId(number): 社交账号 IDname(string, 可选): 用户名称avatarUrl(string, 可选): 头像 URL
示例:
const updated = db.UpdateSocialAccount(1, "新名称");
DeleteSocialAccount()
功能: 删除社交账号
语法: function DeleteSocialAccount(accountId: number): boolean
参数:
accountId(number): 社交账号 ID
示例:
const deleted = db.DeleteSocialAccount(1);
账号绑定管理
BindPlayerToSocialAccount()
功能: 绑定玩家和社交账号
语法: function BindPlayerToSocialAccount(playerId: number, socialAccountId: number): boolean
参数:
playerId(number): 玩家 IDsocialAccountId(number): 社交账号 ID
示例:
const bound = db.BindPlayerToSocialAccount(1, 2);
UnbindPlayerFromSocialAccount()
功能: 解绑玩家和社交账号
语法: function UnbindPlayerFromSocialAccount(playerId: number): boolean
参数:
playerId(number): 玩家 ID
示例:
const unbound = db.UnbindPlayerFromSocialAccount(1);
AddPlayerToServer()
功能: 绑定玩家到服务器
语法: function AddPlayerToServer(playerId: number, serverToken: string): boolean
参数:
playerId(number): 玩家 IDserverToken(string): 服务器 Token
示例:
const added = db.AddPlayerToServer(1, "server-token");
RemovePlayerFromServer()
功能: 从服务器移除玩家
语法: function RemovePlayerFromServer(playerId: number, serverToken: string): boolean
参数:
playerId(number): 玩家 IDserverToken(string): 服务器 Token
示例:
const removed = db.RemovePlayerFromServer(1, "server-token");
状态和记录管理
GetServerStates()
功能: 获取服务器状态
语法: function GetServerStates(serverToken: string, limit?: number): ServerState[]
参数:
serverToken(string): 服务器 Tokenlimit(number, 可选): 限制数量,默认 10
示例:
const states = db.GetServerStates("server-token", 20);
AddServerState()
功能: 添加服务器状态
语法: function AddServerState(serverToken: string, players: string): ServerState
参数:
serverToken(string): 服务器 Tokenplayers(string): 玩家信息 JSON
示例:
const state = db.AddServerState("server-token", '{"online": 5}');
GetPlayerRecords()
功能: 获取玩家记录
语法: function GetPlayerRecords(playerName: string, serverToken?: string, limit?: number): PlayerRecord[]
参数:
playerName(string): 玩家名称serverToken(string, 可选): 服务器 Tokenlimit(number, 可选): 限制数量,默认 10
示例:
const records = db.GetPlayerRecords("Steve", "server-token", 50);
AddPlayerRecord()
功能: 添加玩家记录
语法: function AddPlayerRecord(playerName: string, serverToken: string, type: ServerStateType, data: string): PlayerRecord
参数:
playerName(string): 玩家名称serverToken(string): 服务器 Tokentype(ServerStateType): 记录类型data(string): 记录数据
示例:
const record = db.AddPlayerRecord("Steve", "server-token", db.ServerStateType.Join, "加入游戏");
服务器组管理
GetServerGroups()
功能: 获取所有服务器组
语法: function GetServerGroups(): ServerGroup[]
示例:
const groups = db.GetServerGroups();
GetServerGroupByName()
功能: 根据名称获取服务器组
语法: function GetServerGroupByName(name: string): ServerGroup | null
参数:
name(string): 服务器组名称
示例:
const group = db.GetServerGroupByName("生存服务器组");
CreateServerGroup()
功能: 创建服务器组
语法: function CreateServerGroup(name: string, serverTokens: string[]): ServerGroup
参数:
name(string): 服务器组名称serverTokens(string[]): 服务器 Token 数组
示例:
const group = db.CreateServerGroup("新组", ["token1", "token2"]);
UpdateServerGroup()
功能: 更新服务器组
语法: function UpdateServerGroup(groupId: number, name?: string, serverTokens?: string[]): boolean
参数:
groupId(number): 服务器组 IDname(string, 可选): 服务器组名称serverTokens(string[], 可选): 服务器 Token 数组
示例:
const updated = db.UpdateServerGroup(1, "新名称");
DeleteServerGroup()
功能: 删除服务器组
语法: function DeleteServerGroup(groupId: number): boolean
参数:
groupId(number): 服务器组 ID
示例:
const deleted = db.DeleteServerGroup(1);
群组管理
GetGroups()
功能: 获取所有群组
语法: function GetGroups(): Group[]
示例:
const groups = db.GetGroups();
GetGroup()
功能: 根据平台和群 ID 获取群组
语法: function GetGroup(platform: string, groupId: string): Group | null
参数:
platform(string): 平台名称groupId(string): 群组 ID
示例:
const group = db.GetGroup("qq", "123456789");
CreateGroup()
功能: 创建群组
语法: function CreateGroup(platform: string, groupId: string, name: string, enabled?: boolean): Group
参数:
platform(string): 平台名称groupId(string): 群组 IDname(string): 群组名称enabled(boolean, 可选): 是否启用,默认 true
示例:
const group = db.CreateGroup("qq", "123456789", "我的群组");
UpdateGroup()
功能: 更新群组信息
语法: function UpdateGroup(platform: string, groupId: string, name?: string, enabled?: boolean, memberCount?: number, maxMemberCount?: number, groupAvatar?: string): boolean
参数:
platform(string): 平台名称groupId(string): 群组 IDname(string, 可选): 群组名称enabled(boolean, 可选): 是否启用memberCount(number, 可选): 成员数量maxMemberCount(number, 可选): 最大成员数量groupAvatar(string, 可选): 群头像
示例:
const updated = db.UpdateGroup("qq", "123456789", "新群名");
DeleteGroup()
功能: 删除群组
语法: function DeleteGroup(platform: string, groupId: string): boolean
参数:
platform(string): 平台名称groupId(string): 群组 ID
示例:
const deleted = db.DeleteGroup("qq", "123456789");
使用注意事项
- 数据一致性: 每次操作都会创建新的 ServiceScope,确保数据一致性
- 错误处理: 建议对所有数据库操作进行适当的错误处理
- 性能考虑: 避免频繁的数据库操作,考虑批量处理
- 数据验证: 在操作前验证输入参数的有效性
- 权限控制: 确保只有授权的操作才能访问敏感数据
简单使用示例
// 创建服务器和玩家
const server = db.CreateServer("测试服务器", "test-token");
const player = db.CreatePlayer("Steve", "uuid-123");
// 绑定玩家到服务器
db.AddPlayerToServer(player.Id, server.Token);
// 记录玩家行为
db.AddPlayerRecord("Steve", "test-token", db.ServerStateType.Join, "玩家加入");
// 查询玩家记录
const records = db.GetPlayerRecords("Steve", "test-token", 10);