Как выдать пользователю мут на минуту, если он спамит боту в telegram?
📁 функция, python, ошибка, requests
Я сделал своего бота в telegram с довольно простыми функциями. Проблема в том, что буквально один человек может его положить простым спамом одной или несколькими командами, причем ошибку выдает именно TelegramAPI.
Вот ошибка: ERROR - TeleBot: ""A request to the Telegram API was unsuccessful. Error code: 429 Description: Too Many Requests: retry after 13""
Я бы хотел, чтобы пользователь, который, допустим, отправил 10 сообщений за короткий промежуток получал мут на минуту и сообщение вроде ""ха-ха попался спамер"".
Бот написан на python с использованием telebot (или же pyTelegramBotAPI), а запускается все это дело на heroku.
Можешь добавить подключение к API к телеграмму в функцию, если ошибка в подключении - опять вызываешь эту функцию
def api(): try: m = 'Здесь оставшийся бота' except: api()api()Если не хочешь сделать так, то придётся использовать базу данных - хранить переменные. В этом поможет или import json или import sqlite3. Если не хочешь хранить переменные в базе, то храни их в самом питоне используя словарь питона (dict). p.s В любом случае, тебе нужно import time. При обработке сообщения пользователя сначала проверяешь нет ли его в листе, если есть, то пиши pass. mut = {""ID_user_1"": {""msg"": 0, ""min"": 0},""ID_user_2"":{""msg"": 9, ""min"": 0}} Так как id - особый ключ пользователя, то повторятся он не может, для обращения к пользователю делай mut[f""{ID}""] он постарается найти его в списке.
try: mut[f""{ID}""]#Выполниться без ошибки, если пользователь есть в словареexcept: mut[f""{ID}""] = {""msg"": 0, ""min"": time.time()}#При ошибке зарегистрирует пользователяmsg = количество сообщений обработанных от пользователя min = когда пришло первое сообщение от этого пользователя
Думаю объяснил понятно, проверку на количество сообщений и времени сам сделаешь.
Войдите чтобы оставить ответ