Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

If bot is blocked by user infinite app crash and flood happens #65

Closed
2naive opened this issue Aug 30, 2021 · 9 comments
Closed

If bot is blocked by user infinite app crash and flood happens #65

2naive opened this issue Aug 30, 2021 · 9 comments
Labels

Comments

@2naive
Copy link

2naive commented Aug 30, 2021

Describe the bug
Bad error and reptry handling.

greensms_bot    | Failed to process updates. Error: Telegraf: "reply" isn't available for "undefined::"
greensms_bot    |     at TelegrafContext.assert (/bot/node_modules/telegraf/context.js:172:13)
greensms_bot    |     at TelegrafContext.reply (/bot/node_modules/telegraf/context.js:314:10)
greensms_bot    |     at Telegraf.handleError (/bot/build/src/index.js:81:60)
greensms_bot    |     at /bot/node_modules/telegraf/telegraf.js:171:55
greensms_bot    |     at processTicksAndRejections (node:internal/process/task_queues:94:5)
greensms_bot    |     at async Promise.all (index 0)
greensms_bot exited with code 0

To Reproduce
Steps to reproduce the behavior:

  1. Start new question as user
  2. Click on Delete and leave
  3. Answer on question in Support group
  4. You will see endless "Message sent to user" attempts.
  5. If you click Start as user again you will get endless messages too
    ! No messages from Telegrams getUpdates queue will be flushed, so they will be received again and again.

Expected behavior

  1. Error on reply
  2. No flood
  3. getUpdates flushes
  4. Correct error handling

Screenshots

image
image

@2naive 2naive added the bug label Aug 30, 2021
@2naive
Copy link
Author

2naive commented Aug 30, 2021

Seems like similar to #55 will try to update to 2.0.1

@2naive
Copy link
Author

2naive commented Aug 31, 2021

Pulled v.2.0.1 got:

greensms_bot    | > tsc && node ./build/src/index.js
greensms_bot    |
greensms_bot    | src/files.ts(73,37): error TS2339: Property 'ticketClosedError' does not exist on type '{ startCommandText: string; faqCommandText: string; helpCommandText: string; contactMessage: string; blockedSpam: string; ticket: string; closed: string; acceptedBy: string; dear: string; regards: string; ... 21 more ...; textFirst: string; }'.
greensms_bot    | src/files.ts(187,38): error TS2339: Property 'file_sent' does not exist on type '{ startCommandText: string; faqCommandText: string; helpCommandText: string; contactMessage: string; blockedSpam: string; ticket: string; closed: string; acceptedBy: string; dear: string; regards: string; ... 21 more ...; textFirst: string; }'.
greensms_bot    | src/staff.ts(102,35): error TS2339: Property 'ticketClosedError' does not exist on type '{ startCommandText: string; faqCommandText: string; helpCommandText: string; contactMessage: string; blockedSpam: string; ticket: string; closed: string; acceptedBy: string; dear: string; regards: string; ... 21 more ...; textFirst: string; }'.
greensms_bot    | src/users.ts(4,21): error TS2307: Cannot find module '../config/strings' or its corresponding type declarations.
greensms_bot    | src/users.ts(41,28): error TS2339: Property 'automatedReplyAuthor' does not exist on type '{ startCommandText: string; faqCommandText: string; helpCommandText: string; contactMessage: string; blockedSpam: string; ticket: string; closed: string; acceptedBy: string; dear: string; regards: string; ... 21 more ...; textFirst: string; }'.
greensms_bot    | src/users.ts(42,31): error TS2339: Property 'automatedReply' does not exist on type '{ startCommandText: string; faqCommandText: string; helpCommandText: string; contactMessage: string; blockedSpam: string; ticket: string; closed: string; acceptedBy: string; dear: string; regards: string; ... 21 more ...; textFirst: string; }'.
greensms_bot    | src/users.ts(64,61): error TS2339: Property 'automatedReplySent' does not exist on type '{ startCommandText: string; faqCommandText: string; helpCommandText: string; contactMessage: string; blockedSpam: string; ticket: string; closed: string; acceptedBy: string; dear: string; regards: string; ... 21 more ...; textFirst: string; }'.
greensms_bot    | src/users.ts(79,52): error TS2339: Property 'anonymous_tickets' does not exist on type '{ bot_token: string; staffchat_id: string; owner_id: string; spam_time: number; allow_private: boolean; auto_close_tickets: boolean; direct_reply: boolean; language: { startCommandText: string; ... 30 more ...; textFirst: string; }; categories: any[]; }'.
greensms_bot    | src/users.ts(89,54): error TS2339: Property 'anonymous_tickets' does not exist on type '{ bot_token: string; staffchat_id: string; owner_id: string; spam_time: number; allow_private: boolean; auto_close_tickets: boolean; direct_reply: boolean; language: { startCommandText: string; ... 30 more ...; textFirst: string; }; categories: any[]; }'.
greensms_bot    | src/users.ts(121,52): error TS2339: Property 'anonymous_tickets' does not exist on type '{ bot_token: string; staffchat_id: string; owner_id: string; spam_time: number; allow_private: boolean; auto_close_tickets: boolean; direct_reply: boolean; language: { startCommandText: string; ... 30 more ...; textFirst: string; }; categories: any[]; }'.
greensms_bot    | src/users.ts(128,54): error TS2339: Property 'anonymous_tickets' does not exist on type '{ bot_token: string; staffchat_id: string; owner_id: string; spam_time: number; allow_private: boolean; auto_close_tickets: boolean; direct_reply: boolean; language: { startCommandText: string; ... 30 more ...; textFirst: string; }; categories: any[]; }'.
greensms_bot    | src/users.ts(140,58): error TS2339: Property 'anonymous_tickets' does not exist on type '{ bot_token: string; staffchat_id: string; owner_id: string; spam_time: number; allow_private: boolean; auto_close_tickets: boolean; direct_reply: boolean; language: { startCommandText: string; ... 30 more ...; textFirst: string; }; categories: any[]; }'.
greensms_bot exited with code 2

@2naive
Copy link
Author

2naive commented Aug 31, 2021

So I've added to my config:
ff4e7aa#diff-d990ad9fdfa84f27dc96442dd51582523343bd58fd44052c04d016926b248ba7L46
381c155#diff-d990ad9fdfa84f27dc96442dd51582523343bd58fd44052c04d016926b248ba7L44
94de33a#diff-d990ad9fdfa84f27dc96442dd51582523343bd58fd44052c04d016926b248ba7L25
d9a41e4#diff-d990ad9fdfa84f27dc96442dd51582523343bd58fd44052c04d016926b248ba7R10

-- missing lines and

ff4e7aa#diff-433b0f9eaf8520c5f8a1595f1572c062086d52740d3ab5554e52c653dabd5c07R1

--config/strings file, that were added from v.2.0.0 but @bostrot I suppose App shouldn't crash if some if config lines are absent.

You broke backward compatibility with patch version v2.0.0->v.2.0.1. That shoud be treated as v3.0.0 in that case.

Or better to remove depencies from unneeded/unsused config lines.

@2naive
Copy link
Author

2naive commented Aug 31, 2021

And still after all magic I got:

Building greensms_bot
Step 1/5 : FROM node:latest
 ---> d2850632b602
Step 2/5 : RUN apt-get update &&     apt-get upgrade -y &&     apt-get install -y wget
 ---> Using cache
 ---> a9f79549ca23
Step 3/5 : COPY . /bot
 ---> Using cache
 ---> fc2c1a8b8152
Step 4/5 : RUN cd bot/ &&     npm i
 ---> Using cache
 ---> 675f54e2c7e3
Step 5/5 : CMD ["npm", "run", "prod", "--prefix", "/bot"]
 ---> Using cache
 ---> b1db6124705f
Successfully built b1db6124705f
Successfully tagged greensms_greensms_bot:latest
Creating network "greensms_default" with the default driver
Creating greensms_bot ...
Creating greensms_bot ... done
Attaching to greensms_bot
greensms_bot    |
greensms_bot    | > telegram-support-bot@2.0.0 prod
greensms_bot    | > tsc && node ./build/src/index.js
greensms_bot    |
greensms_bot    | /bot/node_modules/bindings/bindings.js:121
greensms_bot    |         throw e;
greensms_bot    |         ^
greensms_bot    |
greensms_bot    | Error: The module '/bot/node_modules/better-sqlite3/build/Release/better_sqlite3.node'
greensms_bot    | was compiled against a different Node.js version using
greensms_bot    | NODE_MODULE_VERSION 83. This version of Node.js requires
greensms_bot    | NODE_MODULE_VERSION 88. Please try re-compiling or re-installing
greensms_bot    | the module (for instance, using `npm rebuild` or `npm install`).
greensms_bot    |     at Object.Module._extensions..node (node:internal/modules/cjs/loader:1151:18)
greensms_bot    |     at Module.load (node:internal/modules/cjs/loader:972:32)
greensms_bot    |     at Function.Module._load (node:internal/modules/cjs/loader:813:14)
greensms_bot    |     at Module.require (node:internal/modules/cjs/loader:996:19)
greensms_bot    |     at require (node:internal/modules/cjs/helpers:92:18)
greensms_bot    |     at bindings (/bot/node_modules/bindings/bindings.js:112:48)
greensms_bot    |     at Object.<anonymous> (/bot/node_modules/better-sqlite3/lib/database.js:9:24)
greensms_bot    |     at Module._compile (node:internal/modules/cjs/loader:1092:14)
greensms_bot    |     at Object.Module._extensions..js (node:internal/modules/cjs/loader:1121:10)
greensms_bot    |     at Module.load (node:internal/modules/cjs/loader:972:32) {
greensms_bot    |   code: 'ERR_DLOPEN_FAILED'
greensms_bot    | }
greensms_bot    | npm notice
greensms_bot    | npm notice New minor version of npm available! 7.7.6 -> 7.21.1
greensms_bot    | npm notice Changelog: <https://github.com/npm/cli/releases/tag/v7.21.1>
greensms_bot    | npm notice Run `npm install -g npm@7.21.1` to update!
greensms_bot    | npm notice
greensms_bot exited with code 1

@2naive
Copy link
Author

2naive commented Aug 31, 2021

And tsc shows:

/telegram-support-bot# tsc
node_modules/@types/node/assert.d.ts(3,68): error TS1144: '{' or ';' expected.
node_modules/@types/node/assert.d.ts(57,68): error TS1144: '{' or ';' expected.
node_modules/@types/node/assert.d.ts(66,94): error TS1144: '{' or ';' expected.
node_modules/@types/node/assert.d.ts(66,101): error TS1005: ';' expected.
node_modules/@types/node/assert.d.ts(66,104): error TS1005: ';' expected.
node_modules/@types/node/assert.d.ts(68,98): error TS1144: '{' or ';' expected.
node_modules/@types/node/assert.d.ts(68,105): error TS1005: ';' expected.
node_modules/@types/node/assert.d.ts(68,108): error TS1005: ';' expected.
node_modules/@types/node/assert.d.ts(76,47): error TS1144: '{' or ';' expected.
node_modules/@types/node/assert.d.ts(76,53): error TS1005: ';' expected.
node_modules/@types/node/assert.d.ts(76,56): error TS1005: ';' expected.
node_modules/@types/node/assert.d.ts(106,61): error TS1005: ';' expected.
node_modules/@types/node/base.d.ts(10,1): error TS1084: Invalid 'reference' directive syntax.
node_modules/@types/node/base.d.ts(11,1): error TS1084: Invalid 'reference' directive syntax.
node_modules/@types/node/base.d.ts(12,1): error TS1084: Invalid 'reference' directive syntax.
node_modules/@types/node/base.d.ts(13,1): error TS1084: Invalid 'reference' directive syntax.
node_modules/@types/node/ts3.4/base.d.ts(10,1): error TS1084: Invalid 'reference' directive syntax.
node_modules/@types/node/ts3.4/base.d.ts(11,1): error TS1084: Invalid 'reference' directive syntax.
node_modules/@types/node/ts3.4/base.d.ts(12,1): error TS1084: Invalid 'reference' directive syntax.
node_modules/@types/node/ts3.4/base.d.ts(13,1): error TS1084: Invalid 'reference' directive syntax.
node_modules/@types/node/ts3.6/base.d.ts(10,1): error TS1084: Invalid 'reference' directive syntax.
node_modules/@types/node/ts3.6/base.d.ts(11,1): error TS1084: Invalid 'reference' directive syntax.
node_modules/@types/node/ts3.6/base.d.ts(12,1): error TS1084: Invalid 'reference' directive syntax.
node_modules/@types/node/ts3.6/base.d.ts(13,1): error TS1084: Invalid 'reference' directive syntax.
node_modules/@types/node/util.d.ts(144,24): error TS1144: '{' or ';' expected.
node_modules/@types/node/util.d.ts(145,13): error TS1005: '(' expected.
node_modules/@types/node/util.d.ts(145,23): error TS1005: ',' expected.
node_modules/@types/node/util.d.ts(148,13): error TS1005: '(' expected.
node_modules/@types/node/util.d.ts(148,28): error TS1005: '(' expected.
node_modules/@types/node/util.d.ts(158,24): error TS1144: '{' or ';' expected.
node_modules/@types/node/util.d.ts(159,13): error TS1005: '(' expected.
node_modules/@types/node/util.d.ts(159,23): error TS1005: ',' expected.
node_modules/@types/node/util.d.ts(162,13): error TS1005: '(' expected.
node_modules/@types/node/util.d.ts(162,23): error TS1005: '(' expected.

@bostrot
Copy link
Owner

bostrot commented Aug 31, 2021

Or better to remove depencies from unneeded/unsused config lines.

I agree.

About the docker error:

Seems like there is a Node version mismatch. Can you try using Node v14 for the docker image while building?

Also the latest image should be up on docker hub so try using that and see if that works (bostrot/telegram-support-bot:latest).

@bostrot
Copy link
Owner

bostrot commented Sep 3, 2021

Closing as it seems it was fixed by that.

@bostrot bostrot closed this as completed Sep 3, 2021
@2naive
Copy link
Author

2naive commented Sep 3, 2021

Finally got it working on Node v14.17.5.

But still:

Better to remove depencies from unneeded/unsused config lines.

@bostrot
Copy link
Owner

bostrot commented Sep 3, 2021

Finally got it working on Node v14.17.5.

Can't reproduce that it doesn't work on Node v10 v12. What specific version did you use?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants