UNPKG

@oebot/core

Version:

能跑就行的 QQ 机器人框架,基于 oicq v2,改自KiviBot(R.I.P.)

75 lines (74 loc) 2.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.bindSendMessage = exports.MessageCounts = void 0; const src_1 = require("../index"); const utils_1 = require("../utils"); /** 记录已发送的消息数 */ exports.MessageCounts = { value: 0 }; /** 重写消息发送函数,记录发送消息数并打印日志 */ async function bindSendMessage(bot) { bot.gl.forEach(({ group_id, group_name = '未知' }) => { const group = bot.pickGroup(group_id); const sendMsg = group.sendMsg.bind(group); const head = `↑ [群:${group_name}(${group_id})]`; group.sendMsg = async (content, source, anony) => { src_1.OELogger.info(utils_1.colors.gray(`${head} ${stringifySendable(content)}`)); // 已发送消息计数 exports.MessageCounts.value++; return sendMsg(content, source, anony); }; }); bot.fl.forEach(({ user_id, nickname = '未知' }) => { const friend = bot.pickFriend(user_id); const sendMsg = friend.sendMsg.bind(friend); const head = `↑ [私:${nickname}(${user_id})]`; friend.sendMsg = async (content, source) => { src_1.OELogger.info(utils_1.colors.gray(`${head} ${stringifySendable(content)}`)); // 已发送消息计数 exports.MessageCounts.value++; return sendMsg(content, source); }; }); bot.on('notice.group.increase', ({ group, user_id }) => { if (user_id !== bot.uin) { return; } const { group_id, name = '未知' } = group; const sendMsg = group.sendMsg.bind(group); const head = `↑ [群:${name}(${group_id})]`; group.sendMsg = async (content, source, anony) => { src_1.OELogger.info(utils_1.colors.gray(`${head} ${stringifySendable(content)}`)); // 已发送消息计数 exports.MessageCounts.value++; return sendMsg(content, source, anony); }; }); bot.on('notice.friend.increase', ({ friend }) => { const { user_id, nickname = '未知' } = friend; const sendMsg = friend.sendMsg.bind(friend); const head = `↑ [私:${nickname}(${user_id})]`; friend.sendMsg = async (content, source) => { src_1.OELogger.info(utils_1.colors.gray(`${head} ${stringifySendable(content)}`)); // 已发送消息计数 exports.MessageCounts.value++; return sendMsg(content, source); }; }); } exports.bindSendMessage = bindSendMessage; function stringifySendable(content) { if (Array.isArray(content)) { return content.map(stringifyMessageItem).join(''); } return stringifyMessageItem(content); } function stringifyMessageItem(content) { if (typeof content === 'string') { return content; } else { return JSON.stringify(content); } }