跳转到主要内容

EarwigBot 是一个编辑维基百科并在IRC上进行交互的机器人

项目描述

EarwigBot 是一个 Python 机器人,它可以编辑 维基百科 并在 IRC 上进行交互。此 README 提供了如何安装和设置机器人的基本概述;更详细的信息位于 docs/ 目录中(可在网上找到)。

历史

开发始于2009年初,基于Pywikibot。其首个任务——一个版权侵权检测器——于5月份获得批准,自此该机器人一直在稳定运行。目前,它处理从统计生成到分类清理的多个持续任务,以及按需任务,如WikiProject模板标记。自运行以来,该机器人已进行了超过30万次编辑。

其代码库的当前版本始于2011年4月,从Pywikibot迁移到一个自定义框架。

安装

此软件包包含核心earwigbot,抽象化以使任何在MediaWiki网站上运行机器人的人都可以使用和自定义。由于其模块化,如果需要,可以禁用IRC组件。特定于我的EarwigBot实例的IRC命令和机器人任务,这些命令我认为普通用户不需要,可以从earwigbot-plugins存储库中获得。

最新版本

EarwigBot可在Python包索引中找到,因此您可以使用以下命令安装最新版本

pip install earwigbot

有一些可选的依赖项集

  • crypto:允许在配置中加密机器人密码和机密

  • sql:允许与MediaWiki数据库(例如在Toolforge)交互

  • copyvios:包括检查版权侵权的解析库

  • dev:安装开发依赖项(例如测试运行器)

例如,要安装所有非开发依赖项

pip install ‘earwigbot[crypto,sql,copyvios]’

在pip安装依赖项时可能出现的错误可能是缺少头文件。例如,在Ubuntu上,请参阅这篇StackOverflow帖子

开发版本

您可以安装机器人的开发版本

git clone https://github.com/earwig/earwigbot.git
cd earwigbot
python3 -m venv venv
. venv/bin/activate
pip install -e '.[crypto,sql,copyvios,dev]'

要运行机器人的单元测试,请运行pytest(需要开发依赖项)。覆盖率目前尚不完整。

设置

机器人将其数据存储在“工作目录”中,包括其配置文件和数据库。这也是您将放置自定义IRC命令和机器人任务的位置,这些将在稍后解释。只要机器人可以写入它,这个目录在哪里都无关紧要。

使用earwigbot path/to/working/dir启动机器人,或者如果工作目录是当前目录,则只需earwigbot。它将注意到不存在config.yml文件,并引导您通过设置过程。

在创建后,目前无法在机器人内部编辑config.yml文件,但您应该能够自己做出任何必要的更改。

设置后,机器人将启动。这意味着它将连接到其配置的IRC服务器,安排在特定时间运行机器人任务,然后等待指令(作为IRC上的命令)。有关命令列表,请说“!help”(命令是前面带有感叹号的短信)。

您可以使用Control+C在任何时候停止机器人,就像停止常规Python程序一样,它会尝试安全退出。您还可以在IRC上使用“!quit”命令。

自定义

机器人的工作目录包含一个commands子目录和一个tasks子目录。自定义IRC命令可以放在前者,而自定义的wiki机器人任务则放在后者。下面将解释如何开发自定义模块,更详细的内容可以通过机器人的文档docs/目录中的信息来了解。

请注意,自定义命令将覆盖同名内置命令和任务。

BotBotConfig

earwigbot.bot.Bot 是 EarwigBot 的主要类。您不需要自己实例化它,但了解其属性和方法是很好的,因为这是与其他机器人部分通信的主要方式。一个 Bot 对象可以通过命令和任务(即 self.bot)访问。

earwigbot.config.BotConfig 存储机器人的配置信息。它的文档字符串解释了每个属性的作用,但基本上每个“节点”(即 config.componentswikiirccommandstasksmetadata)映射到机器人 config.yml 文件的一个部分。例如,如果 config.yml 包含以下内容

irc:
    frontend:
        nick: MyAwesomeBot
        channels:
            - "##earwigbot"
            - "#channel"
            - "#other-channel"

那么 config.irc["frontend"]["nick"] 将是 "MyAwesomeBot",而 config.irc["frontend"]["channels"] 将是 ["##earwigbot", "#channel", "#other-channel"]

自定义IRC命令

自定义命令是 earwigbot.commands.Command 的子类,它覆盖了 Commandprocess()(以及可选的 check()setup()unload())方法。

机器人有多种内置命令和插件,可以作为示例代码,也可以提供一些灵感。从 test 开始,然后查看 chanopsafc_status 以获取一些更复杂的脚本。

自定义机器人任务

自定义任务是 earwigbot.tasks.Task 的子类,它覆盖了 Taskrun()(以及可选的 setup()unload())方法。

查看内置的 wikiproject_tagger 任务以了解相对简单的工作,或者查看 afc_statistics 插件以了解更复杂的工作。

Wiki工具集

EarwigBot 对应于 Pywikibot 的是 Wiki工具集(earwigbot.wiki),您将通过 bot.wiki 主要访问它。

bot.wiki 提供了三个用于管理站点的功能:get_site()add_site()remove_site()。站点是表示 MediaWiki 站点的对象。单个 EarwigBot 实例(即单个 工作目录)通常与单个站点或使用相同登录信息(如所有 WMF wiki 使用 CentralAuth)的多个站点相关联。

使用 site = bot.wiki.get_site() 加载您的默认站点(在设置期间选择的站点)。

本文档并未涵盖工具集的所有方面。通过探索其代码和文档字符串来了解如何更实际地使用它。作为参考,bot.wiki是绑定到bot工作目录中的sites.db文件的earwigbot.wiki.SitesDB实例。

项目详情


下载文件

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

源代码分布

earwigbot-0.4.tar.gz (122.8 kB 查看哈希值)

上传时间 源代码

构建版本

earwigbot-0.4-py3-none-any.whl (174.3 kB 查看哈希值)

上传时间 Python 3

支持者