12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- const Octokit = require('@octokit/core');
- const octokit = new Octokit.Octokit({
- auth: process.env.GITHUB_TOKEN || process.env.GITHUB_AUTH,
- });
- const queryIssue = ({ title, id }) => {
- return octokit
- .request('GET /search/issues', {
- q: title,
- per_page: 5,
- })
- .then(({ data }) => {
- const list = data.items
- .map((item) => {
- return {
- title: item.title,
- url: item.html_url,
- id: item.id,
- };
- })
- .filter((item) => {
- return item.id !== id;
- });
- if (list.length > 0) {
- return `
- > Issue Robot generation
- ### 以下的issue可能会帮助到你 :
- ${list
- .map((item) => {
- return `* [${item.title}](${item.url})`;
- })
- .join('\n')}`;
- }
- return null;
- })
- .then(async (markdown) => {
- return markdown;
- });
- };
- const findIssue = async (issueId) => {
- const { data } = await octokit.request('GET /repos/{owner}/{repo}/issues/{issue_number}', {
- owner: 'ant-design',
- repo: 'ant-design-pro',
- issue_number: issueId,
- });
- return data;
- };
- const closeIssue = async (issueId) => {
- await octokit.request('PATCH /repos/{owner}/{repo}/issues/{issue_number}', {
- owner: 'ant-design',
- repo: 'ant-design-pro',
- issue_number: issueId,
- state: 'closed',
- });
- };
- const replyCommit = async (issueId, markdown) => {
- await octokit.request('POST /repos/{owner}/{repo}/issues/{issue_number}/comments', {
- owner: 'ant-design',
- repo: 'ant-design-pro',
- issue_number: issueId,
- body: markdown,
- });
- };
- const reply = async () => {
- const issueId = process.env.ISSUE_NUMBER;
- const issue = await findIssue(issueId);
- if (!issue.title || issue.title.length < 12) {
- replyCommit(issueId, '**请写标题!**');
- closeIssue(issueId);
- return;
- }
- const markdown = await queryIssue({
- title: issue.title,
- id: issue.id,
- });
- replyCommit(issueId, markdown);
- };
- reply();
|