能否在创建GitHub团队仓库时直接添加Discord机器人生成的Webhook?
问题
想在创建团队仓库时直接添加Discord机器人生成的Webhook,但在GitHub文档里没找到相关示例,不确定是否可行。当前创建仓库的代码如下:
const request = await fetch(newUrl, { headers: { "Accept": "application/vnd.github+json", 'authorization': 'Bearer ' + getStringEnv("GITHUB_TOKEN"), 'content-type': 'application/json', 'X-GitHub-Api-Version': '2022-11-28' }, method: "POST", body: JSON.stringify({ name: name, description: description, private: true }) }) console.log(await request.json()) }catch (e){ console.log(e) }
已查阅GitHub Webhook事件与负载相关文档。
解答
无法在创建仓库的API请求中直接添加Webhook。GitHub的仓库创建接口(无论是组织仓库还是个人仓库)并未提供直接配置Webhook的参数,必须分两步操作:
- 先调用创建仓库的API完成仓库创建
- 再调用Webhook创建接口,为新仓库添加Discord的Webhook
修改后的代码示例如下:
try { // 第一步:创建仓库 const createRepoRes = await fetch(newUrl, { headers: { "Accept": "application/vnd.github+json", 'authorization': 'Bearer ' + getStringEnv("GITHUB_TOKEN"), 'content-type': 'application/json', 'X-GitHub-Api-Version': '2022-11-28' }, method: "POST", body: JSON.stringify({ name: name, description: description, private: true }) }) const repoData = await createRepoRes.json(); console.log("仓库创建完成:", repoData); // 第二步:添加Discord Webhook const webhookUrl = "你的Discord机器人生成的Webhook地址"; // 替换为实际地址 const addWebhookRes = await fetch(`https://api.github.com/repos/${repoData.full_name}/hooks`, { headers: { "Accept": "application/vnd.github+json", 'authorization': 'Bearer ' + getStringEnv("GITHUB_TOKEN"), 'content-type': 'application/json', 'X-GitHub-Api-Version': '2022-11-28' }, method: "POST", body: JSON.stringify({ name: "web", active: true, events: ["push", "pull_request"], // 按需选择需要触发的事件 config: { url: webhookUrl, content_type: "application/json" } }) }) const webhookData = await addWebhookRes.json(); console.log("Webhook添加完成:", webhookData); } catch (e) { console.log("操作失败:", e); }
关键参数说明
name:固定填web,表示这是一个HTTP Webhookevents:指定触发Webhook的GitHub事件,比如push(代码推送)、pull_request(PR操作)等,可根据需求调整config.url:替换为Discord机器人提供的Webhook地址config.content_type:固定填application/json,确保GitHub以JSON格式发送负载
内容的提问来源于stack exchange,提问作者royaljacquesytb
相关产品推荐
相关产品推荐

