Merge pull request #7 from ikechan8370/v2

up
This commit is contained in:
ycxom 2025-02-12 15:59:33 +08:00 committed by GitHub
commit 97d807f3cc
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
7 changed files with 39 additions and 17 deletions

View file

@ -1,4 +1,5 @@
import WebSocket from 'ws' import WebSocket from 'ws'
import crypto from 'crypto'
import common from '../../../lib/common/common.js' import common from '../../../lib/common/common.js'
import _ from 'lodash' import _ from 'lodash'
import { pTimeout } from '../utils/common.js' import { pTimeout } from '../utils/common.js'
@ -271,19 +272,27 @@ export class BingAIClient {
throw new Error('max retry exceed, maybe refresh token error') throw new Error('max retry exceed, maybe refresh token error')
} }
const url = `${this.baseUrl}/c/api/conversations` const url = `${this.baseUrl}/c/api/conversations`
const headers = {
// authorization: `Bearer ${this.accessToken}`,
'content-type': 'application/json',
origin: 'https://copilot.microsoft.com',
referer: 'https://copilot.microsoft.com/',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36 Edg/132.0.0.0'
}
if (this.accessToken) {
headers.authorization = `Bearer ${this.accessToken}`
}
const createConversationRsp = await fetch(url, { const createConversationRsp = await fetch(url, {
headers: { headers,
authorization: `Bearer ${this.accessToken}`,
'content-type': 'application/json',
origin: 'https://copilot.microsoft.com',
referer: 'https://copilot.microsoft.com/',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36 Edg/132.0.0.0'
},
method: 'POST' method: 'POST'
}) })
if (createConversationRsp.status === 401) { if (createConversationRsp.status === 401) {
await this.doRefreshToken() if (this.refreshToken) {
return await this._generateConversationId(times - 1) await this.doRefreshToken()
return await this._generateConversationId(times - 1)
} else {
this.accessToken = null
}
} }
const conversation = await createConversationRsp.json() const conversation = await createConversationRsp.json()
return conversation.id return conversation.id

View file

@ -5,7 +5,7 @@ export async function getChatHistoryGroup (e, num) {
// if (e.adapter === 'shamrock') { // if (e.adapter === 'shamrock') {
// return await e.group.getChatHistory(0, num, false) // return await e.group.getChatHistory(0, num, false)
// } else { // } else {
let latestChats = await e.group.getChatHistory(0, 1) let latestChats = await e.group.getChatHistory(e.seq || e.message_id, 1)
if (latestChats.length > 0) { if (latestChats.length > 0) {
let latestChat = latestChats[0] let latestChat = latestChats[0]
if (latestChat) { if (latestChat) {

View file

@ -37,8 +37,11 @@ export class SendDiceTool extends AbstractTool {
await group.sendMsg(segment.dice()) await group.sendMsg(segment.dice())
} }
} else { } else {
let friend = await e.bot.pickFriend(target) let user = e.bot.pickUser(target)
await friend.sendMsg(segment.dice()) if (e.group_id) {
user = user.asMember(e.group_id)
}
await user.sendMsg(segment.dice())
} }
if (num === 5) { if (num === 5) {
logger.warn(1) logger.warn(1)

View file

@ -37,7 +37,11 @@ export class SendMessageToSpecificGroupOrUserTool extends AbstractTool {
await group.sendMsg(await convertFaces(msg, true, e)) await group.sendMsg(await convertFaces(msg, true, e))
return 'msg has been sent to group' + target return 'msg has been sent to group' + target
} else { } else {
let user = await e.bot.pickFriend(target) let user = e.bot.pickUser(target)
if (e.group_id) {
user = user.asMember(e.group_id)
}
// let user = await e.bot.pickFriend(target)
await user.sendMsg(msg) await user.sendMsg(msg)
return 'msg has been sent to user' + target return 'msg has been sent to user' + target
} }

View file

@ -47,7 +47,10 @@ export class SendPictureTool extends AbstractTool {
await group.sendMsg(pictures) await group.sendMsg(pictures)
return 'picture has been sent to group' + target return 'picture has been sent to group' + target
} else { } else {
let user = await e.bot.pickFriend(target) let user = e.bot.pickUser(target)
if (e.group_id) {
user = user.asMember(e.group_id)
}
await user.sendMsg(pictures) await user.sendMsg(pictures)
return 'picture has been sent to user' + target return 'picture has been sent to user' + target
} }

View file

@ -30,8 +30,11 @@ export class SendRPSTool extends AbstractTool {
let group = await e.bot.pickGroup(target, true) let group = await e.bot.pickGroup(target, true)
await group.sendMsg(segment.rps(num)) await group.sendMsg(segment.rps(num))
} else { } else {
let friend = await e.bot.pickFriend(target) let user = e.bot.pickUser(target)
await friend.sendMsg(segment.rps(num)) if (e.group_id) {
user = user.asMember(e.group_id)
}
await user.sendMsg(segment.rps(num))
} }
} }

View file

@ -8,7 +8,7 @@ class Tokenizer {
throw new Error('no valid group id') throw new Error('no valid group id')
} }
let group = e.bot.pickGroup(groupId, true) let group = e.bot.pickGroup(groupId, true)
let latestChat = await group.getChatHistory(0, 1) let latestChat = await group.getChatHistory(undefined, 1)
let seq = latestChat[0].seq let seq = latestChat[0].seq
let chats = latestChat let chats = latestChat
function compareByTime (a, b) { function compareByTime (a, b) {