I try really hard to understand howto use Telegram api with telethon. I have some Channels in Telegram, where i want to delete older Messages. Using inputpeerchannel() i need channel_id (No Problem) and channel_hash. I cant findout howto get this channel_hash by channel_id. Thank you from germany
Asked
Active
Viewed 1.5k times
6
-
have you found a solution? – flagg19 Jan 07 '18 at 11:53
-
Can anyone share an updated solution please? – Dersu Giritlioğlu Dec 11 '20 at 23:55
3 Answers
11
In order to find channel access_hash
, you should resolve channel username. Original MTProto method contacts.resolveUsername#f93ccba3
gets @username and returns channel info including access_hash
.
In telethon you need to invoke ResolveUsernameRequest to call the above original MTProto method. You may use this code to resolve username to access_hash
:
client = TelegramClient(session_file, api_id=00000, api_hash='XXXXX')
client.connect()
response = client.invoke(ResolveUsernameRequest("your_channel_id"))
print(response.chats[0].access_hash)
client.disconnect()

Ali Hashemi
- 3,158
- 3
- 34
- 48
-
"your_channel_id" is the username or the channel_id? it does not work for me with the channel_id, it works with the username but I only have the channel_id – flagg19 Jan 07 '18 at 11:38
-
"your_channel_id" is a string and it's the username. You can't access a channel only by `channel_id`. You need `access_hash` too. – Ali Hashemi Jan 08 '18 at 10:16
-
1
1
There are 4 ways to get access hash:
- From a Group
- From username
- From contact list
- From chats message
So, if you have id only, there is no way to get access hash

Stephen Ostermiller
- 23,933
- 14
- 88
- 109

Huy
- 426
- 5
- 12
-
5
-
You need to use the method provide by telegram, after that you get an object containing information about ID, Access_Hash, Name,... – Huy Feb 21 '22 at 11:26
0
Here is the updated code. replace appid, apphash and username
with TelegramClient('session.session', <app-id>,<app-hash>') as client:
result = client(functions.contacts.ResolveUsernameRequest(
username=<username>
))
print(result.stringify())

Rajathithan Rajasekar
- 400
- 5
- 12