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)
- 特别值得一提的是:点 (
.
) 现在在仓库链接中受到认可,例如Sopel的网站仓库:https://github.com/sopel-irc/sopel.chat
- 特别值得一提的是:点 (
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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 79e8aa2b405aa28ae46519098586cc9675b7ee5130762cedc891e3b9e20e7c78 |
|
MD5 | 333b5126c4a38305538d90156f42a3ea |
|
BLAKE2b-256 | 119af4a0c86ce34b37e3b020dd9da2d868e7d029a98b8bcb8569aed4dc77da89 |
sopel_github-0.5.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 550fb6615e58791f905c258279899245ec9ea20fb8d918803b8dac6cf898b56a |
|
MD5 | 72d2127d63444b3c3bf3c09cd1f28da9 |
|
BLAKE2b-256 | b87cbfba4e9df498937514c196538310990758b769fe338c28146b037ded3ac3 |