ArchWiki:Bots
机器人是 维护团队 的重要工具,可以轻松执行从日常例行任务到复杂的一次性更新等重复性任务。机器人编辑占 wiki 所有贡献的 8% 以上——所有这些编辑如果手动完成将非常繁琐。
目前有两个活跃的机器人帐户
- Kynikos.bot (由 Kynikos 操作)
- Lahwaacz.bot (由 Lahwaacz 操作)
软件
机器人使用 MediaWiki API 与 wiki 服务器通信。 维基媒体基金会 开发了许多使用此 API 的机器人,但它们通常不够通用,无法在其他 wiki 上工作,甚至与我们的风格指南冲突。因此,我们一直在开发我们自己的 ArchWiki 特定的机器人工具,当外部方评估时,这些工具也存在同样的缺陷。
Wiki Monkey
Wiki Monkey 项目的目的是通过直接增强 Web 浏览器中的 wiki 页面来促进高效编辑。它作为用户脚本运行,允许在文章编辑器页面中半自动执行重复性任务,或从文章列表页面(例如 分类 或 链入页面)完全自动执行重复性任务。 Wiki Monkey 还添加了一些助手,例如 Special:RecentChanges 和 Special:NewPages 的过滤器。 有关详细信息,请参阅文档。
Wiki Monkey 的机器人界面所做的编辑标有 wiki-monkey
标签,可以在最近更改列表中过滤。
wiki-scripts
wiki-scripts 项目包含许多围绕 MediaWiki API 的小型库状抽象构建的 Python 脚本。包含的脚本的用途范围从在不编辑 wiki 的情况下收集信息到执行复杂的自动化编辑,这在 #任务 中描述。
wiki-scripts 所做的编辑,无论是自动还是交互式,都标有 wiki-scripts
标签,可以在最近更改列表中过滤。
任务
本节介绍 ArchWiki 机器人重复执行的任务。它用作操作机器人脚本的功能概述和文档。请注意,机器人编辑默认情况下在 Special:RecentChanges 中隐藏,因为包含它们会使跟踪和参与常规贡献变得更加困难。
双重重定向
修复 双重重定向 是最古老的自动化任务。例如,可以使用 Python 脚本 或 Wiki Monkey 的专用插件来完成。
目录
目录页面及其“翻译”通过使用 toc.py 脚本进行维护。该脚本可以每天运行,其执行需要几秒钟。
页面需要使用以下入口点表手动初始化
{| id="wiki-scripts-toc-table" |}
此表的内容将替换为脚本生成的更新版本,页面的其余部分保持不变。该脚本识别以下用于配置的可选属性
data-toc-languages
指定页面上要显示的语言。 它是以逗号分隔的语言标签列表,最多可以指定 2 个。 默认为当前页面的语言,即 Table of contents (Русский) 的ru
。data-toc-alsoin
指定“also in”短语的翻译。 格式为tag1:text, tag2:text, ...
。
例如(来自 Table of contents (Русский))
{| id="wiki-scripts-toc-table" data-toc-languages="ru,en" data-toc-alsoin="ru:Также в" ... |}
用户还可以通过编辑 wiki 页面上的链接来翻译表中的类别名称,脚本将在更新时保留它们。
统计
ArchWiki:Statistics 页面由 statistics.py 脚本维护。目前,只有 用户统计 部分是自动生成的,其余部分是手动更新的。更新大约需要 15 秒,应每天运行。
该脚本通过从 API 获取所有修订和用户帐户的元数据并将其缓存在本地以获得更好的性能。编辑计数是通过手动计算用户贡献来确定的,而不依赖 MediaWiki 计数器。
软件包模板
update-package-templates.py 脚本解析所有页面的内容并更新 Pkg、Grp 和 AUR 模板。包名称实际上不会被脚本更改,但例如,对于最近从 AUR 移动到官方存储库的包,链接将从 Template:AUR 更新为 Template:Pkg。无效的软件包链接标有 Template:Broken package link 以及有时有用的提示,显示软件包状态。
该脚本在存在时使用 Template:Broken package link 的本地化版本,并回退到英文版本。除此之外,没有服务器端配置。
每次运行后,但在最多每 7 天一次的情况下,脚本会在 User:Lahwaacz.bot/Reports/archpkgs 创建一份损坏链接的详细报告。
跨语言
interlanguage.py 脚本执行以下操作
执行时间取决于更新量,通常不到一分钟,在没有更新时约为 30 秒。
页面语言
update-page-language.py 脚本根据标题(请参阅 Help:i18n#页面标题)确定每个页面的语言,并在 wiki 的数据库中设置语言代码。这可以通过 MediaWiki 的 $wgPageLanguageUseDB 设置 [1] 实现。
链接检查
- extlink-checker.py 尝试检查外部链接的状态,并将那些绝对损坏的链接标记为 Template:Dead link。许多链接仍然未被此工具检查,主要是因为站点需要 JavaScript 并且服务器返回不确定的 HTTP 状态代码。
- url-replace.py 对外部链接执行各种替换,例如将 URL 从 HTTP 更新为 HTTPS 或将外部链接替换为 wiki.archlinux.org 的内部链接。
- link-checker.py 对内部链接、手动页面链接和外部链接(使用与
url-replace.py
相同的代码)执行各种检查和替换。 - mark-archived-links.py 将指向 ArchWiki:Archive 的内部链接标记为 Template:Archived page。