Skip to main content

Telethon secret chat plugin

Project description

Secret chat plugin for telethon

This is still a work in progress so expect more commits to it. Used https://core.telegram.org/api/end-to-end at first but it wasn’t clear enough so I followed their advice and checked one of the implementations that had it https://github.com/danog/MadelineProto so this pluigin is based on daniil’s implementation at its core.

  • ☒ Accepting secret chats
  • ☒ Creating secret chats
  • ☒ Closing secret chats
  • ☒ Sending text messages
  • ☒ Recieving text messages
  • ☒ Uploading/downloading media
  • ☒ Dealing with rekeying¹
  • ☐ Saving secret chats keys to database²
  • ☐ Saving messages to database³
  • ☒ Automatic decryption/accepting/finishing

¹ Every 100 messages you need to recreate the auth key.

² Auth keys are saved client sides so if you restart the script you will lose all secret chats you had and can no longer recieve messages from them

³ There is no get_messages function in secret chats so users can’t see old messages.

Examples :

client = TelegramClient(...)

async def replier(event):
 # all events are encrypted by default
 if event.decrypted_event.message and event.decrypted_event.message == "hello":
     await event.reply("hi")


 manager = SecretChatManager(client, auto_accept=True)  # automatically accept new secret chats
 manager.add_secret_event_handler(func=replier) # we can specify the type of the event
 client.run_until_disconnected()

To start a secret chat you can call

manager.start_secret_chat(target)

to use sqlite as a storage session you need to pass an sqlite connection to SecretChatManager

manager = SecretChatManager(client,session=db_conn, auto_accept=True)
# you can also pass client.session from telethon as such
manager = SecretChatManager(client,session=client.session, auto_accept=True)

to manually accept incoming you can do as follow

from telethon_secret_chat import SecretChatManager, SECRET_TYPES
manager = SecretChatManager(client, auto_accept=False)
manager.add_secret_event_handler(event_type=SECRET_TYPES.accept,func=accept_secret_chat_handler)

in your handler you can do the following

await manager.accept_secret_chat(event.chat)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for telethon-secret-chat, version 0.2.1
Filename, size File type Python version Upload date Hashes
Filename, size telethon_secret_chat-0.2.1-py3-none-any.whl (24.0 kB) File type Wheel Python version py3 Upload date Hashes View
Filename, size telethon_secret_chat-0.2.1.tar.gz (21.8 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page