telegraf-wikibase
TypeScript icon, indicating that this package has built-in type declarations

0.13.0 • Public • Published

telegraf-wikibase

NPM Version node

Telegraf/grammY Middleware to use Wikibase entities (like Wikidata ones) in your users language

This library is inspired by telegraf-i18n and was made to work with Wikidata.

HINT: wikibase-sdk went from being wikidata-sdk to be usable for Wikibase in general. As this process is ongoing this library only supports Wikidata currently. General Wikibase support is wished for but not worked on currently. (Feel free to create a Pull Request.)

Install

npm install telegraf-wikibase

Usage

import {TelegrafWikibase} from 'telegraf-wikibase';

const twb = new TelegrafWikibase()
twb.addResourceKeys({human: 'Q5', earth: 'Q2'})

bot.use(twb)

bot.command('foo', async ctx => {
  const reader = await ctx.wb.r('human')
  return ctx.reply(`Hey ${reader.label()}!`)
  // returns 'Hey Human!'; 'Hey Mensch!'; … depending on the users language
})

The middleware adds .wb to the Context ctx.

API

Constructor

bot.use(new TelegrafWikibase())
bot.use(new TelegrafWikibase(store: Store<EntitySimplified>, options))

store to access requested resourceKeys or entity IDs (Q-Numbers).

options

const options = {
  contextKey: 'wd'
}

contextKey determines the key where to reach the Context Methods. Defaults to wb (ctx.wb.reader)

Context Methods

locale

ctx.wb.locale(): string

Returns current languageCode of the user.

ctx.wb.locale(languageCode: string): string

Set the languageCode to the ctx.session of the user. Still returns the (newly set) languageCode of the user.

reader

async ctx.wb.reader(key: string): Promise<WikidataEntityReader>

Returns the WikidataEntityReader. Use it with .label(), .description() and so on…

Package Sidebar

Install

npm i telegraf-wikibase

Weekly Downloads

29

Version

0.13.0

License

MIT

Unpacked Size

17.5 kB

Total Files

9

Last publish

Collaborators

  • edjopato