From 413dc62d4c99ce850379ca7f3942538949ccb657 Mon Sep 17 00:00:00 2001 From: tiennm99 Date: Sat, 9 May 2026 22:37:02 +0700 Subject: [PATCH] refactor: remove redundant inner try/catch in commands MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The dispatcher already wraps every handler in try/catch and sends the 'Internal server error' fallback on failure. Each command's inner try/catch around its Redis ops was masking that path — the dispatcher never saw the error, so logger.error('command failed') never fired. Removing the inner catches restores observability and shortens each file. The semantically-different try/catch blocks (mapping upstream API failures to a different user message) are kept. --- src/bot/commands/add-apple-app.js | 20 ++++++++----------- src/bot/commands/add-google-app.js | 20 ++++++++----------- src/bot/commands/add-group.js | 16 ++++++--------- src/bot/commands/check-app-scores.js | 24 ++++++++++------------- src/bot/commands/check-app.js | 28 ++++++++++++--------------- src/bot/commands/delete-apple-app.js | 14 +++++--------- src/bot/commands/delete-google-app.js | 14 +++++--------- src/bot/commands/delete-group.js | 14 +++++--------- src/bot/commands/list-app.js | 18 +++++++---------- src/bot/commands/list-group.js | 18 +++++++---------- 10 files changed, 73 insertions(+), 113 deletions(-) diff --git a/src/bot/commands/add-apple-app.js b/src/bot/commands/add-apple-app.js index 7d649de..fbab3fd 100644 --- a/src/bot/commands/add-apple-app.js +++ b/src/bot/commands/add-apple-app.js @@ -28,18 +28,14 @@ export function createAddAppleAppCommand(store, appleScraper) { return; } - try { - const added = await store.group.addAppleApp(msg.chat.id, resp.appId, country); - if (!added) { - await sender.sendMessage(msg.chat.id, `Apple app ${resp.appId} is already added`); - return; - } - await sender.sendMessage( - msg.chat.id, - `Apple app ${resp.appId}, country ${country} added successfully`, - ); - } catch { - await sender.sendMessage(msg.chat.id, 'Internal server error'); + const added = await store.group.addAppleApp(msg.chat.id, resp.appId, country); + if (!added) { + await sender.sendMessage(msg.chat.id, `Apple app ${resp.appId} is already added`); + return; } + await sender.sendMessage( + msg.chat.id, + `Apple app ${resp.appId}, country ${country} added successfully`, + ); }; } diff --git a/src/bot/commands/add-google-app.js b/src/bot/commands/add-google-app.js index b9bcc52..6ddd22d 100644 --- a/src/bot/commands/add-google-app.js +++ b/src/bot/commands/add-google-app.js @@ -23,18 +23,14 @@ export function createAddGoogleAppCommand(store, googleScraper) { return; } - try { - const added = await store.group.addGoogleApp(msg.chat.id, appId, country); - if (!added) { - await sender.sendMessage(msg.chat.id, `Google app ${appId} is already added`); - return; - } - await sender.sendMessage( - msg.chat.id, - `Google app ${appId}, country ${country} added successfully`, - ); - } catch { - await sender.sendMessage(msg.chat.id, 'Internal server error'); + const added = await store.group.addGoogleApp(msg.chat.id, appId, country); + if (!added) { + await sender.sendMessage(msg.chat.id, `Google app ${appId} is already added`); + return; } + await sender.sendMessage( + msg.chat.id, + `Google app ${appId}, country ${country} added successfully`, + ); }; } diff --git a/src/bot/commands/add-group.js b/src/bot/commands/add-group.js index e692a77..1d3804a 100644 --- a/src/bot/commands/add-group.js +++ b/src/bot/commands/add-group.js @@ -17,16 +17,12 @@ export function createAddGroupCommand(config, store) { } groupId = parsed; } - try { - const added = await store.admin.addGroup(groupId); - if (!added) { - await sender.sendMessage(msg.chat.id, 'Group is already added'); - return; - } - await store.group.initGroup(groupId); - await sender.sendMessage(msg.chat.id, 'Group added successfully'); - } catch { - await sender.sendMessage(msg.chat.id, 'Internal server error'); + const added = await store.admin.addGroup(groupId); + if (!added) { + await sender.sendMessage(msg.chat.id, 'Group is already added'); + return; } + await store.group.initGroup(groupId); + await sender.sendMessage(msg.chat.id, 'Group added successfully'); }; } diff --git a/src/bot/commands/check-app-scores.js b/src/bot/commands/check-app-scores.js index 9162d9e..d2469e7 100644 --- a/src/bot/commands/check-app-scores.js +++ b/src/bot/commands/check-app-scores.js @@ -9,21 +9,17 @@ export function createCheckAppScoresCommand(store, appleScraper, googleScraper) await sender.sendMessage(msg.chat.id, 'Invalid arguments'); return; } - try { - const group = await store.group.getGroup(msg.chat.id); - const headers = ['AppId', 'Score', 'Ratings']; - const appleRows = await scoreRowsFor(group.appleApps, appleScraper); - const googleRows = await scoreRowsFor(group.googleApps, googleScraper); + const group = await store.group.getGroup(msg.chat.id); + const headers = ['AppId', 'Score', 'Ratings']; + const appleRows = await scoreRowsFor(group.appleApps, appleScraper); + const googleRows = await scoreRowsFor(group.googleApps, googleScraper); - const out = - 'Apple Apps\n' + - renderTable(appleRows, headers) + - '\nGoogle Apps\n' + - renderTable(googleRows, headers); - await sender.sendMessage(msg.chat.id, out); - } catch { - await sender.sendMessage(msg.chat.id, 'Internal server error'); - } + const out = + 'Apple Apps\n' + + renderTable(appleRows, headers) + + '\nGoogle Apps\n' + + renderTable(googleRows, headers); + await sender.sendMessage(msg.chat.id, out); }; } diff --git a/src/bot/commands/check-app.js b/src/bot/commands/check-app.js index fdb6024..8a7080a 100644 --- a/src/bot/commands/check-app.js +++ b/src/bot/commands/check-app.js @@ -10,24 +10,20 @@ export function createCheckAppCommand(config, store, appleScraper, googleScraper await sender.sendMessage(msg.chat.id, 'Invalid arguments'); return; } - try { - const group = await store.group.getGroup(msg.chat.id); - const nowMs = Date.now(); - const threshold = config.numDaysWarningNotUpdated; - const headers = ['AppId', 'Updated', 'Days', 'OK']; + const group = await store.group.getGroup(msg.chat.id); + const nowMs = Date.now(); + const threshold = config.numDaysWarningNotUpdated; + const headers = ['AppId', 'Updated', 'Days', 'OK']; - const appleRows = await appleRowsFor(group.appleApps, appleScraper, nowMs, threshold, config.timezone); - const googleRows = await googleRowsFor(group.googleApps, googleScraper, nowMs, threshold, config.timezone); + const appleRows = await appleRowsFor(group.appleApps, appleScraper, nowMs, threshold, config.timezone); + const googleRows = await googleRowsFor(group.googleApps, googleScraper, nowMs, threshold, config.timezone); - const out = - 'Apple Apps\n' + - renderTable(appleRows, headers) + - '\nGoogle Apps\n' + - renderTable(googleRows, headers); - await sender.sendMessage(msg.chat.id, out); - } catch { - await sender.sendMessage(msg.chat.id, 'Internal server error'); - } + const out = + 'Apple Apps\n' + + renderTable(appleRows, headers) + + '\nGoogle Apps\n' + + renderTable(googleRows, headers); + await sender.sendMessage(msg.chat.id, out); }; } diff --git a/src/bot/commands/delete-apple-app.js b/src/bot/commands/delete-apple-app.js index 37c8262..4ceead9 100644 --- a/src/bot/commands/delete-apple-app.js +++ b/src/bot/commands/delete-apple-app.js @@ -8,15 +8,11 @@ export function createDeleteAppleAppCommand(store) { await sender.sendMessage(msg.chat.id, 'Invalid arguments'); return; } - try { - const removed = await store.group.removeAppleApp(msg.chat.id, args[0]); - if (!removed) { - await sender.sendMessage(msg.chat.id, 'Apple app is not added'); - return; - } - await sender.sendMessage(msg.chat.id, 'Apple app deleted successfully'); - } catch { - await sender.sendMessage(msg.chat.id, 'Internal server error'); + const removed = await store.group.removeAppleApp(msg.chat.id, args[0]); + if (!removed) { + await sender.sendMessage(msg.chat.id, 'Apple app is not added'); + return; } + await sender.sendMessage(msg.chat.id, 'Apple app deleted successfully'); }; } diff --git a/src/bot/commands/delete-google-app.js b/src/bot/commands/delete-google-app.js index 32537fa..fef6c65 100644 --- a/src/bot/commands/delete-google-app.js +++ b/src/bot/commands/delete-google-app.js @@ -8,15 +8,11 @@ export function createDeleteGoogleAppCommand(store) { await sender.sendMessage(msg.chat.id, 'Invalid arguments'); return; } - try { - const removed = await store.group.removeGoogleApp(msg.chat.id, args[0]); - if (!removed) { - await sender.sendMessage(msg.chat.id, 'Google app is not added'); - return; - } - await sender.sendMessage(msg.chat.id, 'Google app deleted successfully'); - } catch { - await sender.sendMessage(msg.chat.id, 'Internal server error'); + const removed = await store.group.removeGoogleApp(msg.chat.id, args[0]); + if (!removed) { + await sender.sendMessage(msg.chat.id, 'Google app is not added'); + return; } + await sender.sendMessage(msg.chat.id, 'Google app deleted successfully'); }; } diff --git a/src/bot/commands/delete-group.js b/src/bot/commands/delete-group.js index 7e0bfb0..1f41635 100644 --- a/src/bot/commands/delete-group.js +++ b/src/bot/commands/delete-group.js @@ -17,15 +17,11 @@ export function createDeleteGroupCommand(config, store) { } groupId = parsed; } - try { - const removed = await store.admin.removeGroup(groupId); - if (!removed) { - await sender.sendMessage(msg.chat.id, 'Group is not added'); - return; - } - await sender.sendMessage(msg.chat.id, 'Group deleted successfully'); - } catch { - await sender.sendMessage(msg.chat.id, 'Internal server error'); + const removed = await store.admin.removeGroup(groupId); + if (!removed) { + await sender.sendMessage(msg.chat.id, 'Group is not added'); + return; } + await sender.sendMessage(msg.chat.id, 'Group deleted successfully'); }; } diff --git a/src/bot/commands/list-app.js b/src/bot/commands/list-app.js index 40e5671..6016951 100644 --- a/src/bot/commands/list-app.js +++ b/src/bot/commands/list-app.js @@ -9,17 +9,13 @@ export function createListAppCommand(store) { await sender.sendMessage(msg.chat.id, 'Invalid arguments'); return; } - try { - const group = await store.group.getGroup(msg.chat.id); - const out = - 'Apple Apps\n' + - formatAppTable(group.appleApps) + - '\nGoogle Apps\n' + - formatAppTable(group.googleApps); - await sender.sendMessage(msg.chat.id, out); - } catch { - await sender.sendMessage(msg.chat.id, 'Internal server error'); - } + const group = await store.group.getGroup(msg.chat.id); + const out = + 'Apple Apps\n' + + formatAppTable(group.appleApps) + + '\nGoogle Apps\n' + + formatAppTable(group.googleApps); + await sender.sendMessage(msg.chat.id, out); }; } diff --git a/src/bot/commands/list-group.js b/src/bot/commands/list-group.js index 47e134f..07ce676 100644 --- a/src/bot/commands/list-group.js +++ b/src/bot/commands/list-group.js @@ -8,17 +8,13 @@ export function createListGroupCommand(config, store) { await sender.sendMessage(msg.chat.id, 'Invalid arguments'); return; } - try { - const groups = await store.admin.getAllGroups(); - if (groups.length === 0) { - await sender.sendMessage(msg.chat.id, 'No groups found'); - return; - } - const lines = [`Authorized groups (${groups.length}):`]; - groups.forEach((gid, i) => lines.push(`${i + 1}. ${gid}`)); - await sender.sendMessage(msg.chat.id, lines.join('\n') + '\n'); - } catch { - await sender.sendMessage(msg.chat.id, 'Internal server error'); + const groups = await store.admin.getAllGroups(); + if (groups.length === 0) { + await sender.sendMessage(msg.chat.id, 'No groups found'); + return; } + const lines = [`Authorized groups (${groups.length}):`]; + groups.forEach((gid, i) => lines.push(`${i + 1}. ${gid}`)); + await sender.sendMessage(msg.chat.id, lines.join('\n') + '\n'); }; }