Ошибка с telethon

Мой код:

import time
from telethon import TelegramClient
from telethon.tl.functions.photos import UploadProfilePhotoRequest, DeletePhotosRequest
from datetime import datetime, timedelta
import argparse
import pytz
from telethon.tl.functions.account import UpdateProfileRequest
import sys
api_id = 
api_hash = 
def valid_tz(s):
    try:
        return pytz.timezone(s)
    except:
        msg = "Not a valid tz: '{0}'.".format(s)
        raise argparse.ArgumentTypeError(msg)

parser = argparse.ArgumentParser()
parser.add_argument("--api_id", required=False, help="user api ID", type=str, default=api_id)
parser.add_argument("--api_hash", required=False, help="user api Hash", type=str, default=api_hash)
parser.add_argument("--tz", required=False,  help="user api Hash", type=valid_tz, default=valid_tz('Asia/Tashkent'))

args = parser.parse_args()

client = TelegramClient("cargfpediem", args.api_id, args.api_hash)
client.start()
async def main():
    while True:
        await client(UpdateProfileRequest(about='After all, we are forbidden rb 18'))
        await client(UploadProfilePhotoRequest(
            await client.upload_file("123.jpg")
        ))   
        time.sleep(30)
        await client(UpdateProfileRequest(about='El Plan of Kuts Matthew'))
        await client(UploadProfilePhotoRequest(
            await client.upload_file("1234.jpg")
        ))
        time.sleep(30)
        await client(UpdateProfileRequest(about='Ведь мы запрещенная rb18'))
        await client(UploadProfilePhotoRequest(
            await client.upload_file("12345.jpg")
        ))
        time.sleep(30)
        await client(UpdateProfileRequest(about='Ukrainian kart racer?'))
        await client(UploadProfilePhotoRequest(
            await client.upload_file("123456.jpg")
        ))
        time.sleep(35)
        await client(DeletePhotosRequest(await client.get_profile_photos('me')))  
            

if __name__ == '__main__':
    import asyncio
    asyncio.get_event_loop().run_until_complete(main())

Мне нужна смена аватарки каждые 10 секунд, а если ставить меньше 30 - ошибка telethon.errors.rpcerrorlist.FloodWaitError:, можно ли это исправить?


Ответы (1 шт):

Автор решения: gil9red

Исправить нельзя, ошибка FloodWaitError сообщает, что превышен предел частоты отправки запроса:

FloodWaitError (420), the same request was repeated many times. Must wait .seconds (you can access this attribute).

С своей стороны вы можете обработать ошибку и ввести задержку, пример из документации:

...
from telethon import errors

try:
    messages = await client.get_messages(chat)
    print(messages[0].text)
except errors.FloodWaitError as e:
    print('Have to sleep', e.seconds, 'seconds')
    time.sleep(e.seconds)
→ Ссылка