Удалить фотографию профиля телеграммы библиотекой телемарафона или любым API

Я не могу удалить фотографию профиля с помощью библиотеки телемарафона или любого другого API

То, что я уже сделал ниже (используя телемарафон), но это не работает

from telethon import TelegramClient, sync
from telethon.tl.functions.photos import DeletePhotosRequest

api_id = "id"
api_hash = "hash"


client = TelegramClient("bot_5", api_id, api_hash)
client.start()

client(DeletePhotosRequest(client.get_profile_photos('me')))

Я ожидал, что этот код удалит мою фотографию профиля

Как я могу удалить его с помощью API?


person George Yashin    schedule 15.10.2019    source источник
comment
Этот код работает правильно. Что не так?   -  person Lonami    schedule 15.10.2019
comment
строка client(DeletePhotosRequest(client.get_profile_photos('me'))) возвращает что-то вроде этого: ‹coroutine object UserMethods.__call__ at some_number› и не меняет фото моего профиля   -  person George Yashin    schedule 16.10.2019
comment
Вы должны убедиться, что вы импортировали telethon.sync в свой сценарий, иначе вы должны await сделать это самостоятельно. Вы уверены, что в реальном коде есть from telethon import sync? Вы можете переписать его как from telethon.sync import TelegramClient, чтобы ничего не удаляло его.   -  person Lonami    schedule 16.10.2019
comment
Да, from telethon.sync import TelegramClient работает. Но что это значит, что вы должны await это?   -  person George Yashin    schedule 19.10.2019
comment
Это означает, что вы должны использовать await перед вызовом. Но в этом нет необходимости, если вы импортировали telethon.sync, если только вы не работаете внутри обработчика событий (который не отображается в вашем коде).   -  person Lonami    schedule 19.10.2019


Ответы (1)


это сработает для вас

from telethon.sync import TelegramClient
from telethon.tl.functions.photos import DeletePhotosRequest
from telethon.tl.types import InputPhoto


with TelegramClient('your session', api_id, api_hash) as client:
    p = client.get_profile_photos('me')[0]
    client(DeletePhotosRequest(
        id=[InputPhoto(
            id=p.id,
            access_hash=p.access_hash,
            file_reference=p.file_reference
        )]
    ))
  • get_profile_photos вернет вам список
person mujad    schedule 26.10.2019
comment
Он показал следующую ошибку: RuntimeError: You must use async with если запущен цикл событий (т.е. вы находитесь внутри асинхронного определения) - person George Yashin; 29.10.2019
comment
нет, я использую оператор with и модуль telethon.sync... скопируйте этот код и запустите его, я тестировал и работал у меня! - person mujad; 30.10.2019