Ошибка с 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)