@puregram/markup v1.3.4
@puregram/markup
simple yet powerful markup system for puregram package
introduction
you all know how you need to provide parse_mode every time you
send a message with a markdown or html, right? it might get a
little boring after first few hundreds of times, so i present
to you @puregram/markup!
example
const { format, bold, italic, code, hooks: formatHooks } = require('@puregram/markup')
const { Telegram } = require('puregram')
const telegram = Telegram.fromToken(process.env.TOKEN)
// we use hooks for this one
telegram.useHooks(formatHooks())
telegram.updates.on('message', (context) => {
return context.send(
format`hey! this ${bold('message')} is ${italic('formatted')} without ${code('parse_mode')}!`
)
})
telegram.updates.startPolling()installation
$ yarn add @puregram/markup
$ npm i -S @puregram/markupusage
all of the functions except those that require two or more arguments can be called either via template strings or like basic functions
// template strings
bold`foo ${italic`bar`}`
// parentheses
bold(italic('bar'))there's literally no distinction between them, however if you are going to do embedded markup, you should use template strings:
// ✅ works
bold`foo ${italic`bar`}`
bold`${italic`bar`}`
bold(italic('bar'))
// ❌ does not work
bold(`foo ${italic('bar')}`)
bold(`${italic('foo')}`)the last one does not work simply because javascript compiles foo ${italic('bar')} into a single string which becomes 'foo object Object' soo yeah
available functions
format(strings: TemplateStringsArray, ...rest: Rest)
formats the template and strips first pack of spaces from all lines (stripIndent-like)
format`
hello!
those two spaces at the start will be stripped
but those additional two spaces wont
`formatDedent(strings: TemplateStringsArray, ...rest: Rest)
this one acts like format except it... ugh just roll the credits code example
format`
hello!
those two spaces at the start will be stripped
those additional two will also be stripped
and those additional 18 spaces too!
`(stripIndents-like)
bold(text: string)
bold('hey!')bold`hey!`italic(text: string)
italic('hey!')italic`hey!`code(code: string)
code('const x = 5')code`const x = 5`underline(text: string)
underline('hey!')underline`hey!`strikethrough(text: string)
strikethrough('hey!')strikethrough`hey!`spoiler(text: string)
spoiler('hey!')spoiler`hey!`mention(text: string)
mention('@username')mention`@username`pre(text: string, language?: string)
pre('im cool')pre('im cool but in bash', 'sh')link(text: string, url: string)
link('epic!', 'https://github.puregram.cool')mentionUser(text: string, userId: number)
mentionUser('dude', 398859857)mentionBot(text: string, userId: number)
mentionUser('robodude', telegram.bot.id)textMention(text: string, user: Interfaces.TelegramUser)
mentionUser('dude', { id: 398859857, is_bot: false, first_name: 'dude' })customEmoji(text: string, id: string)
customEmoji('😁', '...')