UNPKG

el-bot

Version:

A quick qq bot framework for mirai.

56 lines (47 loc) 1.28 kB
import type { Bot } from 'el-bot' import type { EventEmitter } from 'node:events' import type { IncomingMessage, ServerResponse } from 'node:http' import * as octokit from '@octokit/webhooks' import * as shell from 'shelljs' // github handler export interface handler extends EventEmitter { ( req: IncomingMessage, res: ServerResponse, callback: (err: Error) => void ): void } /** * Setup github webhook handler * @see https://github.com/octokit/webhooks */ export function githubHandler(ctx: Bot) { const config = { secret: ctx.el.webhook?.secret || 'el-psy-congroo', } const handler = new octokit.Webhooks(config) const middleware = octokit.createNodeMiddleware(handler, { path: ctx.el.webhook?.path || '/webhook', }) handler.onError((err) => { ctx.logger.error(`Error: ${err}`) }) // 处理 handler.on('push', (event) => { ctx.logger.info( `Received a push event for ${event.payload.repository.name} to ${event.payload.ref}`, ) // git pull repo if (shell.exec('git pull').code !== 0) { ctx.logger.error('Git 拉取失败,请检查默认分支。') } else { ctx.logger.info('安装依赖...') shell.exec('yarn') } }) return { handler, middleware, } }