Вот если что-то не ясно помогу.
import time as tm
spams = {}
msgs = 4 # Messages in
max = 5 # Seconds
ban = 300 # Seconds
def is_spam(user_id):
try:
usr = spams[user_id]
usr["messages"] += 1
except:
spams[user_id] = {"next_time": int(tm.time()) + max, "messages": 1, "banned": 0}
usr = spams[user_id]
if usr["banned"] >= int(tm.time()):
return True
else:
if usr["next_time"] >= int(tm.time()):
if usr["messages"] >= msgs:
spams[user_id]["banned"] = tm.time() + ban
# text = """You're banned for {} minutes""".format(ban/60)
# bot.send_message(user_id, text)
# User is banned! alert him...
return True
else:
spams[user_id]["messages"] = 1
spams[user_id]["next_time"] = int(tm.time()) + max
return False