heybox-bot
Version:
A heybox chat bot frame
128 lines • 3.69 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.WSMsgImpl = void 0;
const message_1 = require("../../type/message");
/**
* 实现WebSocket消息的类,同时也实现了命令源的接口
* 该类用于处理和封装WebSocket消息,提供消息回复、用户回复等功能
*/
class WSMsgImpl {
/**
* 构造函数
* @param sender 消息发送函数
* @param userSender 用户消息发送函数
* @param data WebSocket消息数据
* @param additional 额外的信息,包括频道、房间、用户信息等
*/
constructor(sender, userSender, data, additional) {
this.msg_id = data.msg_id;
this.send_time = data.send_time;
this.channel_id = additional.channel_id;
this.channel_name = additional.channel_name;
this.channel_type = additional.channel_type;
this.room_id = additional.room_id;
this.room_nickname = additional.room_nickname;
this.user_info = additional.user_info;
this.sender = sender;
this.userSender = userSender;
}
/**
* 获取用户昵称
* @returns 用户昵称
*/
getName() {
return this.user_info.nickname;
}
/**
* 检查权限,目前未实现
* @param permission 权限字符串
* @returns 总是返回true
*/
hasPermission(permission) {
return !!permission || true;
}
/**
* 发送失败消息
* @param msg 消息内容或Message对象
*/
fail(msg) {
if (typeof msg === 'string')
this.reply(`fail: ${msg}`);
else
this.reply(msg);
}
/**
* 发送成功消息
* @param msg 消息内容或Message对象
*/
success(msg) {
this.reply(msg);
}
/**
* 通过回调函数发送失败消息
* @param callback 回调函数,用于构建消息
*/
failBy(callback) {
this.replyBy(callback);
}
/**
* 通过回调函数发送成功消息
* @param callback 回调函数,用于构建消息
*/
successBy(callback) {
this.replyBy(callback);
}
/**
* 回复消息
* @param msg 消息内容或Message对象
*/
reply(msg) {
if (typeof msg === 'string') {
msg = message_1.ExtendedMarkdownMessageImpl.create()
.at(this.user_info)
.reply(this.msg_id)
.to(this.room_id, this.channel_id)
.text(msg);
}
else {
msg.room_id = this.room_id;
msg.channel_id = this.channel_id;
}
this.sender(msg);
}
/**
* 通过回调函数回复消息
* @param callback 回调函数,用于构建消息
*/
replyBy(callback) {
const builder = new message_1.MessageBuilder();
callback(builder);
this.reply(builder.build());
}
/**
* 回复用户消息
* @param msg 消息内容或UserMessage对象
*/
replyUser(msg) {
if (typeof msg === 'string') {
msg = message_1.MarkdownUserMessageImpl.create()
.to(this.user_info.user_id)
.text(msg);
}
else {
msg.to_user_id = this.user_info.user_id;
}
this.userSender(msg);
}
/**
* 通过回调函数回复用户消息
* @param callback 回调函数,用于构建消息
*/
replyUserBy(callback) {
const builder = new message_1.UserMessageBuilder();
callback(builder);
this.replyUser(builder.build());
}
}
exports.WSMsgImpl = WSMsgImpl;
//# sourceMappingURL=index.js.map