SDK 玩家(推荐)
作者平时都这么玩,一般会确保这个方法是可用的
Add the package:
# Using pnpm
pnpm add koishi-plugin-mediawiki
# Yarn? Sure.
yarn add koishi-plugin-mediawiki
# Or just npm
npm i koishi-plugin-mediawiki
Then in your entry file:
// Import the plugin
import PluginMediawiki from 'koishi-plugin-mediawiki'
// the `app` is koishi App instance
app.plugin(PluginMediawiki, {
// configs here...
})
CLI 玩家(也还行,就是配置自定义信息框的时候会很抽象)
koishi.yml
plugins:
mediawiki:
# configs here...
控制台玩家(我不好说,大概兼容吧……)
在插件中心搜索koishi-plugin-mediawiki
您正在经营 MediaWiki 网站的附属群聊?为您的 koishi 机器人添加“wiki”指令吧,实用 wiki 功能一网打尽!
一键配置 wiki 与群组连接,无需写死在配置文件
![](https://private-user-images.githubusercontent.com/44761872/306181980-a8cea95a-ccd0-4540-bca7-0e08ba0ce697.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTk5NTY1NzIsIm5iZiI6MTcxOTk1NjI3MiwicGF0aCI6Ii80NDc2MTg3Mi8zMDYxODE5ODAtYThjZWE5NWEtY2NkMC00NTQwLWJjYTctMGUwOGJhMGNlNjk3LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzAyVDIxMzc1MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWMzOTZiNTFiOWViZTQwZGE5NDYwY2Q0Y2U5NjliNmI2ODk4N2JkYThkMGNlYmU5MjFmMTgzYTkzNTQyNTQzMGQmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.e5zrhviR3VaOikMDO-pXFR4Nw00NY3qdwKN1BftoFrg)
自动识别消息里的 wiki 链接,兼容中文简繁转换,此外还可以输出页面摘要(为防止刷屏预设关闭)
![](https://private-user-images.githubusercontent.com/44761872/306182779-e3ed2558-a3d9-4cf8-90c1-e217a4bdc0dd.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTk5NTY1NzIsIm5iZiI6MTcxOTk1NjI3MiwicGF0aCI6Ii80NDc2MTg3Mi8zMDYxODI3NzktZTNlZDI1NTgtYTNkOS00Y2Y4LTkwYzEtZTIxN2E0YmRjMGRkLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzAyVDIxMzc1MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTg4NDcwNTcxN2FkNGM2MDg0ZjU1YjlkNjNiYmY3MzIwNWJhMGU4NmEwMGVkODU3M2E2NzMzYzI1YzBkYjIzNzgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.IjWJ2Nl3BmuvMDmt16GwYGPVihtBQAFOUbMkcapV7Zs)
还能正确处理锚点
![](https://private-user-images.githubusercontent.com/44761872/306182891-37cb4a0e-ee54-45a8-b4f6-769e2e186983.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTk5NTY1NzIsIm5iZiI6MTcxOTk1NjI3MiwicGF0aCI6Ii80NDc2MTg3Mi8zMDYxODI4OTEtMzdjYjRhMGUtZWU1NC00NWE4LWI0ZjYtNzY5ZTJlMTg2OTgzLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzAyVDIxMzc1MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTQ5M2I0MzgyOWY5NzI0ZjAxZDEzNjEzYzQ5NDc1YTA5ZjlmYTFkODM4YzliYjUxZWViYjJlZDM2NDk1Y2RlODImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.-TftCtpUvHxR4t2Br4M1MVEMQr9uBG3BokPl8IRZNbM)
处理特殊页面,防止暴露敏感信息
![](https://private-user-images.githubusercontent.com/44761872/306182961-4ca54731-2615-4097-b5ee-3b5b418de925.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTk5NTY1NzIsIm5iZiI6MTcxOTk1NjI3MiwicGF0aCI6Ii80NDc2MTg3Mi8zMDYxODI5NjEtNGNhNTQ3MzEtMjYxNS00MDk3LWI1ZWUtM2I1YjQxOGRlOTI1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzAyVDIxMzc1MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTM5ZTkxODIyYjNkN2U0MGEyZGRhZjNmM2Y1NTYwZmEyOGYzMGUwNGFmYTQ2OTg0OWYxMWIwYWEwNjkwNjMyYTImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.Fm8xV9c2SyZakK8_sA8HYmr7m0BgFhZVXuCL5_Rodh4)
即使页面不存在也不会爆炸
![](https://private-user-images.githubusercontent.com/44761872/306183146-a8f4199e-10a5-4440-816c-1544ddb8b97b.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTk5NTY1NzIsIm5iZiI6MTcxOTk1NjI3MiwicGF0aCI6Ii80NDc2MTg3Mi8zMDYxODMxNDYtYThmNDE5OWUtMTBhNS00NDQwLTgxNmMtMTU0NGRkYjhiOTdiLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzAyVDIxMzc1MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTUyODAxOGExMTM0MjVkYjczYWYwYjEwMmNmNjc4YzI5ZWViM2I4MDg1MWM1YzM0OGMzYjI3YjEwMmM3ZGQ2MTAmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.j5t7JwzwYy2jUNLdNe3rhlU8OJa-kTFUgHXJY-l8Peg)
- 搜索 wiki,并给出前几个匹配项的摘要
- 请求条目不存在时,自动使用关键字进行搜索(预设关闭)
![](https://private-user-images.githubusercontent.com/44761872/306183238-9ba55cd7-0c35-4a7e-889f-9eec8ef0d68a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTk5NTY1NzIsIm5iZiI6MTcxOTk1NjI3MiwicGF0aCI6Ii80NDc2MTg3Mi8zMDYxODMyMzgtOWJhNTVjZDctMGMzNS00YTdlLTg4OWYtOWVlYzhlZjBkNjhhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzAyVDIxMzc1MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTUyZThkZDU5MTY4YjU3NjU5ZjQ0ZGQ4MWRjNmZiZDc0NTM0NDQwM2M1ZDc1NDhkOGMxNmUyZjNjYzlhYmQxMDImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.x6hmuJ4SPBsqXu-dINfexa2m-DkjVVTGoJhmruMDwGY)
- 发送条目的信息框(Infobox)截图(内置萌娘百科、灰机、Fandom 支持,其他 wiki 可能需要自行配置,见下方说明)
都看到这了,快去安装吧
![](https://private-user-images.githubusercontent.com/44761872/306183331-708d3c37-f1c6-4731-b549-10572327c11a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTk5NTY1NzIsIm5iZiI6MTcxOTk1NjI3MiwicGF0aCI6Ii80NDc2MTg3Mi8zMDYxODMzMzEtNzA4ZDNjMzctZjFjNi00NzMxLWI1NDktMTA1NzIzMjdjMTFhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA3MDIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNzAyVDIxMzc1MlomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWE1ZThiZDUzYThhYTU1NzkxNjZhOTI3MDYxNGZjZGI2MGIwOTM2YzgxNDVlODI5MDMyMzQyZDYxYzdiOTY2YzUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.TuHLB3L69Urfk0wGICnWxg6h4ovipqBFd8FuQjVFHds)
interface Config {
// 指令用户权限
cmdAuthWiki: number // 1
cmdAuthConnect: number // 2
cmdAuthSearch: number // 1
// 页面不存在时自动搜索(预设关闭)
searchIfNotExist: boolean
// wiki 指令附带页面摘要(预设关闭)
showDetailsByDefault: boolean
// 额外信息框配置
customInfoboxes: InfoboxDefinition[]
}
SDK 玩家(推荐)
// 举个例子
app.plugin(PluginMediawiki, {
customInfoboxes: [
{
// URL匹配规则
match: (url: URL) => url.host.endsWith('fandom.com'),
// infobox 选择器列表
selector: ['.mw-parser-output aside.portable-infobox'],
// 额外 css
injectStyles: '.foo { display: none } .bar { display: block }',
},
],
})
CLI/控制台玩家
写正则表达式的时候得小心点,它真的很抽象,但是我确实没有更好的办法兼容它了
plugins:
plugins:
mediawiki:
# URL匹配规则,一个正则表达式字符串
match: '^https?:\/\/.+?\.fandom\.com'
# infobox 选择器列表
selector:
- '.mw-parser-output aside.portable-infobox'
# 额外 css
injectStyles: |
.foo { display: none }
.bar { display: block }
- koishi 主程序版本
^4.16.0
- 需要数据库支持
koishi-database-*
- 截图功能需要
koishi-plugin-puppeteer
Copyright 2021 Dragon-Fish
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0