Crate mwbot

source
Expand description

A MediaWiki bot and tool framework

mwbot aims to provide a batteries-included framework for building bots and tools for MediaWiki wikis. It builds on top of the mwapi and parsoid crates, which offer lower-level APIs.

§Quickstart

§Configuration

Create a ~/.config/mwbot.toml file with the following structure:

wiki_url = "https://en.wikipedia.org/w/"

If want to authenticate, add an auth section:

[auth]
username = "Example"
oauth2_token = "[...]"

See the OAuth documentation for how to get an OAuth 2 token. Using an owner-only consumer is the easiest way to do so.

§Reading a page

let bot = mwbot::Bot::from_default_config().await.unwrap();
let page = bot.page("Rust (programming language)")?;
let html = page.html().await?.into_mutable();
// The lead section is the second p tag in the first section
let lead = html.select("section > p")[1].text_contents();
assert!(lead.starts_with("Rust is a multi-paradigm, general-purpose programming language"));

Using Bot::from_default_config() will look in the current directory for mwbot.toml before looking in the user’s config directory. A custom path can be specified by using Bot::from_config(...).

§Editing a page

let bot = mwbot::Bot::from_default_config().await.unwrap();
let page = bot.page("Project:Sandbox")?;
let wikitext = "This is a test edit!";
page.save(wikitext, &SaveOptions::summary("test edit!")).await?;

Page.save() accepts both HTML and wikitext and supports the {{nobots}} exclusion mechanism, among other features.

§Next steps

Try using one of the offered page generators to fetch and operate on multiple pages.

§Contributing

mwbot is the flagship crate of the mwbot-rs project. We’re always looking for new contributors, please reach out if you’re interested!

Re-exports§

  • pub use mwtimestamp as timestamp;
  • pub use parsoid;

Modules§

Structs§

  • API Client
  • Main bot class
  • Build a mwbot::Bot instance programmatically
  • A Page represents a wiki page on a specific wiki (Bot). You can get metadata about a page, its contents (in HTML or wikitext) and edit the page.
  • Extra options for saving pages
  • Represents a MediaWiki title. A title can be broken down into the following attributes: [[interwiki:ns:db_key#fragment]].
  • The TitleCodec is responsible for parsing, normalizing and formatting Titles. See the crate-level documentation for an example of how to construct one.

Enums§

Functions§

  • Setup logging, can be adjusted by setting the RUST_LOG environment variable.

Type Aliases§