Iterations. How to reduce theys?

All iterations on Bots.Business are paid. You can choose payment plan with different iterations count.

What it is - "iteration"?

Each payment plan has its own iteration limit.

1 iteration it is:

  • income message to bot

  • Bot.runCommandarrow-up-right(command) or Bot.run in the BJS spent 1 iteration

  • Bot.run with run_after spent 2 iterations (1 upon installation and 1 on execution)

  • Pressing the keyboard button

  • Pressing the inline keyboard button

  • 1 Auto Retry - it is 1 iteration

  • 1 received webhook - it is 1 iteration

  • 1 chats in Bot.runAllarrow-up-right command - 1 iteration

  • 1 sended message on mass broadcasting - 1 iteration

  • 5 chats on Information refreshingarrow-up-right (in Bot dashboard) - spend 1 iteration

  • 100 incoming messages in blocked chat with method Bot.blockChat(chat.id)

5 iterations it is:

circle-info

Single command execution - 1 iteration

circle-check

Extra Points

  • If you do not have enough iterations, Extra Points are spent.

  • Unused Extra Points remain for the next month.

  • You can get Extra Points for 💎 BB Points or buy themarrow-up-right.

How to get more iterations?

You can upgrade your Plan, buy Extra Points or order BB Cloud with unlimited iterations.

How to reduce iterations count?

Reduce income messages to bot:

  • remove it from super groups

  • remove un useful commands

Reduce Bot.runCommand in BJS

Reduce Auto Retryarrow-up-right calls

Beware of endless loops

Use Bot.runCommand, Bot.run, Bot.runAll carefully.

Example 1

Bad code example. Command /check

Command /task

So we have now scheduled /task in /check. But /task also have run for /check

You will end up in an infinite loop and your iterations will quickly end

Example 2

Bad code example. Command /check

Command /task

So we have now scheduled /task in /check with delay for 1 hour. But /task also have run for /check

But here we have delay for 1 hour. So we have 1 task per hour (and per user!). Is it good?

No! Because user can run /check command several times. For example 6 times in one minute. You will be have 6 background tasks during 1 hour instead of 1 tasks. Also any users can execute this command for several times.

You will end up in an infinite loop and your iterations will quickly end

triangle-exclamation

Beware of big loops

Very bad example:

Command check:

Command join2

Command check2

and etc!

join1 > check1 > join2 > check2 > .... join10 > check10

What is problem?

  • each Api.getChatMember spent 1 - 3 sec for execution

  • Bot.runCommand run new BJS immediately!

We have 10 join + 10 check. So it will be 10 - 30 secs per 1 message from 1 user.

  • On Nano Cloud second user must wait this 30 secs! Also even Business Cloud is completely down!

  • each Bot.runCommand burn 1 iterations. We have 20 iterations here!

Fix

  • Use MCLib

  • Use Bot.run with run_after. It run task in background (Users don't have to wait)

  • Do not use Bot.run in chain. It is not good.

Last updated