为了更好地管理项目,我们需要一个增强的Issue管理工具。 通过配置仓库文件中的机器人,大家可以自由定制机器人的行为。机器人将根据配置文件自动处理仓库事件。
这个项目的灵感来自 ai-pr-reviewer
然而,很遗憾他们决定关闭他们的存储库和代码。使用它需要额外的费用,虽然付费是必要的,但我不喜欢封闭的系统和按月计费。我更喜欢开放的、按需付费的(或自托管)的服务。
本仓库包括一个配置文件模板,您可以用它来设置您的机器人。密钥等敏感信息可以通过我的面板配置。
[!INFO] 此面板仅用于存储与API相关的密钥。 您将UUID填写到您的仓库配置文件中,GithubApp与仓库合作最终获取自定义配置。
功能 | 描述 |
---|---|
🌐 仪表板 | 用于管理敏感数据和密钥配置的直观网页面板。 |
📂 自动标签 | 根据配置文件自动给问题打标签。 |
📝 问题关闭报告 | 当问题关闭时生成报告。 |
📌 问题标题标准化 | 标准化问题标题。 |
🗂 |
根据配置文件生成问题的总结。 |
📦 |
根据配置文件生成发布说明。 |
📚 |
自动翻译文档。 |
sequenceDiagram
participant 用户
participant 仪表板
participant 仓库
participant GithubApp
participant 机器人
用户 ->> 仪表板: 提供敏感信息
仪表板 ->> 用户: 返回UUID
用户 ->> 仓库: 提供UUID
仓库 ->> GithubApp: 提供UUID并请求操作
GithubApp ->> 机器人: 验证仓库的UUID
机器人 ->> GithubApp: 确认仓库有效性
GithubApp -->> 仓库: 执行操作
看起来项目很复杂,其实很简单就能添加一些新操作,Github 通过 Webhook 传递的事件,我们只需要处理这些事件,然后执行我们的操作。
请你打开 main.py 文件,然后添加你的操作。
一份新的监听例子:
webhook_handler = ...
git_integration = ...
get_repo_setting = ...
logger = ...
from core.webhook.event_type import IssueComment
@webhook_handler.listen(IssueComment, action=IssueComment.CREATED, unique_id="uuid")
async def handle_issue_comment(event: IssueComment.CREATED_EVENT):
logger.info("Received IssueComment.CREATED event")
repo_setting = get_repo_setting(
repo_name=event.repository.full_name,
repo=event.repository.get_repo(git_integration)
)
# repo_setting 就是 .nerve.toml 文件的内容模型
issue = event.repository.get_issue(integration=git_integration, issue_number=event.issue.number)
comment = issue.create_comment(f"Hello World!")
issue.get_comment(comment.id).edit("Hello World! Edited")
print(f"Issue: {event.issue.title}")
print(f"Comment: {event.comment.body}")
print(f"Repo: {event.repository.full_name}")
同样的事件可以有多个监听器,只要你的监听器有不同的 unique_id
。
按以下简单步骤在本地部署应用:
pdm install
npm install
cp .env.example .env
nano .env
pm2 start pm2.json
特别感谢以下资源使这个项目成为可能:
- chmouel/gosmee
- octokit/webhooks
- GitHub Webhooks Documentation
- GitHub Webhooks Validation
- PyGithub Examples
This project is licensed under the MIT License with Non-Commercial Clause - see the LICENSE file for details.
You are free to use this software for any non-commercial purposes.
For commercial use, please contact us to obtain a commercial license.
我们欢迎贡献!请查看我们的贡献指南了解更多信息。
如果您觉得这个项目有帮助,不要忘记给我们加星!⭐️