喵呜~
This commit is contained in:
54
server/api/Chat.js
Normal file
54
server/api/Chat.js
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
import io from '../lib/io.js';
|
||||||
|
|
||||||
|
|
||||||
|
const baseDir = 'whiteslik_data/chat'
|
||||||
|
io.mkdirs(baseDir)
|
||||||
|
|
||||||
|
export class ChatManager {
|
||||||
|
/**
|
||||||
|
* 获取私聊实例 (双方可对调)
|
||||||
|
* @param { String } a 用户A 的 ID
|
||||||
|
* @param { String } b 用户B 的 ID
|
||||||
|
* @returns { Chat }
|
||||||
|
*/
|
||||||
|
static getPrivateChat(a, b) {
|
||||||
|
let id = [
|
||||||
|
a,
|
||||||
|
b,
|
||||||
|
].sort()
|
||||||
|
if (!io.exists(`${baseDir}/${id}`)) {
|
||||||
|
io.mkdirs(`${baseDir}/${id}`)
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export class Chat {
|
||||||
|
constructor(id) {
|
||||||
|
if (!io.exists(`${baseDir}/${id}`)) throw new Error(`聊天 [id=${id}]不存在!`)
|
||||||
|
|
||||||
|
// 尽管所有的键都是 undefined 但是仍然是键哦
|
||||||
|
for (let k of Object.keys(this)) {
|
||||||
|
this[k] = io.open(`${baseDir}/${id}/${k}`, 'rw').checkExistsOrWrite('').readAllAndClose().toString()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
updateInfo() {
|
||||||
|
// 尽管所有的键都是 undefined 但是仍然是键哦
|
||||||
|
for (let k of Object.keys(this)) {
|
||||||
|
io.open(`${baseDir}/${this.id}/${k}`, 'w').writeAll((this[k] || '') + '').close()
|
||||||
|
}
|
||||||
|
// 防止服务端错误修改此值 主要是都是属性了再搞特殊对待很麻烦的
|
||||||
|
io.open(`${baseDir}/${this.id}/id`, 'w').writeAll(this.id + '').close()
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 聊天 ID
|
||||||
|
* @type { String }
|
||||||
|
*/
|
||||||
|
id
|
||||||
|
}
|
||||||
|
|
||||||
|
export class ChatApi {
|
||||||
|
static createUser() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user