simple yet powerful markup system for puregram
package
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
!
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()
$ yarn add @puregram/markup
$ npm i -S @puregram/markup
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
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
`
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('hey!')
bold`hey!`
italic('hey!')
italic`hey!`
code('const x = 5')
code`const x = 5`
underline('hey!')
underline`hey!`
strikethrough('hey!')
strikethrough`hey!`
spoiler('hey!')
spoiler`hey!`
mention('@username')
mention`@username`
pre('im cool')
pre('im cool but in bash', 'sh')
link('epic!', 'https://github.puregram.cool')
mentionUser('dude', 398859857)
mentionUser('robodude', telegram.bot.id)
mentionUser('dude', { id: 398859857, is_bot: false, first_name: 'dude' })
customEmoji('😁', '...')