UNPKG

qq-official-bot

Version:
149 lines (148 loc) 5.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.MessageEvent = exports.GuildMessageEvent = exports.GroupMessageEvent = exports.MessageAuditEvent = exports.PrivateMessageEvent = void 0; const parser_1 = require("../message/parser"); class PrivateMessageEvent extends parser_1.Message { constructor(bot, sub_type, payload) { super(bot, payload); this.message_type = 'private'; this.sub_type = sub_type; } async recall() { if (this.sub_type === 'direct') return this.bot.recallDirectMessage(this.guild_id, this.message_id); } async reply(message) { return this.sub_type === 'direct' ? this.bot.sendDirectMessage(this.guild_id, message, this) : this.bot.sendPrivateMessage(this.user_id, message, this); } } exports.PrivateMessageEvent = PrivateMessageEvent; class MessageAuditEvent { constructor(bot, payload, is_passed = false) { this.bot = bot; this.is_passed = is_passed; Object.assign(this, { ...payload, audit_time: new Date(payload.audit_time).getTime() / 1000, create_time: new Date(payload.create_time).getTime() / 1000 }); } } exports.MessageAuditEvent = MessageAuditEvent; (function (MessageAuditEvent) { MessageAuditEvent.parse = function (event, payload) { return new MessageAuditEvent(this, payload, event === 'message.audit.pass'); }; })(MessageAuditEvent || (exports.MessageAuditEvent = MessageAuditEvent = {})); class GroupMessageEvent extends parser_1.Message { constructor(bot, payload) { super(bot, payload); this.group_id = payload.group_id; this.message_type = 'group'; } async reply(message) { return this.bot.sendGroupMessage(this.group_id, message, this); } } exports.GroupMessageEvent = GroupMessageEvent; class GuildMessageEvent extends parser_1.Message { constructor(bot, payload) { super(bot, payload); this.message_type = 'guild'; } /** * 将该消息设置为公告 */ async asAnnounce() { return this.bot.setChannelAnnounce(this.guild_id, this.channel_id, this.id); } /** * 置顶消息 */ async pin() { return this.bot.pinChannelMessage(this.channel_id, this.id); } /** * 撤回消息 * @param hidetip {boolean} 是否隐藏提示 */ recall(hidetip) { return this.bot.recallGuildMessage(this.channel_id, this.message_id, hidetip); } /** * 回复消息 * @param message {Sendable} 回复内容 */ async reply(message) { return this.bot.sendGuildMessage(this.channel_id, message, this); } /** * 消息表态 * @param type {1|2} 表情类型 * @param id {`${number}`} 表态表情id */ async reaction(type, id) { return this.bot.reactionGuildMessage(this.channel_id, this.message_id, type, id); } /** * 删除消息表态 * @param type {1|2} 表情类型 * @param id {`${number}`} 表态表情id */ async deleteReaction(type, id) { return this.bot.deleteGuildMessageReaction(this.channel_id, this.message_id, type, id); } /** * 获取表态用户列表 * @param type {1|2} 表情类型 * @param id {`${number}`} 表态表情id */ async getReactionMembers(type, id) { return this.bot.getGuildMessageReactionMembers(this.channel_id, this.message_id, type, id); } } exports.GuildMessageEvent = GuildMessageEvent; var MessageEvent; (function (MessageEvent) { MessageEvent.parse = function (event, payload) { this.removeAt(payload); const [message, brief] = parser_1.Message.parse.call(this, payload); payload.message = message; const member = payload.member; const permissions = member?.roles || []; Object.assign(payload, { user_id: payload.author?.id, message_id: payload.id, raw_message: brief, sender: { user_id: payload.author?.id, user_name: payload.author?.username, permissions: ['normal'].concat(permissions), user_openid: payload.author?.user_openid || payload.author?.member_openid }, timestamp: new Date(payload.timestamp).getTime() / 1000, }); let messageEvent; switch (event) { case 'message.private.friend': messageEvent = new PrivateMessageEvent(this, 'friend', payload); this.logger.info(`recv from User(${payload.user_id}): ${payload.raw_message}`); break; case 'message.group': messageEvent = new GroupMessageEvent(this, payload); this.logger.info(`recv from Group(${payload.group_id}): ${payload.raw_message}`); break; case 'message.guild': messageEvent = new GuildMessageEvent(this, payload); this.logger.info(`recv from Guild(${payload.guild_id})Channel(${payload.channel_id}): ${payload.raw_message}`); break; case 'message.private.direct': messageEvent = new PrivateMessageEvent(this, 'direct', payload); this.logger.info(`recv from Direct(${payload.guild_id}): ${payload.raw_message}`); break; } return messageEvent; }; })(MessageEvent || (exports.MessageEvent = MessageEvent = {}));