首席体验官
米开朗基杨
好,我直接贴代码吧,贴教程好懒的说,得等这周欠的的作业先写完
import cloud from '@lafjs/cloud'
import axios from 'axios'
const app_id = "此处填写app id";
const app_secret = "此处填写app密码";
const tenant_token_url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal";
const user_token_url = "https://open-apis/auth/v3/app_access_token/internal";
const send_message_url = "https://open.feishu.cn/open-apis/im/v1/messages?receive_id_type=user_id";
var tenant_access_token;
var user_access_token;
const tenant_token_config = {
method: 'POST',
url: tenant_token_url,
headers: {
'Content-Type': 'application/json; charset=utf-8',
},
data:{
"app_id": app_id,
"app_secret": app_secret
}
};
const user_token_config = {
method: 'POST',
url: user_token_url,
headers: {
'Content-Type': 'application/json; charset=utf-8',
},
data:{
"app_id": app_id,
"app_secret": app_secret
}
};
export async function main(ctx: FunctionContext) {
const {content, chat_id, message_id} = ctx.body.event.message;
let messageMap = cloud.shared.get('messageMap');
if (!messageMap) {
messageMap = new Map();
messageMap.set(message_id, true);
} else {
if (!messageMap.has(message_id)) {
messageMap.set(message_id, true);
if (messageMap.size > 500) {
const oldestElement = messageMap.keys().next().value;
messageMap.delete(oldestElement);
}
} else {
return ;
}
}
cloud.shared.set('messageMap',messageMap);
if (ctx.body.header.event_type !== 'im.message.receive_v1') {
return;
}
const { ChatGPTAPI } = await import('chatgpt')
const {user_id, union_id, open_id} = ctx.body.event.sender.sender_id
await axios(tenant_token_config)
.then(function (response) {
tenant_access_token = 'Bearer '+response.data.tenant_access_token;
})
.catch(function (error) {
console.log(error);
})
let api = cloud.shared.get('api');
if (!api) {
api = new ChatGPTAPI({ apiKey: cloud.env.OPEN_API_KEY });
cloud.shared.set('api', api);
}
let res;
let id = cloud.shared.get('parentMessageId');
if (!id) {
res = await api.sendMessage(content);
} else {
res = await api.sendMessage(content, { parentMessageId: id });
}
cloud.shared.set('parentMessageId',res.id);
const text ={
"text": res.text
}
const stringifiedtext = JSON.stringify(text);
const data = {
receive_id: user_id,
msg_type: "text",
content: stringifiedtext
};
const send_message_config = {
method: 'POST',
url: send_message_url,
headers: {
'Content-Type': 'application/json; charset=utf-8',
'Authorization': tenant_access_token
},
data : data
};
axios(send_message_config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
})
return;
}