Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,35 +41,44 @@ async function checkChannelAuthority(session: Session, authority: number): Promi
export const name = 'verifier'

export interface Config {
onRequestSleepMs?: RequestSleepMs
onFriendRequest?: RequestHandler
onGuildMemberRequest?: RequestHandler
onGuildRequest?: RequestHandler
}

export const Config: Schema<Config> = Schema.object({
onRequestSleepMs: RequestHandler.description('响应前等待?留空不等待,单位毫秒。')
onFriendRequest: RequestHandler.description('如何响应好友请求?'),
onGuildMemberRequest: RequestHandler.description('如何响应入群申请?'),
onGuildRequest: RequestHandler.description('如何响应入群邀请?'),
})

export function apply(ctx: Context, config: Config = {}) {
const { onFriendRequest, onGuildRequest, onGuildMemberRequest } = config
const { onRequestSleepMs, onFriendRequest, onGuildRequest, onGuildMemberRequest } = config

function sleep(ms) {
return new Promise(resolve => setTimeout(resolve, ms));
}

ctx.on('friend-request', async (session) => {
await sleep(config.onRequestSleepMs || 0);
const result = typeof onFriendRequest === 'number'
? await checkUserAuthority(session, onFriendRequest)
: await useGeneralHandler(onFriendRequest, session, true)
if (result) return session.bot.handleFriendRequest(session.messageId, ...result)
})

ctx.on('guild-request', async (session) => {
await sleep(config.onRequestSleepMs || 0);
const result = typeof onGuildRequest === 'number'
? await checkChannelAuthority(session, onGuildRequest)
: await useGeneralHandler(onGuildRequest, session, false)
if (result) return session.bot.handleGuildRequest(session.messageId, ...result)
})

ctx.on('guild-member-request', async (session) => {
await sleep(config.onRequestSleepMs || 0);
const result = typeof onGuildMemberRequest === 'number'
? await checkUserAuthority(session, onGuildMemberRequest)
: await useGeneralHandler(onGuildMemberRequest, session, false)
Expand Down