From e1e2ba36df24179b876ed66d7866e939ba945013 Mon Sep 17 00:00:00 2001 From: Leonardo Cabeza Date: Wed, 12 Jun 2019 00:55:54 -0500 Subject: [PATCH 1/2] =?UTF-8?q?(Arreglado)=20Mensaje=20de=20despedida=20y?= =?UTF-8?q?=20reenv=C3=ADo=20enlaces?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 7 +++++ src/index.js | 3 ++ src/listen-commands/admin/index.js | 31 ++++++++++++++----- .../development-tools/index.js | 8 +++-- src/listen-commands/github/index.js | 6 ++-- src/listen-commands/greetings/index.js | 29 ++++++----------- 6 files changed, 50 insertions(+), 34 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 677ba0c..6c091d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ ## [Unreleased] +## 4.2.0 (2019-06-12) + +### Arreglado + +- Mensaje de despedida a usuario cuando deja el grupo solo funcionaba en grupo de admins +- Reenvío de enlaces al grupo de admins que eran compartidos en el mismo grupo no debían enviarse + ## 4.1.1 (2019-06-11) ### Actualizado diff --git a/src/index.js b/src/index.js index b2698e7..e5a987b 100644 --- a/src/index.js +++ b/src/index.js @@ -65,5 +65,8 @@ process.on('SIGUSR2', () => { }); process.on('uncaughtException', error => { + if (NODE_ENV === 'development') { + console.log('error: ', error); + } Sentry.captureException(error); }); diff --git a/src/listen-commands/admin/index.js b/src/listen-commands/admin/index.js index dfd2ab6..f02aa67 100644 --- a/src/listen-commands/admin/index.js +++ b/src/listen-commands/admin/index.js @@ -1,15 +1,29 @@ -const { whiteListedDomains, adminGroupId } = require('config/telegram'); +const { + whiteListedDomains, + mainGroupId, + adminGroupId, +} = require('config/telegram'); const { forwardMessage } = require('bot-api-overrides'); -const verifyUrls = async (bot, msg) => { - const chatId = msg.chat.id; - const chatInfo = await bot.getChat(chatId); +const chatType = async (bot, msg) => { const { - type, - all_members_are_administrators: allMembersAreAdministrators, - } = chatInfo; + chat: { id }, + } = msg; + const { id: chatId } = await bot.getChat(id); + + if (chatId.toString() === mainGroupId) { + return 'main'; + } else if (chatId.toString() === adminGroupId) { + return 'admin'; + } + + return 'private'; +}; + +const verifyUrls = async (bot, msg) => { + const type = await chatType(bot, msg); - if (['group', 'supergroup'].includes(type) && !allMembersAreAdministrators) { + if (type === 'main') { const urlEntities = msg.entities ? msg.entities.filter(entity => entity.type === 'url') : []; @@ -34,5 +48,6 @@ const verifyUrls = async (bot, msg) => { }; module.exports = { + chatType, verifyUrls, }; diff --git a/src/listen-commands/development-tools/index.js b/src/listen-commands/development-tools/index.js index 52af912..a506afc 100644 --- a/src/listen-commands/development-tools/index.js +++ b/src/listen-commands/development-tools/index.js @@ -1,14 +1,16 @@ /** - * Send group or supergroup's Id. + * Send main or admin's group id. * This will be used in config/telegram.js * @param {object} bot * @param {object} msg */ const sendGroupId = async (bot, msg) => { - const chatId = msg.chat.id; + const { + chat: { id: chatId }, + } = msg; const chatInfo = await bot.getChat(chatId); - if (chatInfo.type === 'private') { + if (['group', 'supergroup'].includes(chatInfo.type)) { bot.sendMessage( chatId, `Tú variable \`mainGroupId/adminGroupId\` es: ${chatInfo.id}`, diff --git a/src/listen-commands/github/index.js b/src/listen-commands/github/index.js index 2d2d0c9..9fb7de4 100644 --- a/src/listen-commands/github/index.js +++ b/src/listen-commands/github/index.js @@ -3,6 +3,7 @@ const Sentry = require('@sentry/node'); const { gistCreated, gistRecommendation } = require('config/messages'); const { sendMessage } = require('bot-api-overrides'); +const { chatType } = require('listen-commands/admin'); const { GITHUB_ACCESS_TOKEN } = process.env; const MAX_LENGTH_GIST_TEXT = 200; @@ -70,10 +71,9 @@ const sendGist = (bot, msg, text = '') => { * @param {object} msg */ const verifyCode = async (bot, msg) => { - const chatId = msg.chat.id; - const chatInfo = await bot.getChat(chatId); + const type = await chatType(bot, msg); - if (['supergroup', 'group'].includes(chatInfo.type)) { + if (['main', 'admin'].includes(type)) { if (!Object.prototype.hasOwnProperty.call(msg, 'entities')) { return; } diff --git a/src/listen-commands/greetings/index.js b/src/listen-commands/greetings/index.js index 3469063..e606e9f 100644 --- a/src/listen-commands/greetings/index.js +++ b/src/listen-commands/greetings/index.js @@ -1,6 +1,6 @@ const { welcome, goodBye } = require('config/messages'); const { sendMessage } = require('bot-api-overrides'); - +const { chatType } = require('listen-commands/admin'); /** * Returns username or first name of the user * @param {string} firstName @@ -16,13 +16,8 @@ const formatName = (firstName, userName) => * @param {object} msg */ const sayHello = async (bot, msg) => { - const chatId = msg.chat.id; - const chatInfo = await bot.getChat(chatId); - const { - type, - all_members_are_administrators: allMembersAreAdministrators, - } = chatInfo; - if (['supergroup', 'group'].includes(type) && !allMembersAreAdministrators) { + const type = await chatType(bot, msg); + if (type === 'main') { msg.new_chat_members.forEach(({ first_name, username }) => { const message = welcome.replace( '#{name}', @@ -42,19 +37,13 @@ const sayHello = async (bot, msg) => { * @param {object} msg */ const sayGoodbye = async (bot, msg) => { - const chatId = msg.chat.id; - const chatInfo = await bot.getChat(chatId); - const { first_name: firstName, username } = msg.left_chat_member; const { - type, - all_members_are_administrators: allMembersAreAdministrators, - } = chatInfo; - if (['supergroup', 'group'].includes(type) && !allMembersAreAdministrators) { - sendMessage( - bot, - msg.chat.id, - goodBye.replace('#{name}', formatName(firstName, username)) - ); + left_chat_member: { first_name: firstName }, + chat: { id: chatId }, + } = msg; + const type = await chatType(bot, msg); + if (type === 'main') { + sendMessage(bot, chatId, goodBye.replace('#{name}', firstName)); } }; From d52a72160454554dc81cea6d9376044085bd4682 Mon Sep 17 00:00:00 2001 From: Leonardo Cabeza Date: Wed, 12 Jun 2019 23:46:00 -0500 Subject: [PATCH 2/2] (Actualiza) Husky --- package-lock.json | 12 ++++++------ package.json | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9349291..1a2d257 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2239,9 +2239,9 @@ } }, "husky": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/husky/-/husky-2.4.0.tgz", - "integrity": "sha512-3k1wuZU20gFkphNWMjh2ISCFaqfbaLY7R9FST2Mj9HeRhUK9ydj9qQR8qfXlog3EctVGsyeilcZkIT7uBZDDVA==", + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/husky/-/husky-2.4.1.tgz", + "integrity": "sha512-ZRwMWHr7QruR22dQ5l3rEGXQ7rAQYsJYqaeCd+NyOsIFczAtqaApZQP3P4HwLZjCtFbm3SUNYoKuoBXX3AYYfw==", "dev": true, "requires": { "cosmiconfig": "^5.2.0", @@ -3680,9 +3680,9 @@ } }, "resolve": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", - "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz", + "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==", "dev": true, "requires": { "path-parse": "^1.0.6" diff --git a/package.json b/package.json index 7506f82..eb91331 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "node-telegram-bot-api": "^0.30.0" }, "devDependencies": { - "husky": "^2.4.0", + "husky": "^2.4.1", "lint-staged": "^8.2.0", "prettier": "^1.18.2" },