跳转到主要内容

Sopel的GitHub插件

项目描述

sopel-github

Sopel IRC机器人提供的GitHub插件。

安装

sopel-github托管在PyPI上,您只需使用pip进行安装。

pip install sopel-github

需求

sopel-github需要运行在Python 3.8或更高版本的Sopel 8.0+。

如果您需要在较旧的Sopel版本上使用此插件,可能需要旧的sopel_modules.github,但该包不再更新。

可选功能

标题和评论中的:named_emoji:引用可以转换为输出中的Unicode。如果您想使用此功能,请安装插件的emojize扩展。

pip install sopel-github[emojize]

注意: GitHub 也支持一些非标准的表情符号名称,如 :shipit:,这些名称没有 Unicode 对应项,因此在插件输出中您可能仍然会看到一些 :named_emoji:

即插即用功能

检测到 GitHub 网址被发布,并接管这些网址的处理,以美观的格式显示

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

此外,您还可以使用 .gh user/repo.github user/repo 命令打印仓库详细信息。如果您省略用户,则假定您的 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

干扰减少

此插件以与 GitHub 在评论中相同的方式查找对问题/PR的简单引用。如果当前频道与仓库关联,则最小有效引用是例如 #1,这通常没有帮助。据观察,聊天用户谈论他们最喜爱的 某物 的次数远比引用项目的最古老问题要多。

因此,sopel-github 默认忽略任何单个数字的简单引用。您可以在 [github] 配置部分使用 shortest_bare_number 设置来设置不同的最小长度。

API 密钥及使用

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

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

Webhook 功能

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

配置 Webhooks

有两种可能的方法来设置它:在代理后面或直接暴露给网络。

在代理后面配置

这是配置 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(参见 L170-171),但这应该是我们需要的 唯一 额外权限。

<@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.5.0

这是第一个命名为sopel-github的版本。此插件的先前版本被称为sopel_modules.github,并且对于运行Sopel 7.x或更早版本的用户,仍可在PyPI上找到。

新增

  • 支持来自任何仓库的行内问题/PR引用(#125)
  • 问题、PR和评论输出中的时间戳(#126)
  • 可配置跳过短行内问题/PR编号(#137)
    • 这是为了帮助机器人所有者处理例如人们谈论他们的#1 某物,机器人发布您项目的第一个问题的情况。

更改

  • 为更新的Sopel版本现代化(#110,#138)
  • 向GitHub API发送版本标题(#122)
  • 重新工作PR合并状态查找(#123)

修复

  • 处理目录链接,而不仅仅是文件(#134)
  • 抑制无效行内问题引用的错误(#136)

移除

  • 过时的secret设置(#124)

元数据

  • 新的包名,sopel-github(#138)
  • Sopel 8.0+现在需要(#138)
  • :emoji_name:转换设置为setuptools额外项(#120,#140)
    • 安装sopel-github[emojize]以启用此功能。

0.4.8

更改

  • 使用emoji 2.0 API样式(#119)
    • 如果您安装了emoji包且其版本小于1.7.0,则需要运行pip install --upgrade emoji
    • 未来版本的sopel-github将使这个可选依赖项更容易通过setuptools额外项管理。

修复

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

0.4.7

新增

  • 特殊的.gh-repo !clear语法用于删除通道的链接仓库(#112)
  • 为提交URL提供相对提交者&作者日期(#114)

更改

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

修复

  • NameError.gh version子命令中(#111)
  • TypeError在无链接仓库的通道中的.gh-repo中(#112)
  • 提交输出中“1更改”的复数形式不正确(#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
  • 对文件链接的初步处理
    • 如果链接指向行/范围,将尝试显示有用的文本片段
  • 处理从Ready转换为Draft的PR的webhook

更改

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

修复

  • 跳过不包含标签对象的标签相关事件(#66)
    • 删除标签时避免通道垃圾邮件,例如
  • 无参数的.gh命令的回退行为正确 (#68)
  • 当IRC重新连接时避免“套接字已在使用”错误 (#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基本认证取代 (#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)
  • 重新打开的问题/PR现在也会触发webhook (#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,所以无需额外安装。)
  • 现在抓取git.io链接使用HTTPS

项目详情


下载文件

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

源代码分布

sopel_github-0.5.0.tar.gz (27.9 kB 查看哈希值)

上传时间 源代码

构建分布

sopel_github-0.5.0-py3-none-any.whl (22.9 kB 查看哈希值)

上传时间 Python 3

由以下支持