koishi-plugin-newbingchat
Version:
不需要proxy即可使用的newbing AI,基于NewbingGoGo。
214 lines (213 loc) • 7.56 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const crypto_1 = require("crypto");
function getUuid() {
return (0, crypto_1.randomUUID)();
}
function getUuidNojian() {
return (0, crypto_1.randomUUID)().replace(/-/g, '');
}
function timeString() {
let d = new Date();
let year = d.getFullYear();
let month = (d.getMonth() + 1).toString().padStart(2, "0");
let date = d.getDate().toString().padStart(2, "0");
let hour = d.getHours().toString().padStart(2, "0");
let minute = d.getMinutes().toString().padStart(2, "0");
let second = d.getSeconds().toString().padStart(2, "0");
let offset = "+08:00"; // 你可以根据需要修改这个值
return year + "-" + month + "-" + date + "T" + hour + ":" + minute + ":" + second + offset;
}
/**
* @param tone {"Creative","Balanced","Precise"} 语气
* @return {string[]} 选项
*/
function getOptionsSets(tone) {
let op = {
//更有创造力选项
Creative: [
"nlu_direct_response_filter",
"deepleo",
"disable_emoji_spoken_text",
"responsible_ai_policy_235",
"enablemm",
"h3imaginative",
"cricketansgnd",
"cachewriteext",
"e2ecachewrite",
"nodlcpcwrite",
"nointernalsugg",
"saharasugg",
"enablenewsfc",
"dv3sugg",
"clgalileo",
"gencontentv3"
],
//Balanced 平衡模式选项
Balanced: [
"nlu_direct_response_filter",
"deepleo",
"disable_emoji_spoken_text",
"responsible_ai_policy_235",
"enablemm",
"galileo",
"cricketansgnd",
"cachewriteext",
"e2ecachewrite",
"nodlcpcwrite",
"nointernalsugg",
"saharasugg",
"enablenewsfc",
"dv3sugg",
"saharagenconv5"
],
//精准选项
Precise: [
"nlu_direct_response_filter",
"deepleo",
"disable_emoji_spoken_text",
"responsible_ai_policy_235",
"enablemm",
"h3precise",
"cricketansgnd",
"cachewriteext",
"e2ecachewrite",
"nodlcpcwrite",
"nointernalsugg",
"saharasugg",
"enablenewsfc",
"dv3sugg",
"clgalileo",
"gencontentv3"
]
};
let optionsSets = op[tone];
if (!optionsSets) {
throw new Error("不存在的ChatType:" + tone);
}
return optionsSets;
}
/**
* @param optionsSets {String[]} 聊天选项 不同的聊天类型有不同的选项
* @param tone {"Creative","Balanced","Precise"} 语气
* @param isStartOfSession {boolean} 是否是聊天的开始
* @param timestamp {String} 2023-05-14T09:17:16+08:00 聊天开始的时间
* @param text {String} 文本,聊天文本
* @param conversationSignature {String} 对话签名
* @param participant {String} 对话用户
* @param conversationId {String} 对话id
* @param invocationId {String} 调用id 应该从1开始每次发送+1
* */
function getObj(optionsSets, tone, isStartOfSession, timestamp, text, conversationSignature, participant, conversationId, invocationId) {
let requestId = getUuid();
return {
"arguments": [
{
"source": "cib",
"optionsSets": optionsSets,
"allowedMessageTypes": [
"ActionRequest",
"Chat",
"Context",
"InternalSearchQuery",
"InternalSearchResult",
"Disengaged",
"InternalLoaderMessage",
"Progress",
"RenderCardRequest",
"AdsQuery",
"SemanticSerp",
"GenerateContentQuery",
"SearchQuery"
],
"sliceIds": [
"winmuid2tf",
"sydconfigoptc",
"forallv2nscpw",
"allnopvt",
"anssuptokenlist",
"tempcacheread",
"temptacache",
"encjsreftf",
"winlongmsgtf",
"wrapnoins",
"505iccric",
"0430dv3s0",
"505scsv5",
"scprompt2",
"508jbcar",
"425bicb2",
"406sportgnds0",
"427startpm"
],
"verbosity": "verbose",
"traceId": getUuidNojian(),
"isStartOfSession": isStartOfSession,
"message": {
"locale": "zh-CN",
"market": "zh-CN",
"region": "US",
"location": "lat:47.639557;long:-122.128159;re=1000m;",
"locationHints": [
{
"Center": {
"Latitude": 30.474103707944767,
"Longitude": 114.39625306330366
},
"RegionType": 2,
"SourceType": 11
},
{
"country": "United States",
"state": "Washington",
"city": "Index",
"zipcode": "98256",
"timezoneoffset": -8,
"dma": 819,
"countryConfidence": 9,
"Center": {
"Latitude": 47.8201,
"Longitude": -121.5543
},
"RegionType": 2,
"SourceType": 1
}
],
"timestamp": timestamp,
"author": "user",
"inputMethod": "Keyboard",
"text": text,
"messageType": "Chat",
"requestId": requestId,
"messageId": requestId
},
"tone": tone,
"requestId": requestId,
"conversationSignature": conversationSignature,
"participant": {
"id": participant
},
"conversationId": conversationId
}
],
"invocationId": invocationId,
"target": "chat",
"type": 4
};
}
/**
* 处理聊天选项的类
* */
class ChatOptionsSets {
/**
* @param sendMessageManager {SendMessageManager}
* @param chat {String} 要发送的消息
* */
async getSendJson(sendMessageManager, chat) {
if (!sendMessageManager.startTime) {
sendMessageManager.startTime = timeString();
}
return getObj(getOptionsSets(sendMessageManager.optionsSets), sendMessageManager.optionsSets, sendMessageManager.invocationId <= 1, sendMessageManager.startTime, chat, sendMessageManager.conversationSignature, sendMessageManager.clientId, sendMessageManager.conversationId, sendMessageManager.invocationId.toString());
}
}
exports.default = ChatOptionsSets;