چگونگی دور زدن محدودیت نرخ API تلگرام
با مجله هشت پیک با مقاله ی چگونگی دور زدن محدودیت نرخ API تلگرام همراه ما باشید
تلگرام در سال 2015 ربات های جدیدی را در API خود معرفی کرد تا به توسعه دهندگان اجازه دهد صفحات فرود را در پیام رسان خود ایجاد کنند، اما این چت بات ها دارای محدودیت نرخ برای ارسال درخواست هستند.
تلگرام محدودیت نرخ API را برای ارسال پیام به کاربران یا گروه ها تعیین کرده است. شما می توانید 1 پیام در ثانیه به چت های فردی، 20 درخواست در ثانیه به گروه ها و کانال ها و تنها 30 پیام در ثانیه برای چندین کاربر ارسال کنید. برای جلوگیری از رسیدن به این حد، اعلانها را در فواصل طولانیتر پخش کنید یا از کد صف در API ربات برای مدیریت درخواستها استفاده کنید.
برای اطلاع شما، ما محدودیت نرخ API تلگرام را بررسی میکنیم تا به شما کمک کنیم بفهمید چگونه درخواستها یا پیامهای خود را به طور مؤثر ارسال کنید تا کاربران بیشتری را برای ربات خود به دست آورید.
محدودیت نرخ ربات تلگرام چقدر است؟
محدودیت نرخ API تلگرام تعداد پیام/درخواستهایی است که میتوانید در هر ثانیه برای کاربران یا گروههای مختلف ارسال کنید. در حالی که محدودیت دقیق ممکن است به نوع درخواست بستگی داشته باشد، لیست کلی در اینجا آمده است:
- چت های فردی: این پلتفرم محدودیت ارسال یک پیام در ثانیه به یک فرد خاص را تعیین کرده است.
- گروه ها و کانال ها: شما مجاز به ارسال بیش از 20 درخواست/پیام در دقیقه به همان گروه نیستید. علاوه بر این، شما فقط می توانید 50 گروه یا کانال در یک روز ایجاد کنید.
- به طور کلی: تلگرام به شما امکان می دهد در هر ثانیه فقط 30 پیام به چندین کاربر ارسال کنید. برای یک حساب، نمی توانید بیش از 10 نام کاربری عمومی داشته باشید،
تلگرام این محدودیتها را برای جلوگیری از هرزنامهها و اجرای روان کارکرد سرویس تعیین کرده است. به خاطر داشته باشید که در صورت تجاوز از این نرخ، کد خطای 429 را دریافت خواهید کرد. این بدان معناست که دیگر اجازه ارسال هیچ درخواستی را نخواهید داشت و ممکن است لازم باشد بعداً دوباره امتحان کنید.
توجه: اگر تلگرام متوجه هرگونه فعالیت اسپم شود، ممکن است حساب شما را برای همیشه مسدود کند.
چگونه از محدودیت نرخ API تلگرام جلوگیری کنم؟
اگر می خواهید از محدودیت نرخ API تلگرام جلوگیری کنید، در اینجا 4 راه برای انجام این کار وجود دارد، بسته به نوع درخواستی که می کنید.
اعلانها را در فواصل طولانیتر پخش کنید
برای ارسال تعداد زیادی درخواست/پیام برای به دست آوردن کاربران بیشتر، سعی کنید آنها را در بازه های زمانی طولانی تری پخش کنید. این می تواند 8 تا 12 ساعت باشد و به شما کمک می کند از محدودیت نرخ API در تلگرام تجاوز نکنید.
برای مثال، میتوانید در هر ثانیه 10 درخواست ارسال کنید، سپس 3 ثانیه قبل از ارسال درخواستهای جدید، به جای 30 درخواست در 1 ثانیه صبر کنید.
توجه: اگر به همان چت یا فردی پیام می فرستید، سعی کنید نرخ خود را به یک پیام در ثانیه محدود کنید.
به این ترتیب، تلگرام هیچ فعالیت اسپم روی سرور خود را شناسایی نمیکند و پیام خطای 429 را دریافت نمیکنید که نشان میدهد به محدودیت نرخ API رسیدهاید.
از Queue برای مدیریت درخواست ها استفاده کنید
راه حل بعدی برای جلوگیری از رسیدن به محدودیت نرخ API تلگرام، استفاده از کد صف در ربات برای به تاخیر انداختن درخواست های خود است. برای این کار کافیست کد زیر را به API خود اضافه کنید:
lock_queue = Queue( 1 ) requests_queue = Queue( 3 ) def api_request (argument): if lock_queue. vala (): try : requests_queue. put_nowait (time.time()) به جز queue.Full: lock_queue. put ( 1 ) first_request_time = requests_queue.get() logger.info( ‘First درخواست زمان: ‘ + str(first_request_time)) current_time = time.time() pass_time = current_time – first_request_time if pass_time >= 1 : requests_queue.put_nowait(time ( ) _ _ _ _ _ _ _ _ _ _ _ _ _ _ = vk_requests_queue.get() logger.info( ‘زمان درخواست اول: ‘ + str(first_request_time)) current_time = time.time() pass_time = current_time – first_request_time if pass_time >= 1 : requests_queue.put_nowait(time.time()) lock_queue.get() else : logger.info(passed_time) time.sleep( 1 – pass_time) requests_queue.put_nowait(time.time()) lock_queue.get() result = make_api_request(argument) # درخواست نیز توسط ماژول خارجی انجام می شود . نتیجه بازگشت |
اگر این کد کمکی نکرد، می توانید این یکی را امتحان کنید:
import redis r_db = redis.Redis(port=port, db=db) def limit_request (request_to_make, limit= 3 , per= 1 , request_name= ‘test' , **kwargs): over_limit_lua_ = ”' local key_name = KEYS[1 ] محدودیت محلی = تعداد (ARGV[1]) مدت زمان محلی = ARGV[2] کلید محلی = نام_کلید .. ‘ _num_of_requests ‘ شمارش محلی = redis.call(‘ INCR ‘، کلید) اگر شماره (شمار) > محدودیت، سپس زمان_لفت محلی = redis.call(‘ PTTL ‘, key) return time_left end redis.call(‘ EXPIRE ‘, key, duration) return -2 “‘ if not hasattr (r_db, ‘over_limit_lua' ): r_db.over_limit_lua = r_db.register_script( over_limit_lua_) request_possibility = int (r_db.over_limit_lua(keys=request_name, args=[limit, per])) if request_possibility > 0 : time.sleep(request_possibility / 1000.0 ) return limit_request( request_to_make_name, limit, perk ) else : request_result = request_to_make(**kwargs) return request_result |
هنگامی که کد را به API ربات تلگرام خود اضافه کردید، درخواست ها را برای کاربران ارسال کنید و ببینید آیا همچنان کد خطا را دریافت می کنید.
قبل از ارسال پیام، تایم اوت ها را تنظیم کنید
همچنین میتوانید برای تأخیر در ارسال پیامها و جلوگیری از تجاوز از حد مجاز، یک بازه زمانی یا تایمر در API ربات تلگرام خود تنظیم کنید. برای این کار کد زیر را اضافه کنید:
const delay = interval => new Promise(resolve => setTimeout(resolve, interval)); const sendMessage = async params => { await delay ( 1000 ); بازگشت axios(params); }; |
همچنین می توانید با این کد یک محدود کننده نرخ درخواست تنظیم کنید:
const RateLimiter = require( ‘request-rate-limiter' ); const limiter = new RateLimiter( 120 ); // 120 درخواست در دقیقه const sendMessage = params => limiter.request(params); sendMessage( ‘/sendMessage?text=hi' ) .then(response => { consol.log( ‘hello!' , answer); }). catch (err => { console.log( ‘oh my' , err); }); |
پس از آن، تأیید کنید که آیا همچنان در هنگام ارسال پیام به کاربران در تلگرام با کد خطای 429 مواجه شدید.
از API سرور خود استفاده کنید
اگر بیش از حد مجاز نرخ API تلگرام هستید، از سرور API خود برای دسترسی به ویژگیها برای ارسال پیامها یا درخواستهای بیشتر استفاده کنید.
برای این کار، گزینه – – local را در ربات API مشخص کنید. این ویژگیهایی را فعال میکند که در https://api.telegram.org در دسترس نیستند، مانند:
- حجم دانلود فایل محدود : ندارد
- محدودیت حجم آپلود فایل: 2000 مگابایت
- URL Webhook: URL HTTP
- مسیر آپلود فایل: طرح محلی و USL
- Webhook IP : هر آدرس IP محلی
- پورت Webhook : هر
- Max_webhook_connections: تا 100000 قابل تنظیم است.
علاوه بر این، مسیر محلی مطلق را مستقیماً در فیلد «file_path» بدون درخواست getFile برای دانلود دریافت میکنید.
نتیجه
در این راهنمای جامع، محدودیت نرخ API تلگرام چیست و چگونه می توانید از دریافت کد خطای 429 آن جلوگیری کنید، بحث کرده ایم.
امیدواریم این مقاله چگونگی دور زدن محدودیت نرخ API تلگرام درک روشنی از محدودیت نرخ در هنگام ارسال درخواست/پیام از طریق رباتهای تلگرام خود را به شما ارائه کرده باشد.
لینک کوتاه مقاله : https://5ia.ir/nWALTq
کوتاه کننده لینک
کد QR :
آخرین دیدگاهها