whatsapp-ai-bot icon indicating copy to clipboard operation
whatsapp-ai-bot copied to clipboard

Is it possible to add request limitations

Open Deplyapp opened this issue 1 year ago • 3 comments

The gemini free api Provides can it is possible to add a message limit of 3 mer minute per person.

Deplyapp avatar Feb 08 '24 17:02 Deplyapp

yes, you can if you know how to write code.

this is place from where you can start https://github.com/Zain-ul-din/whatsapp-ai-bot/blob/master/src/models/GeminiModel.ts

Basic Overview:

  • use msg.from to get sender id and then construct map using sender id
  • increment map value each time someone send request
  • allow request only if elapsed time is greater than 1 min or map value is under 3
const useLimitedRequests = (timeInMs, requestAllowed) => {
  const map = {};

  return (sender) => {
    if (map[sender] == undefined) {
      map[sender] = {
        count: 0,
        lastRequestTime: new Date(),
      };
    }
    
    const { count, lastRequestTime } = map[sender];
    const elapsedTime = new Date() - lastRequestTime;

    if (elapsedTime >= timeInMs) {
      map[sender] = { count: 1, lastRequestTime: new Date() };
      return true;
    }

    if (count >= requestAllowed) {
      return false;
    }

    map[sender] = { count: count + 1, lastRequestTime };
    return true;
  };
};


// usage
const isUserAllowed = useLimitedRequests(60000, 3) // 60000ms = 1min

if(!isUserAllowed(msg.from)) return; // quota exceed

from string- ID for the Chat that this message was sent to, except if the message was sent by the current user.

Appendix

Whatspp Js Docs link: https://docs.wwebjs.dev/Message.html

Zain-ul-din avatar Feb 08 '24 20:02 Zain-ul-din

I can paste this code in gemini.ts to get the function

vpsbykaif avatar Feb 09 '24 01:02 vpsbykaif

I added a rate-limiting feature to this branch but it has not been tested yet. check this out

https://github.com/zainuldeen/whatsapp-ai-bot/tree/issue_23

zain-ul-din-zafar avatar Feb 09 '24 06:02 zain-ul-din-zafar