mirror of
https://github.com/eternnoir/pyTelegramBotAPI.git
synced 2023-08-10 21:12:57 +03:00
New antiflood function
This commit is contained in:
parent
d1c26f82aa
commit
558b37b1c3
@ -455,3 +455,25 @@ def webhook_google_functions(bot, request):
|
|||||||
return 'Bot FAIL', 400
|
return 'Bot FAIL', 400
|
||||||
else:
|
else:
|
||||||
return 'Bot ON'
|
return 'Bot ON'
|
||||||
|
|
||||||
|
def antiflood(function, *args, **kwargs):
|
||||||
|
"""
|
||||||
|
Use this function inside loops in order to avoid getting TooManyRequests error.
|
||||||
|
Example:
|
||||||
|
|
||||||
|
from telebot.util import antiflood
|
||||||
|
for chat_id in chat_id_list:
|
||||||
|
msg = antiflood(bot.send_message, chat_id, text)
|
||||||
|
|
||||||
|
You want get the
|
||||||
|
"""
|
||||||
|
from telebot.apihelper import ApiTelegramException
|
||||||
|
from time import sleep
|
||||||
|
try:
|
||||||
|
msg = function(*args, **kwargs)
|
||||||
|
except ApiTelegramException as ex:
|
||||||
|
if ex.error_code == 429:
|
||||||
|
sleep(ex.result_json['parameters']['retry_after'])
|
||||||
|
msg = function(*args, **kwargs)
|
||||||
|
finally:
|
||||||
|
return msg
|
@ -455,6 +455,13 @@ class TestTeleBot:
|
|||||||
new_msg = tb.edit_message_reply_markup(chat_id=CHAT_ID, message_id=ret_msg.message_id, reply_markup=markup)
|
new_msg = tb.edit_message_reply_markup(chat_id=CHAT_ID, message_id=ret_msg.message_id, reply_markup=markup)
|
||||||
assert new_msg.message_id
|
assert new_msg.message_id
|
||||||
|
|
||||||
|
def test_antiflood(self):
|
||||||
|
text = "Flooding"
|
||||||
|
tb = telebot.TeleBot(TOKEN)
|
||||||
|
for _ in range(0,100):
|
||||||
|
util.antiflood(tb.send_message, CHAT_ID, text)
|
||||||
|
assert _
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def create_text_message(text):
|
def create_text_message(text):
|
||||||
params = {'text': text}
|
params = {'text': text}
|
||||||
|
Loading…
Reference in New Issue
Block a user