feat: add some commands to the bot i guess

This commit is contained in:
zkldi
2024-04-25 01:55:15 +01:00
parent 5d1a44644f
commit 1771a38d0d
2 changed files with 70 additions and 35 deletions
+69 -34
View File
@@ -35,35 +35,42 @@ function ConvertGitHubURL(url: string) {
return url.replace("https://api.github.com/repos/", "GitHub:");
}
app.webhooks.on(
["pull_request.opened", "pull_request.edited"],
async ({ octokit, payload: body }) => {
try {
const filesChanged = (await fetch(
`https://api.github.com/repos/zkldi/Tachi/pulls/${body.number}/files`
).then((r) => r.json())) as Array<{ filename: string }>;
async function sendDiff(octokit: any, payload: any) {
// post a link to the diff viewer in the PR comments.
return sendMsg(
mkSeedDiffViewMsg(
payload.pull_request.base.repo.url,
payload.pull_request.base.sha,
payload.pull_request.head.repo.url,
payload.pull_request.head.sha
),
octokit,
payload
);
}
// if any file modified in this pr is a collection
if (filesChanged.some((k) => k.filename.startsWith("database-seeds/collections"))) {
// post a link to the diff viewer in the PR comments.
await octokit.request("POST /repos/{owner}/{repo}/issues/{issue_number}/comments", {
owner: body.repository.owner.login,
repo: body.repository.name,
issue_number: body.pull_request.number,
body: mkSeedDiffViewMsg(
body.pull_request.base.repo.url,
body.pull_request.base.sha,
body.pull_request.head.repo.url,
body.pull_request.head.sha
),
});
}
} catch (err) {
await octokit.request("POST /repos/{owner}/{repo}/issues/{issue_number}/comments", {
owner: body.repository.owner.login,
repo: body.repository.name,
issue_number: body.pull_request.number,
body: `I failed horribly figuring out whether this was a seeds diff or not. I'm sorry!
async function sendMsg(message: string, octokit: any, payload: any) {
await octokit.request("POST /repos/{owner}/{repo}/issues/{issue_number}/comments", {
owner: payload.repository.owner.login,
repo: payload.repository.name,
issue_number: payload.pull_request.number,
body: message,
});
}
app.webhooks.on(["pull_request.opened", "pull_request.edited"], async ({ octokit, payload }) => {
try {
const filesChanged = (await fetch(
`https://api.github.com/repos/zkldi/Tachi/pulls/${payload.number}/files`
).then((r) => r.json())) as Array<{ filename: string }>;
// if any file modified in this pr is a collection
if (filesChanged.some((k) => k.filename.startsWith("database-seeds/collections"))) {
await sendDiff(octokit, payload);
}
} catch (err) {
await sendMsg(
`I failed horribly figuring out whether this was a seeds diff or not. I'm sorry!
*****
Reason
@@ -75,15 +82,43 @@ ${err}
*****
${mkSeedDiffViewMsg(
body.pull_request.base.repo.url,
body.pull_request.base.sha,
body.pull_request.head.repo.url,
body.pull_request.head.sha
payload.pull_request.base.repo.url,
payload.pull_request.base.sha,
payload.pull_request.head.repo.url,
payload.pull_request.head.sha
)}`,
});
octokit,
payload
);
}
});
app.webhooks.on(["commit_comment.created"], async ({ octokit, payload }) => {
const body = payload.comment.body.trim();
if (body.startsWith("+bot")) {
const cmd = body.split(" ")[1]?.replace(/[^a-z]/u, "");
switch (cmd) {
case "ping": {
await sendMsg("pong!", octokit, payload);
break;
}
case "diff": {
await sendDiff(octokit, payload);
break;
}
default:
await sendMsg(
`No idea what to do with command \`${cmd}\`, sorry!`,
octokit,
payload
);
}
}
);
});
const serverMiddleware = createNodeMiddleware(app);