n8n-nodes-onebot-api
Version:
OneBot node for n8n workflow, now you can send message to your QQ friend or group. This version includes optimized group and private chat operations and enhanced permission grading. OneBot 节点用于 n8n 工作流,现在您可以向您的 QQ 朋友或群组发送消息。此版本包括优化的群聊和私聊操作以及增强的权限分级。
134 lines • 6.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.handleMultipleInputsForward = void 0;
const GenericFunctions_1 = require("./GenericFunctions");
async function handleMultipleInputsForward(itemsLength) {
try {
console.log(`处理多输入项转发,总共${itemsLength}个项目`);
const operation = this.getNodeParameter('operation', 0);
if (!['send_private_msg', 'send_group_msg'].includes(operation)) {
throw new Error('多输入项转发消息仅支持发送私聊消息和群消息操作');
}
const loginInfo = await GenericFunctions_1.apiRequest.call(this, 'GET', 'get_login_info');
const botInfo = (loginInfo === null || loginInfo === void 0 ? void 0 : loginInfo.data) || { user_id: '0', nickname: 'Bot' };
console.log(`获取机器人信息:ID: ${botInfo.user_id}, 昵称: ${botInfo.nickname}`);
let userId = botInfo.user_id.toString();
let nickname = botInfo.nickname;
try {
const customSender = this.getNodeParameter('customSender', 0, false);
if (customSender) {
const senderInfo = this.getNodeParameter('senderInfo', 0, {});
if (senderInfo.user_id && senderInfo.user_id.trim() !== '') {
userId = senderInfo.user_id;
console.log(`使用UI设置的自定义user_id: ${userId}`);
}
if (senderInfo.nickname && senderInfo.nickname.trim() !== '') {
nickname = senderInfo.nickname;
console.log(`使用UI设置的自定义nickname: ${nickname}`);
}
}
}
catch (error) {
console.log(`获取UI自定义发送者信息失败,使用默认值:`, error instanceof Error ? error.message : String(error));
}
const body = {};
let endpoint = '';
if (operation === 'send_private_msg') {
endpoint = 'send_private_forward_msg';
body.user_id = this.getNodeParameter('user_id', 0);
}
else {
endpoint = 'send_group_forward_msg';
body.group_id = this.getNodeParameter('group_id', 0);
}
body.messages = [];
for (let i = 0; i < itemsLength; i++) {
try {
let messageText = '';
try {
messageText = this.getNodeParameter('message', i, '');
console.log(`从message参数获取文本: "${messageText}"`);
}
catch (msgError) {
console.log(`获取message参数失败: ${msgError instanceof Error ? msgError.message : String(msgError)}`);
}
let itemUserId = userId;
let itemNickname = nickname;
try {
const inputData = this.getInputData();
if (inputData && inputData[i] && inputData[i].json) {
if (inputData[i].json.user_id) {
itemUserId = String(inputData[i].json.user_id);
console.log(`项目 ${i + 1}: 使用自定义user_id: ${itemUserId}`);
}
if (inputData[i].json.nickname) {
itemNickname = String(inputData[i].json.nickname);
console.log(`项目 ${i + 1}: 使用自定义nickname: ${itemNickname}`);
}
if (messageText === '' && inputData[i].json.message) {
messageText = String(inputData[i].json.message);
console.log(`项目 ${i + 1}: 从输入数据获取消息内容: "${messageText}"`);
}
}
}
catch (error) {
console.log(`获取自定义输入数据失败:`, error instanceof Error ? error.message : String(error));
}
body.messages.push({
type: 'node',
data: {
user_id: itemUserId,
nickname: itemNickname,
content: messageText || '消息内容为空'
}
});
console.log(`已添加项目 ${i + 1} 的消息到转发列表`);
}
catch (error) {
console.error(`处理项目 ${i + 1} 时出错:`, error instanceof Error ? error.message : String(error));
body.messages.push({
type: 'node',
data: {
user_id: botInfo.user_id.toString(),
nickname: botInfo.nickname,
content: `无法获取消息内容`
}
});
}
}
body.summary = '聊天记录';
body.prompt = '查看完整聊天记录';
try {
const forwardSettings = this.getNodeParameter('forwardSettings', 0, {});
if (forwardSettings.summary)
body.summary = forwardSettings.summary;
if (forwardSettings.source)
body.source = forwardSettings.source;
if (forwardSettings.prompt)
body.prompt = forwardSettings.prompt;
if (forwardSettings.news) {
body.news = [{ text: forwardSettings.news }];
}
}
catch (error) {
console.log('获取转发设置失败,使用默认值:', error instanceof Error ? error.message : String(error));
}
console.log(`准备发送${body.messages.length}条转发消息,端点: ${endpoint}`);
try {
const data = await GenericFunctions_1.apiRequest.call(this, 'POST', endpoint, body);
console.log('转发消息发送成功');
return { json: data };
}
catch (error) {
const errorMsg = error instanceof Error ? error.message : String(error);
console.error('发送转发消息失败:', errorMsg);
throw error;
}
}
catch (error) {
console.error(`执行多输入项转发消息时出错:`, error instanceof Error ? error.message : String(error));
throw error;
}
}
exports.handleMultipleInputsForward = handleMultipleInputsForward;
//# sourceMappingURL=ForwardActions.js.map