Skip to main content

Telethon secret chat plugin

Project description

Secret chat plugin for telethon, available on PyPi.

This is still a work in progress so expect more commits to it. Originally based on the End-to-End Encryption, Secret Chats document, but it wasn’t clear enough so I followed their advice and checked one of the implementations that had it (MadelineProto). Therefore, this plugin is based on Daniil’s implementation at its core.

Features

  • ☒ Accepting secret chats

  • ☒ Creating secret chats

  • ☒ Closing secret chats

  • ☒ Sending text messages

  • ☒ Recieving text messages

  • ☒ Uploading/downloading media

  • ☒ Dealing with rekeying [1]

  • ☒ Saving secret chats keys to database [2]

  • ☐ Saving messages to database [3]

  • ☒ Automatic decryption/accepting/finishing

  • ☐ Compatibility with tdlib [4]

Installation

Easiest way is to install it through pip

pip install telethon-secret-chat~=0.2

Example

from telethon import TelegramClient
from telethon_secret_chat import SecretChatManager

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**") # parse_mode is markdown by default


async def new_chat(chat, created_by_me):
    if created_by_me:
        print("User {} has accepted our secret chat request".format(chat))
    else:
        print("We have accepted the secret chat request of {}".format(chat))


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

with client:
    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.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

telethon_secret_chat-0.2.4-py3-none-any.whl (24.6 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page