keli-baike
Version:
keli 的百度百科插件,提供词条百科、词条搜索功能,支持模糊匹配
44 lines (36 loc) • 1.33 kB
JavaScript
const { Plugin } = require('keli')
const { fetchBaike, fetchItems } = require('./services')
const { name, version } = require('./package.json')
const plugin = new Plugin(name, version)
const baike = /^百科\s*([^\s]+)\s*$/
const baikeIndex = /^百科\s*([^\s]+)\s+(\d+)\s*$/
const item = /^词条\s*([^\s]+)\s*$/
plugin.onMounted(bot => {
plugin.onMatch(['百科', '百度百科', 'baike'], e => {
e.reply('百科<词条>\n词条<词条>\n百科<词条> <序号>', true)
})
plugin.onMatch(baike, async event => {
const word = baike.exec(event.raw_message)[1]
const info = await fetchBaike(word)
event.reply(info)
})
plugin.onMatch(baikeIndex, async event => {
const results = baikeIndex.exec(event.raw_message)
const [_, word, idx] = results
const info = await fetchBaike(word, idx)
event.reply(info)
})
plugin.onMatch(item, async event => {
const word = item.exec(event.raw_message)[1]
const info = await fetchItems(word, bot.uin, bot.nickname)
const n = info.length - 1
const isPrivate = event.message_type === 'private'
if (Array.isArray(info)) {
const msg = await bot.makeForwardMsg(info, `共 ${n} 个义项`, '轻按查看详情', isPrivate)
event.reply(msg)
} else {
event.reply(info)
}
})
})
module.exports = { plugin }