@oebot/core
Version:
能跑就行的 QQ 机器人框架,基于 oicq v2,改自KiviBot(R.I.P.)
75 lines (74 loc) • 2.93 kB
JavaScript
;
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);
}
}