Создал программу, которая генерирует изображение с текущим временем и загружает на аватарку в Telegram, но при запуске выдаёт следующую ошибку:
Traceback (most recent call last):
File "C:\Бот\main.py", line 15, in <module>
client(UploadProfilePhotoRequest(file))
File "D:\Setup\Python\Lib\site-packages\telethon\sync.py", line 39, in syncified
return loop.run_until_complete(coro)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Setup\Python\Lib\asyncio\base_events.py", line 664, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "D:\Setup\Python\Lib\site-packages\telethon\client\users.py", line 30, in __call__
return await self._call(self._sender, request, ordered=ordered)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\Setup\Python\Lib\site-packages\telethon\client\users.py", line 87, in _call
result = await future
^^^^^^^^^^^^
telethon.errors.rpcerrorlist.StickerMimeInvalidError: Make sure to pass a valid image file for the right InputFile parameter (caused by UploadProfilePhotoRequest)
Код самой программы состоит из трёх файлов:
1.config.py
2.generate_time_images.py
3.main.py
config.py
api_id = 'здесь айди'
api_hash = 'здесь хеш'
generate_time_images.py
import time
from PIL import ImageDraw, Image, ImageFont
from datetime import datetime, timedelta
FONT_SIZE = 50
TEXT_Y_POSITION = 1
TEXT_X_POSITION = 1
Tashkent_UTC = 5 #укажите ваш часовой пояс
def convert_time_to_string(dt):
dt += timedelta(hours=Tashkent_UTC)
return f"{dt.hour}:{dt.minute:02}"
def change_img():
start_time = datetime.utcnow()
text = convert_time_to_string(start_time)
row = Image.new('RGBA', (200, 200), "black")# Цвет фона black,white тд
parsed = ImageDraw.Draw(row)
font = ImageFont.truetype("HEADPLANE.ttf", FONT_SIZE)#стиль шрифта
font2 = ImageFont.truetype("HEADPLANE.ttf", 15)
parsed.text((int(row.size[0]*0.23), int(row.size[1]*0.31)), f'{text}',
align="center", font=font, fill=(3,33,212))
parsed.text((45, 110),'Tashkent time', # подтекст
align="center", font=font2, fill=(0,0,255))
row.save(f'time.png', "PNG")
if __name__ == '__main__':
change_img()
main.py
from telethon import TelegramClient, sync
from telethon.tl.functions.photos import UploadProfilePhotoRequest, DeletePhotosRequest
from datetime import datetime
import time
from config import *
from generate_time_images import *
client = TelegramClient('my_session9911', api_id, api_hash)
client.start()
while True:
change_img()
client(DeletePhotosRequest(client.get_profile_photos('me')))
file = client.upload_file(f"time.png")
client(UploadProfilePhotoRequest(file))
time.sleep(30)
if __name__ == '__main__':
pass
Как исправить ошибку?