Files
wsmud/world/cmd/dialog/message.js
2026-05-26 16:41:20 +08:00

75 lines
2.0 KiB
JavaScript

this.inherits(COMMAND);
this.command = "message";
this.allow_busy = true;
this.allow_state = true;
this.allow_die = true;
this.allow_faint = true;
const MESSAGE = WORLD.MESSAGE;
this.regex = /^(\w+)\s(\w+)$/;
this.enter = function (me, arg, arg2) {
if (arg === 'delete') {
if (!arg2) return this.delete_all(me);
return this.delete_from(me, arg2);
}
var obj = {};
obj.type = "dialog";
obj.dialog = "message";
if (arg) {
obj.items = MESSAGE.getMessageFromID(me, arg);
obj.id = arg;
} else {
obj.messages = MESSAGE.getUserMessages(me);
}
// obj.messages = [];
// let notices = MESSAGE.getNotice();
// for (let nt of notices) {
// obj.messages.push({
// id: "notice",
// content: nt.content,
// time: nt.time,
// name: "公告"
// });
// }
// let stores = MESSAGE.getUserMessages(me);
// let diff_time = 24 * 3600000 * 30;
// let now = Date.now();
// if (stores) {
// }
me.send(JSON.stringify(obj));
}
this.delete_from = function (me, from) {
let stores = MESSAGE.stores.get(me.id);
if (!stores) return me.send('你没有消息。');
let store = stores.get(from);
if (!store) return me.send('你没有这个类型的消息。');
if (!this.check_store(store)) {
return me.send('你有未领取的消息,无法删除。');
}
stores.delete(from);
me.send('{type:"dialog",dialog:"message",clear:"' + from + '"}');
}
this.delete_all = function (me) {
let stores = MESSAGE.stores.get(me.id);
if (!stores) return;
stores.forEach((x, y) => {
if (!this.check_store(x)) {
return me.send('你有未领取的消息,无法删除。');
}
});
MESSAGE.stores.delete(me.id);
me.send('{type:"dialog",dialog:"message",clear:true}');
}
this.check_store = function (store) {
let items = store.items;
for (let item of items) {
if (item.attach && !item.rec)
return false;
}
return true;
}