mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2024-11-21 09:36:35 +00:00
fix: webapi
This commit is contained in:
parent
bd9ee62118
commit
47fa717bce
@ -1,117 +1,17 @@
|
|||||||
import { RequestUtil } from '@/common/utils/request';
|
import { RequestUtil } from '@/common/utils/request';
|
||||||
export enum WebHonorType {
|
import { InstanceContext } from '../wrapper';
|
||||||
ALL = 'all',
|
import { NapCatCore } from '..';
|
||||||
TALKACTIVE = 'talkative',
|
import { GroupEssenceMsgRet, WebApiGroupMember, WebApiGroupMemberRet, WebApiGroupNoticeRet, WebHonorType } from '../entities/webapi';
|
||||||
PERFROMER = 'performer',
|
|
||||||
LEGEND = 'legend',
|
|
||||||
STORONGE_NEWBI = 'strong_newbie',
|
|
||||||
EMOTION = 'emotion'
|
|
||||||
}
|
|
||||||
export interface WebApiGroupMember {
|
|
||||||
uin: number
|
|
||||||
role: number
|
|
||||||
g: number
|
|
||||||
join_time: number
|
|
||||||
last_speak_time: number
|
|
||||||
lv: {
|
|
||||||
point: number
|
|
||||||
level: number
|
|
||||||
}
|
|
||||||
card: string
|
|
||||||
tags: string
|
|
||||||
flag: number
|
|
||||||
nick: string
|
|
||||||
qage: number
|
|
||||||
rm: number
|
|
||||||
}
|
|
||||||
interface WebApiGroupMemberRet {
|
|
||||||
ec: number
|
|
||||||
errcode: number
|
|
||||||
em: string
|
|
||||||
cache: number
|
|
||||||
adm_num: number
|
|
||||||
levelname: any
|
|
||||||
mems: WebApiGroupMember[]
|
|
||||||
count: number
|
|
||||||
svr_time: number
|
|
||||||
max_count: number
|
|
||||||
search_count: number
|
|
||||||
extmode: number
|
|
||||||
}
|
|
||||||
export interface WebApiGroupNoticeFeed {
|
|
||||||
u: number//发送者
|
|
||||||
fid: string//fid
|
|
||||||
pubt: number//时间
|
|
||||||
msg: {
|
|
||||||
text: string
|
|
||||||
text_face: string
|
|
||||||
title: string,
|
|
||||||
pics?: {
|
|
||||||
id: string,
|
|
||||||
w: string,
|
|
||||||
h: string
|
|
||||||
}[]
|
|
||||||
}
|
|
||||||
type: number
|
|
||||||
fn: number
|
|
||||||
cn: number
|
|
||||||
vn: number
|
|
||||||
settings: {
|
|
||||||
is_show_edit_card: number
|
|
||||||
remind_ts: number
|
|
||||||
tip_window_type: number
|
|
||||||
confirm_required: number
|
|
||||||
}
|
|
||||||
read_num: number
|
|
||||||
is_read: number
|
|
||||||
is_all_confirm: number
|
|
||||||
}
|
|
||||||
export interface WebApiGroupNoticeRet {
|
|
||||||
ec: number
|
|
||||||
em: string
|
|
||||||
ltsm: number
|
|
||||||
srv_code: number
|
|
||||||
read_only: number
|
|
||||||
role: number
|
|
||||||
feeds: WebApiGroupNoticeFeed[]
|
|
||||||
group: {
|
|
||||||
group_id: number
|
|
||||||
class_ext: number
|
|
||||||
}
|
|
||||||
sta: number,
|
|
||||||
gln: number
|
|
||||||
tst: number,
|
|
||||||
ui: any
|
|
||||||
server_time: number
|
|
||||||
svrt: number
|
|
||||||
ad: number
|
|
||||||
}
|
|
||||||
interface GroupEssenceMsg {
|
|
||||||
group_code: string
|
|
||||||
msg_seq: number
|
|
||||||
msg_random: number
|
|
||||||
sender_uin: string
|
|
||||||
sender_nick: string
|
|
||||||
sender_time: number
|
|
||||||
add_digest_uin: string
|
|
||||||
add_digest_nick: string
|
|
||||||
add_digest_time: number
|
|
||||||
msg_content: any[]
|
|
||||||
can_be_removed: true
|
|
||||||
}
|
|
||||||
export interface GroupEssenceMsgRet {
|
|
||||||
retcode: number
|
|
||||||
retmsg: string
|
|
||||||
data: {
|
|
||||||
msg_list: GroupEssenceMsg[]
|
|
||||||
is_end: boolean
|
|
||||||
group_role: number
|
|
||||||
config_page_url: string
|
|
||||||
}
|
|
||||||
}
|
|
||||||
export class WebApi {
|
export class WebApi {
|
||||||
async shareDigest(groupCode: string, msgSeq: string, msgRandom: string, targetGroupCode: string) {
|
context: InstanceContext;
|
||||||
const CookiesObject = await NTQQUserApi.getCookies('qun.qq.com');
|
core: NapCatCore;
|
||||||
|
constructor(context: InstanceContext, core: NapCatCore) {
|
||||||
|
this.context = context;
|
||||||
|
this.core = core;
|
||||||
|
}
|
||||||
|
async shareDigest(groupCode: string, msgSeq: string, msgRandom: string, targetGroupCode: string) {
|
||||||
|
const CookiesObject = await this.core.getApiContext().UserApi.getCookies('qun.qq.com');
|
||||||
const CookieValue = Object.entries(CookiesObject).map(([key, value]) => `${key}=${value}`).join('; ');
|
const CookieValue = Object.entries(CookiesObject).map(([key, value]) => `${key}=${value}`).join('; ');
|
||||||
const Bkn = this.genBkn(CookiesObject.skey);
|
const Bkn = this.genBkn(CookiesObject.skey);
|
||||||
let ret: any = undefined;
|
let ret: any = undefined;
|
||||||
@ -126,9 +26,8 @@ export class WebApi {
|
|||||||
}
|
}
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
@CacheClassFuncAsync(3600 * 1000, 'webapi_get_group_members')
|
async getGroupEssenceMsg(GroupCode: string, page_start: string) {
|
||||||
async getGroupEssenceMsg(GroupCode: string, page_start: string) {
|
const CookiesObject = await this.core.getApiContext().UserApi.getCookies('qun.qq.com');
|
||||||
const CookiesObject = await NTQQUserApi.getCookies('qun.qq.com');
|
|
||||||
const CookieValue = Object.entries(CookiesObject).map(([key, value]) => `${key}=${value}`).join('; ');
|
const CookieValue = Object.entries(CookiesObject).map(([key, value]) => `${key}=${value}`).join('; ');
|
||||||
const Bkn = this.genBkn(CookiesObject.skey);
|
const Bkn = this.genBkn(CookiesObject.skey);
|
||||||
const url = 'https://qun.qq.com/cgi-bin/group_digest/digest_list?bkn=' + Bkn + '&group_code=' + GroupCode + '&page_start=' + page_start + '&page_limit=20';
|
const url = 'https://qun.qq.com/cgi-bin/group_digest/digest_list?bkn=' + Bkn + '&group_code=' + GroupCode + '&page_start=' + page_start + '&page_limit=20';
|
||||||
@ -144,12 +43,11 @@ export class WebApi {
|
|||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@CacheClassFuncAsync(3600 * 1000, 'webapi_get_group_members')
|
async getGroupMembers(GroupCode: string, cached: boolean = true): Promise<WebApiGroupMember[]> {
|
||||||
async getGroupMembers(GroupCode: string, cached: boolean = true): Promise<WebApiGroupMember[]> {
|
|
||||||
//logDebug('webapi 获取群成员', GroupCode);
|
//logDebug('webapi 获取群成员', GroupCode);
|
||||||
let MemberData: Array<WebApiGroupMember> = new Array<WebApiGroupMember>();
|
let MemberData: Array<WebApiGroupMember> = new Array<WebApiGroupMember>();
|
||||||
try {
|
try {
|
||||||
const CookiesObject = await NTQQUserApi.getCookies('qun.qq.com');
|
const CookiesObject = await this.core.getApiContext().UserApi.getCookies('qun.qq.com');
|
||||||
const CookieValue = Object.entries(CookiesObject).map(([key, value]) => `${key}=${value}`).join('; ');
|
const CookieValue = Object.entries(CookiesObject).map(([key, value]) => `${key}=${value}`).join('; ');
|
||||||
const Bkn = this.genBkn(CookiesObject.skey);
|
const Bkn = this.genBkn(CookiesObject.skey);
|
||||||
const retList: Promise<WebApiGroupMemberRet>[] = [];
|
const retList: Promise<WebApiGroupMemberRet>[] = [];
|
||||||
@ -194,11 +92,11 @@ export class WebApi {
|
|||||||
// const res = await this.request(url);
|
// const res = await this.request(url);
|
||||||
// return await res.json();
|
// return await res.json();
|
||||||
// }
|
// }
|
||||||
async setGroupNotice(GroupCode: string, Content: string = '') {
|
async setGroupNotice(GroupCode: string, Content: string = '') {
|
||||||
//https://web.qun.qq.com/cgi-bin/announce/add_qun_notice?bkn=${bkn}
|
//https://web.qun.qq.com/cgi-bin/announce/add_qun_notice?bkn=${bkn}
|
||||||
//qid=${群号}&bkn=${bkn}&text=${内容}&pinned=0&type=1&settings={"is_show_edit_card":1,"tip_window_type":1,"confirm_required":1}
|
//qid=${群号}&bkn=${bkn}&text=${内容}&pinned=0&type=1&settings={"is_show_edit_card":1,"tip_window_type":1,"confirm_required":1}
|
||||||
|
|
||||||
const CookiesObject = await NTQQUserApi.getCookies('qun.qq.com');
|
const CookiesObject = await this.core.getApiContext().UserApi.getCookies('qun.qq.com');
|
||||||
const CookieValue = Object.entries(CookiesObject).map(([key, value]) => `${key}=${value}`).join('; ');
|
const CookieValue = Object.entries(CookiesObject).map(([key, value]) => `${key}=${value}`).join('; ');
|
||||||
const Bkn = this.genBkn(CookiesObject.skey);
|
const Bkn = this.genBkn(CookiesObject.skey);
|
||||||
let ret: any = undefined;
|
let ret: any = undefined;
|
||||||
@ -212,8 +110,8 @@ export class WebApi {
|
|||||||
}
|
}
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
async getGrouptNotice(GroupCode: string): Promise<undefined | WebApiGroupNoticeRet> {
|
async getGrouptNotice(GroupCode: string): Promise<undefined | WebApiGroupNoticeRet> {
|
||||||
const CookiesObject = await NTQQUserApi.getCookies('qun.qq.com');
|
const CookiesObject = await this.core.getApiContext().UserApi.getCookies('qun.qq.com');
|
||||||
const CookieValue = Object.entries(CookiesObject).map(([key, value]) => `${key}=${value}`).join('; ');
|
const CookieValue = Object.entries(CookiesObject).map(([key, value]) => `${key}=${value}`).join('; ');
|
||||||
const Bkn = this.genBkn(CookiesObject.skey);
|
const Bkn = this.genBkn(CookiesObject.skey);
|
||||||
let ret: WebApiGroupNoticeRet | undefined = undefined;
|
let ret: WebApiGroupNoticeRet | undefined = undefined;
|
||||||
@ -230,7 +128,7 @@ export class WebApi {
|
|||||||
}
|
}
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
genBkn(sKey: string) {
|
genBkn(sKey: string) {
|
||||||
sKey = sKey || '';
|
sKey = sKey || '';
|
||||||
let hash = 5381;
|
let hash = 5381;
|
||||||
|
|
||||||
@ -241,13 +139,11 @@ export class WebApi {
|
|||||||
|
|
||||||
return (hash & 0x7FFFFFFF).toString();
|
return (hash & 0x7FFFFFFF).toString();
|
||||||
}
|
}
|
||||||
|
async getGroupHonorInfo(groupCode: string, getType: WebHonorType) {
|
||||||
@CacheClassFuncAsync(3600 * 1000, 'GroupHonorInfo')
|
const CookiesObject = await this.core.getApiContext().UserApi.getCookies('qun.qq.com');
|
||||||
async getGroupHonorInfo(groupCode: string, getType: WebHonorType) {
|
|
||||||
const CookiesObject = await NTQQUserApi.getCookies('qun.qq.com');
|
|
||||||
const CookieValue = Object.entries(CookiesObject).map(([key, value]) => `${key}=${value}`).join('; ');
|
const CookieValue = Object.entries(CookiesObject).map(([key, value]) => `${key}=${value}`).join('; ');
|
||||||
const Bkn = WebApi.genBkn(CookiesObject.skey);
|
const Bkn = this.genBkn(CookiesObject.skey);
|
||||||
async function getDataInternal(Internal_groupCode: string, Internal_type: number) {
|
const getDataInternal = async (Internal_groupCode: string, Internal_type: number) => {
|
||||||
let url = 'https://qun.qq.com/interactive/honorlist?gc=' + Internal_groupCode + '&type=' + Internal_type.toString();
|
let url = 'https://qun.qq.com/interactive/honorlist?gc=' + Internal_groupCode + '&type=' + Internal_type.toString();
|
||||||
let res = '';
|
let res = '';
|
||||||
let resJson;
|
let resJson;
|
||||||
@ -263,7 +159,7 @@ export class WebApi {
|
|||||||
return resJson?.actorList;
|
return resJson?.actorList;
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logDebug('获取当前群荣耀失败', url, e);
|
this.context.logger.logDebug('获取当前群荣耀失败', url, e);
|
||||||
}
|
}
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
@ -294,7 +190,7 @@ export class WebApi {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logDebug(e);
|
this.context.logger.logDebug(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (getType === WebHonorType.PERFROMER || getType === WebHonorType.ALL) {
|
if (getType === WebHonorType.PERFROMER || getType === WebHonorType.ALL) {
|
||||||
@ -313,7 +209,7 @@ export class WebApi {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logDebug(e);
|
this.context.logger.logDebug(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (getType === WebHonorType.PERFROMER || getType === WebHonorType.ALL) {
|
if (getType === WebHonorType.PERFROMER || getType === WebHonorType.ALL) {
|
||||||
@ -332,7 +228,7 @@ export class WebApi {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logDebug('获取群聊炽焰失败', e);
|
this.context.logger.logDebug('获取群聊炽焰失败', e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (getType === WebHonorType.EMOTION || getType === WebHonorType.ALL) {
|
if (getType === WebHonorType.EMOTION || getType === WebHonorType.ALL) {
|
||||||
@ -351,7 +247,7 @@ export class WebApi {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
logDebug('获取快乐源泉失败', e);
|
this.context.logger.logDebug('获取快乐源泉失败', e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//冒尖小春笋好像已经被tx扬了
|
//冒尖小春笋好像已经被tx扬了
|
||||||
|
@ -3,4 +3,5 @@ export * from './group';
|
|||||||
export * from './msg';
|
export * from './msg';
|
||||||
export * from './notify';
|
export * from './notify';
|
||||||
export * from './cache';
|
export * from './cache';
|
||||||
export * from './system'
|
export * from './system';
|
||||||
|
export * from './webapi';
|
110
src/core/entities/webapi.ts
Normal file
110
src/core/entities/webapi.ts
Normal file
@ -0,0 +1,110 @@
|
|||||||
|
export enum WebHonorType {
|
||||||
|
ALL = 'all',
|
||||||
|
TALKACTIVE = 'talkative',
|
||||||
|
PERFROMER = 'performer',
|
||||||
|
LEGEND = 'legend',
|
||||||
|
STORONGE_NEWBI = 'strong_newbie',
|
||||||
|
EMOTION = 'emotion'
|
||||||
|
}
|
||||||
|
export interface WebApiGroupMember {
|
||||||
|
uin: number
|
||||||
|
role: number
|
||||||
|
g: number
|
||||||
|
join_time: number
|
||||||
|
last_speak_time: number
|
||||||
|
lv: {
|
||||||
|
point: number
|
||||||
|
level: number
|
||||||
|
}
|
||||||
|
card: string
|
||||||
|
tags: string
|
||||||
|
flag: number
|
||||||
|
nick: string
|
||||||
|
qage: number
|
||||||
|
rm: number
|
||||||
|
}
|
||||||
|
export interface WebApiGroupMemberRet {
|
||||||
|
ec: number
|
||||||
|
errcode: number
|
||||||
|
em: string
|
||||||
|
cache: number
|
||||||
|
adm_num: number
|
||||||
|
levelname: any
|
||||||
|
mems: WebApiGroupMember[]
|
||||||
|
count: number
|
||||||
|
svr_time: number
|
||||||
|
max_count: number
|
||||||
|
search_count: number
|
||||||
|
extmode: number
|
||||||
|
}
|
||||||
|
export interface WebApiGroupNoticeFeed {
|
||||||
|
u: number//发送者
|
||||||
|
fid: string//fid
|
||||||
|
pubt: number//时间
|
||||||
|
msg: {
|
||||||
|
text: string
|
||||||
|
text_face: string
|
||||||
|
title: string,
|
||||||
|
pics?: {
|
||||||
|
id: string,
|
||||||
|
w: string,
|
||||||
|
h: string
|
||||||
|
}[]
|
||||||
|
}
|
||||||
|
type: number
|
||||||
|
fn: number
|
||||||
|
cn: number
|
||||||
|
vn: number
|
||||||
|
settings: {
|
||||||
|
is_show_edit_card: number
|
||||||
|
remind_ts: number
|
||||||
|
tip_window_type: number
|
||||||
|
confirm_required: number
|
||||||
|
}
|
||||||
|
read_num: number
|
||||||
|
is_read: number
|
||||||
|
is_all_confirm: number
|
||||||
|
}
|
||||||
|
export interface WebApiGroupNoticeRet {
|
||||||
|
ec: number
|
||||||
|
em: string
|
||||||
|
ltsm: number
|
||||||
|
srv_code: number
|
||||||
|
read_only: number
|
||||||
|
role: number
|
||||||
|
feeds: WebApiGroupNoticeFeed[]
|
||||||
|
group: {
|
||||||
|
group_id: number
|
||||||
|
class_ext: number
|
||||||
|
}
|
||||||
|
sta: number,
|
||||||
|
gln: number
|
||||||
|
tst: number,
|
||||||
|
ui: any
|
||||||
|
server_time: number
|
||||||
|
svrt: number
|
||||||
|
ad: number
|
||||||
|
}
|
||||||
|
export interface GroupEssenceMsg {
|
||||||
|
group_code: string
|
||||||
|
msg_seq: number
|
||||||
|
msg_random: number
|
||||||
|
sender_uin: string
|
||||||
|
sender_nick: string
|
||||||
|
sender_time: number
|
||||||
|
add_digest_uin: string
|
||||||
|
add_digest_nick: string
|
||||||
|
add_digest_time: number
|
||||||
|
msg_content: any[]
|
||||||
|
can_be_removed: true
|
||||||
|
}
|
||||||
|
export interface GroupEssenceMsgRet {
|
||||||
|
retcode: number
|
||||||
|
retmsg: string
|
||||||
|
data: {
|
||||||
|
msg_list: GroupEssenceMsg[]
|
||||||
|
is_end: boolean
|
||||||
|
group_role: number
|
||||||
|
config_page_url: string
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user