update: 开发浏览器对象&增加图片类&修改类型声明&增加动态模块取消参数

This commit is contained in:
ningmengchongshui 2024-06-17 09:56:05 +08:00
parent 907a80c914
commit faccb290c0
7 changed files with 128 additions and 151 deletions

View File

@ -465,7 +465,7 @@ class PluginsLoader {
* @param v
* @returns
*/
filtEvent(e, v) {
filtEvent(e: EventType, v) {
if (!v.event) return false
const event = v.event.split('.')
const eventMap = this.eventMap[e.post_type] || []
@ -483,7 +483,7 @@ class PluginsLoader {
* @param v
* @returns
*/
filtPermission(e, v) {
filtPermission(e: EventType, v) {
if (v.permission == 'all' || !v.permission) return true
if (v.permission == 'master') {
if (e.isMaster) {
@ -531,7 +531,7 @@ class PluginsLoader {
* @param e.at tiny_id
* @param e.atBot
*/
dealMsg(e) {
dealMsg(e: EventType) {
if (e.message) {
for (let val of e.message) {
switch (val.type) {
@ -582,68 +582,85 @@ class PluginsLoader {
e.logText = ''
/**
*
*
*/
if (e.message_type === 'private' || e.notice_type === 'friend') {
e.isPrivate = true
// 存在
if (e.sender) {
// nickname
e.sender.card = e.sender.nickname
} else {
// 不存在
e.sender = {
// nickname
card: e.friend?.nickname,
// nickname
nickname: e.friend?.nickname
}
} as any
}
e.logText = `[私聊][${e.sender.nickname}(${e.user_id})]`
}
if (e?.user_id) {
e.user_avatar = `https://q1.qlogo.cn/g?b=qq&s=0&nk=${e.user_id}`
e.user_name = e.sender.nickname
}
if (e?.group_id) {
e.group_avatar = `https://p.qlogo.cn/gh/${e.group_id}/${e.group_id}/640/`
}
/**
*
*
*/
if (e.message_type === 'group' || e.notice_type === 'group') {
//
e.isGroup = true
// 存在
if (e.sender) {
e.sender.card = e.sender.card || e.sender.nickname
// nickname
e.sender.card = e.sender.card ?? e.sender.nickname
} else if (e.member) {
e.sender = {
card: e.member.card || e.member.nickname
}
// nickname
card: e.member.card ?? e.member.nickname,
nickname: e.member.card ?? e.member.nickname
} as any
} else if (e.nickname) {
e.sender = {
// nickname
card: e.nickname,
// nickname
nickname: e.nickname
}
} as any
} else {
e.sender = {
card: '',
nickname: ''
}
card: e?.user_id ?? '',
nickname: e?.user_id ?? ''
} as any
}
if (!e.group_name) e.group_name = e.group?.name
e.logText = `[${e.group_name}(${e.sender.card})]`
//
} else if (e.detail_type === 'guild') {
//
e.isGuild = true
}
if (!e.user_id) {
e.user_id = e.sender?.user_id
}
if (e?.user_id) {
e.user_avatar = `https://q1.qlogo.cn/g?b=qq&s=0&nk=${e.user_id}`
}
if (e?.group_id) {
e.group_avatar = `https://p.qlogo.cn/gh/${e.group_id}/${e.group_id}/640/`
}
if (e.sender.nickname) {
e.user_name = e.sender.nickname
}
/**
*
*/
if (
e.user_id &&
cfg.masterQQ.includes(String(e.user_id) || String(e.user_id))
) {
if (e.user_id && cfg.masterQQ.includes(String(e.user_id))) {
e.isMaster = true
}
@ -651,7 +668,7 @@ class PluginsLoader {
* at msg处理
*/
if (e.msg && e.isGroup) {
const groupCfg = cfg.getGroup(e.group_id)
const groupCfg = cfg.getGroup(String(e.group_id))
let alias = groupCfg.botAlias
if (!Array.isArray(alias)) {
alias = [alias]

View File

@ -1,10 +1,25 @@
import { type GroupMessage } from 'icqq'
import Runtime from './runtime'
/**
*
*
* eleven
*
* tudo
*
*/
/**
*
*/
export interface EventType extends GroupMessage {
/**
* 'group' | 'private'
* @deprecated
*/
message_type: any,
/**
*
*/
@ -45,6 +60,11 @@ export interface EventType extends GroupMessage {
*
*/
msg: string
/**
*
* @deprecated
*/
img: string[]
/**
*
* @param arg
@ -69,17 +89,47 @@ export interface EventType extends GroupMessage {
*/
runtime: typeof Runtime.prototype
/**
* @deprecated
*/
notice_type: any
/**
* @deprecated
*/
group: {
/**
* @deprecated
*/
is_owner: any;
/**
* @deprecated
*/
recallMsg: (...arg: any[]) => any;
/**
* @deprecated
*/
getMemberMap: any;
/**
* @deprecated
*/
quit: any;
/**
* @deprecated
*/
mute_left: any
/**
* @deprecated
*/
pickMember: any
/**
* @deprecated
*/
sendMsg: any
/**
* @deprecated
*/
name: any
};
/**
* @deprecated

View File

@ -4,6 +4,7 @@ export * from './types.js'
export * from './common.js'
export * from './component.js'
export * from './module.js'
export * from './picture.js'
/**
*
*/

View File

@ -19,9 +19,16 @@ export function require(path: string) {
}
}
const now = () => `?update=${Date.now()}`
/**
*
* @returns
*/
const now = () => `?t=${Date.now()}`
/**
* @param basePath import.meta.url
* @param T
* @returns
* ***********
*
* ***********
@ -32,9 +39,14 @@ const now = () => `?update=${Date.now()}`
*
* ***********
*
* @param basePath
* @returns
*/
export const createDynamic = (basePath: string) => {
return (path: string) => import(new URL(`${path}${now()}`, basePath).href)
export const createDynamic = (basePath: string, T = true) => {
/**
* import作用相同
* @param path
* @param TT
* @returns
*/
return (path: string, TT = true) =>
import(new URL(`${path}${TT && T ? now() : ''}`, basePath).href)
}

10
src/utils/picture.ts Normal file
View File

@ -0,0 +1,10 @@
import { Component } from './component'
import { Puppeteer } from './puppeteer'
export class Picture {
Pup: typeof Puppeteer.prototype = null
Com: typeof Component.prototype = null
constructor() {
this.Com = new Component()
this.Pup = new Puppeteer()
}
}

View File

@ -32,13 +32,14 @@ export class Puppeteer {
#pic = 0
// 重启次数控制
#restart = 200
// 应用缓存
#browser: Browser | null = null
// 状态
#isBrowser = false
// 配置
#launch: PuppeteerLaunchOptions = PuppeteerLunchConfig.all()
// 应用缓存
browser: Browser | null = null
/**
*
* @param val
@ -62,7 +63,7 @@ export class Puppeteer {
*/
async start() {
try {
this.#browser = await puppeteer.launch(this.#launch)
this.browser = await puppeteer.launch(this.#launch)
this.#isBrowser = true
console.info('[puppeteer] open success')
return true
@ -97,7 +98,7 @@ export class Puppeteer {
this.#pic = 0
console.info('[puppeteer] close')
this.#isBrowser = false
this.#browser?.close().catch(err => {
this.browser?.close().catch(err => {
console.error('[puppeteer] close', err)
})
console.info('[puppeteer] reopen')
@ -119,7 +120,7 @@ export class Puppeteer {
async render(htmlPath: string, Options?: ScreenshotFileOptions) {
if (!(await this.isStart())) return false
try {
const page = await this.#browser?.newPage().catch(err => {
const page = await this.browser?.newPage().catch(err => {
console.error(err)
})
if (!page) return false

114
src/yunzai-env.d.ts vendored
View File

@ -5,47 +5,9 @@ declare module '*.module.css' {
const classes: CSSModuleClasses
export default classes
}
declare module '*.module.scss' {
const classes: CSSModuleClasses
export default classes
}
declare module '*.module.sass' {
const classes: CSSModuleClasses
export default classes
}
declare module '*.module.less' {
const classes: CSSModuleClasses
export default classes
}
declare module '*.module.styl' {
const classes: CSSModuleClasses
export default classes
}
declare module '*.module.stylus' {
const classes: CSSModuleClasses
export default classes
}
declare module '*.module.pcss' {
const classes: CSSModuleClasses
export default classes
}
declare module '*.module.sss' {
const classes: CSSModuleClasses
export default classes
}
// CSS
declare module '*.css' {}
declare module '*.scss' {}
declare module '*.sass' {}
declare module '*.less' {}
declare module '*.styl' {}
declare module '*.stylus' {}
declare module '*.pcss' {}
declare module '*.sss' {}
// Built-in asset types
// see `src/node/constants.ts`
// images
declare module '*.apng' {
@ -164,79 +126,3 @@ declare module '*.otf' {
const src: string
export default src
}
// other
declare module '*.webmanifest' {
const src: string
export default src
}
declare module '*.pdf' {
const src: string
export default src
}
declare module '*.txt' {
const src: string
export default src
}
// wasm?init
declare module '*.wasm?init' {
const initWasm: (
options?: WebAssembly.Imports
) => Promise<WebAssembly.Instance>
export default initWasm
}
// web worker
declare module '*?worker' {
const workerConstructor: {
new (options?: { name?: string }): Worker
}
export default workerConstructor
}
declare module '*?worker&inline' {
const workerConstructor: {
new (options?: { name?: string }): Worker
}
export default workerConstructor
}
declare module '*?worker&url' {
const src: string
export default src
}
declare module '*?sharedworker' {
const sharedWorkerConstructor: {
new (options?: { name?: string }): SharedWorker
}
export default sharedWorkerConstructor
}
declare module '*?sharedworker&inline' {
const sharedWorkerConstructor: {
new (options?: { name?: string }): SharedWorker
}
export default sharedWorkerConstructor
}
declare module '*?sharedworker&url' {
const src: string
export default src
}
declare module '*?raw' {
const src: string
export default src
}
declare module '*?url' {
const src: string
export default src
}
declare module '*?inline' {
const src: string
export default src
}