跳转到主要内容

旧GitHub插件(已被sopel-github包取代)

项目描述

Sopel GitHub

适用于Sopel IRC机器人的GitHub插件。

此插件不再更新。它已被sopel-github取代。 sopel_modules.github仍可供使用Sopel 7.x及更早版本的用户使用,但建议您尽快升级。

安装

简单(且推荐)的方法: pip install sopel_modules.github

不那么简单的方法;您必须已安装Sopel才能使用此方法。

git clone https://github.com/sopel-irc/sopel-github
cd sopel-github
pip install .

开箱即用的功能

检测GitHub URL的发布并接管它们的URL处理,以美观的方式显示

  • 提交
  • 问题
  • 问题评论
  • 拉取请求
  • 拉取请求评论
  • 仓库

还可以使用命令以美观的方式显示仓库详情,使用.gh 用户/仓库名.github 用户/仓库名。如果您省略了用户,它将假定您的IRC昵称是用户。例如

<@maxpowa> .gh sopel-github
<Sopel> [GitHub] maxpowa/sopel-github - GitHub module for Sopel | 100.0% Python
        | Last Push: 2015-10-16 - 04:00:32UTC | Stargazers: 0 | Watchers: 0 |
        Forks: 0 | Network: 8 | Open Issues: 0 |
        https://github.com/maxpowa/sopel-github

<+salty> .gh sopel-irc/sopel-github
<Sopel> [GitHub] sopel-irc/sopel-github - GitHub module for Sopel | 100.0%
        Python | Last Push: Sunday, May 12, 2019 17:05:43 (CDT) | Stargazers: 3
        | Watchers: 1 | Forks: 8 | Network: 8 | Open Issues: 18 |
        https://github.com/sopel-irc/sopel-github

如果您已安装emoji包,大多数:emoji_name:将在输出中转换为Unicode表情符号。(GitHub支持一些插件尚未处理的非标准名称。)此功能需要emoji >= 1.7,但推荐使用>= 2.0

pip install 'emoji>=2.0'

API密钥及使用

GitHub的API有一些相当宽松的未经授权的请求限制,但您可能会遇到这些限制。为了避免触碰到这些限制(以及可能被列入黑名单),您应该为自己生成GitHub API密钥。填写https://github.com/settings/applications/new的信息,然后使用新生成的客户端密钥和密钥填充您的配置。

如果您计划使用Webhook功能:您必须正确填写“授权回调URL”,以匹配您计划用于webhook的外部URL。

Webhook功能

Webhook功能默认是禁用的。它需要稍微更多的技术知识,配置可能因系统而异。

配置Webhook

有两种可能的配置方式:通过代理或直接暴露给网络。

通过代理配置

这是配置webhook功能的首选方式,因为另一种方法可能存在安全漏洞。

首先,配置GitHub模块。您可以通过运行sopel --configure-modules或直接更改配置文件来实现。

[github]
webhook = True
webhook_host = 127.0.0.1
webhook_port = 3333
external_url = http://bad.code.brought.to.you.by.maxpowa.us/webhook

上述配置只监听localhost (127.0.0.1),因为我正在使用nginx中的反向代理将/webhook代理到端口3333。反向代理配置将相当简单,如下所示。/auth必须包含在内,以匹配您生成API密钥时设置的“授权回调URL”。

location ~ /(webhook|auth) {
    proxy_pass http://127.0.0.1:3333;
}

直接暴露给网络配置

如果您没有使用代理,您的配置将类似于以下内容

[github]
webhook = True
webhook_host = 0.0.0.0  # Or a specific interface
webhook_port = 3333
external_url = http://your.ip.here:3333/webhook

创建钩子

作为频道的OP+,您可能需要输入.gh-hook user/repo。您将看到一些关于如何完成钩子设置的信息文本,包括一个点击以授权创建webhook的链接。您需要授权GitHub应用程序读取/写入您的webhook(见L163-164),但这应该是我们需要的唯一权限。

<@maxpowa> .gh-hook maxpowa/sopel-github
<Sopel> Successfully enabled listening for maxpowa/sopel-github's events in
        #inumuta.
<Sopel> Great! Please allow me to create my webhook by authorizing via this
        link: <git.io link>
<Sopel> Once that webhook is successfully created, I'll post a message in here.
        Give me about a minute or so to set it up after you authorize. You can
        configure the colors that I use to display webhooks with .gh-hook-color

在您授权创建webhook后,您将被重定向到一个简单的页面,告知您机器人成功/失败地创建您的钩子。假设成功了,您应该在激活它的频道中看到一条通用消息。

自定义钩子

您可以自定义钩子各个部分的颜色。在设置新颜色后,Sopel将回复一个新颜色的示例,例如

<@maxpowa> .help gh-hook-color
<Sopel> .gh-hook-color <repo> <repo color> <name color> <branch color> <tag color> <hash color> <url color>

<@maxpowa> .gh-hook-color maxpowa/Inumuta 13 15 6 6 14 2
<Sopel> [maxpowa/inumuta] Example name: maxpowa tag: tag commit: c0mm17 branch: master url: http://git.io/
<@maxpowa> Unfortunately, IRC colors don't show up on GitHub.

0.4.8.post0中的更改

元数据

  • 记录此包的EOL;它已被sopel-github取代。

0.4.8中的更改

已更改

  • 使用emoji 2.0 API风格 (#119)
    • 如果您安装了emoji包,并且其版本小于1.7.0,您将需要pip install --upgrade emoji
    • 未来版本的sopel-github将使用setuptools extra使此可选依赖项更容易管理。

已修复

  • 在push处理程序中使用了错误的webhook有效负载属性 (#117)

0.4.7中的更改

已添加

  • 添加了特殊的.gh-repo !clear语法以删除频道关联的仓库 (#112)
  • 为提交URL输出相对提交者&作者日期 (#114)

已更改

  • 美化了.gh-repo输出 (#112)

已修复

  • .gh version子命令中发生NameError (#111)
  • 在无关联仓库的频道中.gh-repo发生TypeError (#112)
  • 提交输出中的“1 changes”不正确(#113)
  • 降低Markdown标题检测的误报率 (#115)
  • 在仓库链接中忽略URI片段 (#116)

0.4.6中的更改

已更改

  • 不再尝试使用已关闭的git.io缩短链接 (#106)

已修复

  • 修复摘录评论体中的某些边缘情况 (#105)
  • 清理一些输出格式化代码 (#107)

0.4.5 中的更改

已修复

  • 链接匹配不允许在存储库名称中使用下划线 (_) (#100)

0.4.4 中的更改

已修复

  • 处理内联/独立问题引用时的回归 (#99)

0.4.3 中的更改

已更改

  • 跳过尝试处理非存储库链接,例如主题 (#97)

已修复

  • 问题评论处理尝试访问状态 (#95)
  • 在问题/PR 正文为空的情况下出现错误 (#98)

0.4.2 中的更改

已添加

  • 在获取信息时包含问题/PR 状态 (#87)

已更改

  • 链接缩短失败将记录以进行调试 (#88)

0.4.1 中的更改

已添加

  • 当由聊天中的纯数字引用触发时,在输出中包含问题/PR 的链接 (#85)

已修复

  • "self-assigned" webhook 事件的输出中有双空格 (#80)

0.4.0 中的更改

已添加

  • 可选地将聊天中的类似 #123 的引用视为问题引用,可按频道配置新的 .gh-repo 命令 (#65)
  • 处理问题转移事件的 webhook (#75)
  • 对文件链接的初步处理 (#76)
    • 如果链接指向行/范围,将尝试显示有用的文本片段
  • 处理从 Ready 转换为 Draft 的 PR 的 webhook (#77)

已更改

  • PR 输出包含更多详细信息 (#69)
    • 如果合并的 PR 不是由合并用户创建的,则添加作者姓名
    • 如果 PR 头部分支位于分叉中,则添加存储库所有者的姓名到引用 (#78)
  • 在大多数情况下,webhook 输出中的提交引用将被缩写 (#78)
  • 在分配者、标签和里程碑 webhook 输出中包含标题 (#79)

已修复

  • 跳过不包含标签对象的标签相关事件 (#66)
    • 删除标签时避免频道垃圾邮件,例如
  • 没有参数的 .gh 命令的回退行为正确 (#68)
  • 避免 IRC 重连时出现 "Socket already in use" 错误 (#72)

0.3.2 中的更改

已修复

  • 在具有空描述的链接问题/PR 上未处理的异常 (#67)

0.3.1 中的更改

已修复

  • 使用已弃用的方法 bot.msg() (#63)
  • 使用已弃用的 bot.privileges 属性 (#64)

0.3.0 中的更改

已更改

  • 要求 Sopel 7.x 并使用其功能 (#58, #61)
  • 在缩短评论体时忽略看起来像 (HTML) 注释或标题的行 (#57)
  • 已弃用的查询字符串 API 认证被 HTTP Basic Auth 替换 (#62)

已修复

  • 处理提交数据中缺少的用户信息 (#59)

0.2.6 中的更改

已修复

  • webhook 代码中的语法错误

0.2.5 中的更改

已添加

  • webhook 授权中的错误处理器 (#51)

已修复

  • webhook 授权中错误的配置值访问 (#51)

0.2.4 中的更改

已修复

  • 带有尾随空白的评论不正确地附加了 […],即使正文只包含一行(非引号)文本 (#50)

0.2.3 中的更改

已更改

  • 现在在 demilestoned webhook 事件中包含里程碑名称 (#46)
    • GitHub 最初没有在 webhook 负载中包含此信息,但大约在 2019 年夏末开始发送

已修复

  • 未截断的评论如果评论体包含引文文本,则仍会附加 […] (#47)

0.2.2 中的更改

已更改

  • 评论体将被缩短到约 250 个字符,以尝试保持在一条 IRC 行的长度限制内 (#45)

已修复

  • 即使行上有前导文本,也可以检测到存储库 URL (#44)

0.2.1 中的更改

已修复

  • 包含空行的评论会导致错误 (#43)

0.2.0 中的更改

已添加

  • 处理几种新的事件类型
    • 拉取请求审查 (#20)
    • 拉取请求分配 (#23)
    • 拉取请求标签 (#23)
    • 拉取请求里程碑 (#35)
    • 问题 & 拉取请求标题编辑 (#36)
    • 版本 (#21)
  • 处理草稿拉取请求(#34)
  • 处理标记为已准备好审查的草稿拉取请求(#34)
  • 将大多数文本输出中的:emoji:转换为Unicode表情符号(#17)

已更改

  • secret设置现在称为client_secret(#42)
    • 插件将自动将配置迁移到使用新名称,但在高级设置中鼓励手动编辑(例如,如果Sopel用户无法写入配置文件)
  • 生成注释输出时忽略引号文本(#41)
  • 现在使用Unicode省略号而不是三个点(#31)
  • 现在在生成的列表中使用牛津逗号(#40)
  • Webhook有效负载处理已委托给单独的线程(#22)
    • Bottle一次只能处理一个请求;这样做应最大限度地减少失败交付的可能性,因为GitHub的Webhook交付服务超时非常快

已修复

  • GitHub URL正则表达式应匹配所有可能的用户名和仓库名(#38)

0.1.7中的变更

已修复

  • 空问题/PR描述或提交消息的错误(#39)

0.1.6中的变更

已更改

  • 对于已合并的PR,Webhook现在显示“已合并”而不是“已关闭”(#18)
  • 现在也会触发Webhook重新打开的问题/PR(#27)

已修复

  • Webhook忽略已编辑的问题、PR和审查评论(#16,#24)
  • 提交摘要现在正确地说“1文件”而不是“1 files”(#37)
  • 修复了一些Webhook输出的语法(#15)
  • 正确处理通过电子邮件提交的评论,有关行尾问题(#30)
  • 替换了长期废弃的SopelMemory方法的使用(#33)

0.1.5中的变更

已修复

  • 重构无意中破坏了注册新仓库Webhook的功能(#14)

元数据

  • PyPI软件包描述现在应渲染为HTML(内容类型已修复)

0.1.4中的变更

已更改

  • 现在在文本输出中的所有地方都正确地大写了“GitHub”(#9)
  • 使用配置中的help_prefix而不是硬编码的.来使用输出(#12)

已修复

  • git.io缩短现在切断了输入链接的GET参数。(#11)

0.1.3中的变更

元数据

  • 迁移到GitHub上的Sopel组织;新的维护者

已更改

  • 使用requests而不是已废弃的sopel.web功能(Sopel本身需要requests,所以我们不需要。)
  • 现在使用HTTPS获取git.io链接

项目详细信息


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

sopel_modules.github-0.4.8.post0.tar.gz (26.5 kB 查看散列值)

上传时间 源代码

由以下支持