UNPKG

telegraf

Version:

📡 Modern Telegram bot framework

118 lines (115 loc) • 2.96 kB
function wrapEntity (content, entity) { switch (entity.type) { case 'bold': return `<b>${content}</b>` case 'italic': return `<i>${content}</i>` case 'code': return `<code>${content}</code>` case 'pre': return `<pre>${content}</pre>` case 'text_link': return `<a href="${entity.url}">${content}</a>` default: return content } } function applyEntity (text, entity) { const head = text.substring(0, entity.offset) const tail = text.substring(entity.offset + entity.length) const content = wrapEntity(text.substring(entity.offset, entity.offset + entity.length), entity) return `${head}${content}${tail}` } module.exports = { copyMethods: { 'audio': 'sendAudio', 'contact': 'sendContact', 'document': 'sendDocument', 'location': 'sendLocation', 'photo': 'sendPhoto', 'sticker': 'sendSticker', 'text': 'sendMessage', 'venue': 'sendVenue', 'video': 'sendVideo', 'video_note': 'sendVideoNote', 'voice': 'sendVoice' }, text: (message) => { const entities = message.entities || [] return { parse_mode: 'HTML', text: entities.reduceRight(applyEntity, message.text) } }, contact: (message) => { return { phone_number: message.contact.phone_number, first_name: message.contact.first_name, last_name: message.contact.last_name } }, location: (message) => { return { latitude: message.location.latitude, longitude: message.location.longitude } }, venue: (message) => { return { latitude: message.venue.location.latitude, longitude: message.venue.location.longitude, title: message.venue.title, address: message.venue.address, foursquare_id: message.venue.foursquare_id } }, voice: (message) => { return { voice: message.voice.file_id, duration: message.voice.duration, caption: message.caption } }, audio: (message) => { return { audio: message.audio.file_id, duration: message.audio.duration, performer: message.audio.performer, title: message.audio.title, caption: message.caption } }, video: (message) => { return { video: message.video.file_id, caption: message.caption, duration: message.video.duration, width: message.video.width, height: message.video.height } }, document: (message) => { return { document: message.document.file_id, caption: message.caption } }, sticker: (message) => { return { sticker: message.sticker.file_id } }, photo: (message) => { return { photo: message.photo[message.photo.length - 1].file_id, caption: message.caption } }, video_note: (message) => { return { video_note: message.video_note.file_id, length: message.video_note.length, duration: message.video_note.duration } } }