Snapshots

This commit is contained in:
Luis Fernando Molina committed 2020-05-10 14:17:33 +02:00
1 parent e91125801d
commit 6368221937
75 files changed
+8943 -4332

No files matched your search

+5
View File
@@ -330,6 +330,11 @@ class TelegrafContext {
return this.telegram.kickChatMember(this.chat.id, ...args)
}
unbanChatMember (...args) {
this.assert(this.chat, 'unbanChatMember')
return this.telegram.unbanChatMember(this.chat.id, ...args)
}
restrictChatMember (...args) {
this.assert(this.chat, 'restrictChatMember')
return this.telegram.restrictChatMember(this.chat.id, ...args)
+85 -45
View File
@@ -164,15 +164,91 @@ class Markup {
}
static formatHTML (text = '', entities = []) {
const chars = ['', ...text.split(''), ''].map(escapeHTMLChar)
entities.forEach(entity => {
const tag = getHTMLTag(entity)
const openPos = entity.offset
const closePos = entity.offset + entity.length + 1
chars[openPos] += tag.open
chars[closePos] = tag.close + chars[closePos]
})
return chars.join('')
const chars = [...text]
const available = [...entities]
const opened = []
const result = []
for (let offset = 0; offset < chars.length; offset++) {
while (true) {
const index = available.findIndex((entity) => entity.offset === offset)
if (index === -1) {
break
}
const entity = available[index]
switch (entity.type) {
case 'bold':
result.push('<b>')
break
case 'italic':
result.push('<i>')
break
case 'code':
result.push('<code>')
break
case 'pre':
if (entity.language) {
result.push(`<pre><code class="language-${entity.language}">`)
} else {
result.push('<pre>')
}
break
case 'strikethrough':
result.push('<s>')
break
case 'underline':
result.push('<u>')
break
case 'text_mention':
result.push(`<a href="tg://user?id=${entity.user.id}">`)
break
case 'text_link':
result.push(`<a href="${entity.url}">`)
break
}
opened.unshift(entity)
available.splice(index, 1)
}
result.push(chars[offset])
while (true) {
const index = opened.findIndex((entity) => entity.offset + entity.length - 1 === offset)
if (index === -1) {
break
}
const entity = opened[index]
switch (entity.type) {
case 'bold':
result.push('</b>')
break
case 'italic':
result.push('</i>')
break
case 'code':
result.push('</code>')
break
case 'pre':
if (entity.language) {
result.push('</code></pre>')
} else {
result.push('</pre>')
}
break
case 'strikethrough':
result.push('</s>')
break
case 'underline':
result.push('</u>')
break
case 'text_mention':
case 'text_link':
result.push('</a>')
break
}
opened.splice(index, 1)
}
}
return result.join('')
}
}
@@ -203,40 +279,4 @@ function buildKeyboard (buttons, options) {
return result
}
function escapeHTMLChar (c) {
switch (c) {
case '&': return '&amp;'
case '"': return '&quot;'
case '\'': return '&#39;'
case '<': return '&lt;'
default : return c
}
}
function tag (name, params) {
return {
open: params
? `<${name} ${Object.entries(params).map(([key, value]) => `${key}="${value.replace(/[<&"]/g, escapeHTMLChar)}"`).join(' ')}>`
: `<${name}>`,
close: `</${name}>`
}
}
const HTMLTags = new Map([
['bold', tag('b')],
['italic', tag('i')],
['code', tag('code')],
['pre', tag('pre')],
['strikethrough', tag('s')],
['underline', tag('u')],
['text_link', ({ url }) => tag('a', { href: url })],
['text_mention', ({ user }) => tag('a', { href: `tg://user?id=${user.id}` })]
])
function getHTMLTag (entity) {
const tag = HTMLTags.get(entity.type || 'unknown')
if (!tag) return { open: '', close: '' }
return typeof tag === 'function' ? tag(entity) : tag
}
module.exports = Markup
+13 -13
View File
@@ -1,34 +1,33 @@
{
"_from": "telegraf@3.37.0",
"_id": "telegraf@3.37.0",
"_from": "telegraf@^3.37.0",
"_id": "telegraf@3.38.0",
"_inBundle": false,
"_integrity": "sha512-V3448qwfOolBqkIc87yxjW4zMvR2P6AIF24pPTlX9WhZPwA1TF/x3nQhnWPRLtGh2SJuvDcr83iTkXPXT7Opnw==",
"_integrity": "sha512-va4VlrKWp64JrowFoZX/NPzzA6q38kvaIukVXOWFO1V+jR1G8+hCfgJy4TX8Z3rwLJzwaBEet1QhikHDRZWl3A==",
"_location": "/telegraf",
"_phantomChildren": {},
"_requested": {
"type": "version",
"type": "range",
"registry": true,
"raw": "telegraf@3.37.0",
"raw": "telegraf@^3.37.0",
"name": "telegraf",
"escapedName": "telegraf",
"rawSpec": "3.37.0",
"rawSpec": "^3.37.0",
"saveSpec": null,
"fetchSpec": "3.37.0"
"fetchSpec": "^3.37.0"
},
"_requiredBy": [
"#USER",
"/"
],
"_resolved": "https://registry.npmjs.org/telegraf/-/telegraf-3.37.0.tgz",
"_shasum": "f88ae3d4bddac6f479137d4c867489acf3f57b66",
"_spec": "telegraf@3.37.0",
"_resolved": "https://registry.npmjs.org/telegraf/-/telegraf-3.38.0.tgz",
"_shasum": "745b447547a8e6cdb626055e4d616058aaae0759",
"_spec": "telegraf@^3.37.0",
"_where": "C:\\Users\\Luis\\source\\repos\\AAMasters\\TaskServer",
"author": {
"name": "Vitaly Domnikov",
"email": "oss@vitaly.codes"
},
"bin": {
"telegraf": "bin/telegraf"
"telegraf": "./bin/telegraf"
},
"bugs": {
"url": "https://github.com/telegraf/telegraf/issues"
@@ -55,6 +54,7 @@
"eslint-plugin-promise": "^4.0.0",
"eslint-plugin-standard": "^4.0.0",
"husky": "^4.2.0",
"prettier": "^2.0.5",
"typescript": "^3.0.1"
},
"engines": {
@@ -91,5 +91,5 @@
},
"type": "commonjs",
"types": "./typings/index.d.ts",
"version": "3.37.0"
"version": "3.38.0"
}
+1
View File
@@ -213,6 +213,7 @@ module.exports = Object.assign(Telegraf, {
Extra,
Markup,
Router,
Telegraf,
Telegram,
Stage,
BaseScene,