TOOLS为非官方社区,欢迎一起建设,答疑群:717421103

版本260427.1

全站通知:

机器人

阅读

    

2026-04-04更新

    

最新编辑:亚衣琴

阅读:

  

更新日期:2026-04-04

  

最新编辑:亚衣琴

来自ToolsWIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索
页面贡献者 :
亚衣琴
Lu_23333
AI提示

机器人是指通过程序自动操作 Wiki 的脚本或应用。它们可以帮你批量编辑页面、上传文件、整理分类,把你从重复劳动里解放出来。

在 BWiki 上写机器人首选的两条路线:

  • 浏览器里的机器人(JavaScript + mw.Api():无需安装,控制台直接跑,适合一次性/临时性任务
  • 独立的机器人程序(比如 Python、Node.js):需要本地环境,适合复杂的批量操作

一句话说清楚

机器人 = 代码 + API。

BWiki 基于 MediaWiki,提供了完整的 API 接口 https://wiki.biligame.com/要操作的wiki/api.php

比如对于本Wiki 就是 https://wiki.biligame.com/tools/api.php

直接访问这个URL,就能看到其文档,不过还是推荐用现成的库,而不是按照文档自己拼接HTTP请求。

你只需要:

  1. 拿到操作权限(浏览器路线自动复用登录态,本地路线需要提供Cookie SESSDATA
  2. 调用 API 做你想做的事(读页面、写页面、传文件……)
  3. 控制好频率,别给服务器造成压力

下面两条路线会分别告诉你具体怎么做,你也可以自行去查看API文档。

API是什么

所有机器人背后都是同一个东西:MediaWiki API。你可以把它理解成 Wiki 的“程序化操作面板”——页面上能做的每一件事(读页面、写页面、上传文件、查分类……),几乎都能通过 API 用代码完成。

比如 tools wiki 的 API 就是 https://wiki.biligame.com/tools/api.php

它能做什么?

打开 api.php 你会看到一长串参数,不用怕——你不需要全看懂。只需要知道几个大方向:

  • 读数据action=query):获取页面内容、分类成员、图片信息、用户贡献……几乎所有“查”的事情都在这里
  • 写数据action=edit / upload / move 等):编辑页面、上传文件、移动页面、保护页面……
  • 元信息action=query&meta=):获取站点配置、当前用户信息、令牌(编辑需要它)
  • 扩展功能:SMW查询(action=ask)、模板展开(action=expandtemplates)、解析 wikitext(action=parse)……

不用记,知道“有这东西”就行。真要用的时候,去问AI、查官方文档或者抄现成的示例。一般会通过现成的库调用,不需要自己拼接HTTP请求。

接下来的两条路线,就是「怎么在代码里用这些 API」的具体方式。

路线A:浏览器里的机器人

适合场景:临时想批量改点东西、快速查数据、不想折腾编程环境,AI可以快速帮你写。直接在浏览器控制台(F12)里运行,所见即所得。

由于是在浏览器控制台内运行,因此与wiki内不同,可以使用ES6语法。

什么是 mw.Api()

BWiki 基于 MediaWiki,内置了一个非常好用的 API 封装:mw.Api()。它不需要额外安装,也不需要处理登录——因为你已经在浏览器里登录了,它会自动复用当前会话。

使用前需要先加载这个模块:

mw.loader.using('mediawiki.api').then(async () => {
    const api = new mw.Api();
    // 你的代码写在这里
});

示例:获取当前页面的内容

打开任何一个 BWiki 页面,按 F12 进入控制台,粘贴以下代码试试:

mw.loader.using('mediawiki.api').then(async () => {
    const api = new mw.Api();
    api.get({
        action: 'query',
        titles: mw.config.get('wgPageName'),
        prop: 'revisions',
        rvprop: 'content',
        formatversion: '2',
    }).then(({ query: { pages: [{ revisions: [{ content }] }] } }) => {
            console.log(`页面内容:${content}`);
        },
    );
});

常用操作

这里列几个最常见的需求。所有示例都可以直接复制到控制台运行。

读取某个页面的内容

mw.loader.using('mediawiki.api').then(async () => {
    const api = new mw.Api();
    api.get({
        action: 'query',
        titles: '沙盒', // 把这里改成你要读取的页面标题
        prop: 'revisions',
        rvprop: 'content',
        formatversion: '2',
    }).then(({ query: { pages: [{ revisions: [{ content }] }] } }) => {
            console.log(`页面内容:${content}`);
        },
    );
});

编辑一个页面

mw.loader.using('mediawiki.api').then(async () => {
    const api = new mw.Api();
    api.postWithToken('csrf', {
        action: 'edit',
        title: '沙盒',
        text: '这是机器人写入的新内容', // 新内容
        summary: '机器人测试编辑', // 编辑摘要
    }).then(console.log('编辑成功')).catch(error => console.log(`编辑失败:${error}`));
});

获取某个分类下的所有页面

mw.loader.using('mediawiki.api').then(async () => {
    const api = new mw.Api();
    const {
        query: { categorymembers },
    } = await api.post({
        action: 'query',
        format: 'json',
        list: 'categorymembers',
        cmtitle: '分类:文档', // 分类名
        cmprop: 'title',
        cmlimit: 'max',
    });
    for (const { title } of categorymembers) {
        console.log(title);
    }
});

浏览器路线的局限

  • 控制台脚本页面刷新即丢,适合一次性任务。可以本地保存脚本方便重复使用。
  • 不适合上传文件(浏览器限制)、不适合跑定时任务。

路线B:独立的机器人程序

适合场景:批量处理几百个页面、上传/下载文件、跑定时任务、需要操作数据模块。

在 AI 的辅助下,任何语言都能很方便地通过现成的 Wiki 库来编辑 Wiki。下面重点介绍 PythonNode.js 两条主流路径。

通用准备工作:获取 SESSDATA

独立程序不能复用浏览器的登录态,需要手动提供 Cookie 中的 SESSDATA

  1. 在浏览器中登录你的 BWiki 账号
  2. 按 F12 打开开发者工具 → 「Application」/「存储」标签页 → 「Cookies」 → 找到 https://wiki.biligame.com
  3. 复制 SESSDATA 的值(一串字母数字组合)

注意SESSDATA 相当于密码,不要提交到公开代码仓库。

Python 路线

常用库:

  • mwclient:轻量,适合大多数编辑任务
  • pymediawiki:对语义媒体箱(SMW)支持更好
  • requests:直接调用 API,更灵活

参见:

Node.js 路线

Node.js 同样非常适合编写独立机器人,尤其是当你的团队主要使用 JavaScript/TypeScript 时。

常用库:

  • mwn:功能最完整的 MediaWiki API 封装,支持 TypeScript
  • mwbot:轻量级
  • wiki-saikou:与原版 new mw.Api() 非常相似的 API 请求封装

路线对比

对比项 JS + mw.Api() Python + mwclient Node.js
环境要求 浏览器 需要安装 Python 需要安装 Node.js
登录方式 自动复用当前登录态 需要手动提供 SESSDATA 需要手动提供 SESSDATA 或密码
适合场景 一次性脚本、快速验证 批量任务、定时任务、文件操作 批量任务、TypeScript 项目、与前端同语言
文件上传 不支持(浏览器限制) 支持 支持
学习曲线 低(控制台直接跑) 中(需安装和配置) 中(需安装和配置)
典型用途 批量改文字、查数据 上传图片、维护数据模块、跑定时机器人 复杂机器人、全栈项目统一语言

机器人礼仪与注意事项

无论你用哪条路线,都请遵守以下规则,做一个负责任的机器人主人:

  • 先测试,后批量:先在 1-2 个页面上跑通,确认逻辑正确再扩大到全站。
  • 使用批量操作:API 支持一次性获取列表(如 list=categorymembers),不要用循环发几十次单独请求。
  • 适当缓存:像分类成员列表、所有页面列表这类数据,可以存下来重复用,不需要每次跑都重新拉。
  • 设置身份标识:如果用 Python 或 Node.js,建议设置 User-Agent 带上你的联系方式(如编辑群昵称),方便 BWiki 官方或其他人联系你。
  • 控制频率:避免短时间内大量并发请求。

延伸阅读