mirror of
https://github.com/LonamiWebs/Telethon.git
synced 2024-11-22 17:36:34 +03:00
Updated README, minor changes and pip ready
The module is now ready to be installed via pip README.md has been updated to reflect these changes Minor changes to the interactive client example Versioning is now done by editting TelegramClient's __version__, rather than looking for the string
This commit is contained in:
parent
6642f73a3d
commit
d8757af5c5
4
MANIFEST.in
Normal file
4
MANIFEST.in
Normal file
|
@ -0,0 +1,4 @@
|
||||||
|
include LICENSE
|
||||||
|
include README.md
|
||||||
|
|
||||||
|
recursive-include telethon *
|
70
README.md
70
README.md
|
@ -4,9 +4,10 @@ The project's **core only** is based on TLSharp, a C# Telegram client implementa
|
||||||
|
|
||||||
# Table of contents
|
# Table of contents
|
||||||
- [Why Telethon?](#why-telethon)
|
- [Why Telethon?](#why-telethon)
|
||||||
- [Requirements](#requirements)
|
- [Obtaining your Telegram `API ID` and `Hash`](#obtaining-your-telegram-api-id-and-hash)
|
||||||
- [Python modules](#python-modules)
|
- [Installing Telethon](#installing-telethon)
|
||||||
- [Obtaining your `API ID` and `Hash`](#obtaining-your-api-id-and-hash)
|
- [Via `pip`](#installing-telethon-via-pip)
|
||||||
|
- [Manually](#installing-telethon-manually)
|
||||||
- [Running Telethon](#running-telethon)
|
- [Running Telethon](#running-telethon)
|
||||||
- [Advanced uses](#advanced-uses)
|
- [Advanced uses](#advanced-uses)
|
||||||
- [Using more than just `TelegramClient`](#using-more-than-just-telegramclient)
|
- [Using more than just `TelegramClient`](#using-more-than-just-telegramclient)
|
||||||
|
@ -31,26 +32,58 @@ Do you want check for new messages at a given time and find relevant ones? Write
|
||||||
Hungry for more API calls which the `TelegramClient` class doesn't _seem_ to have implemented?
|
Hungry for more API calls which the `TelegramClient` class doesn't _seem_ to have implemented?
|
||||||
Please read [this section](#using-more-than-just-telegramclient).
|
Please read [this section](#using-more-than-just-telegramclient).
|
||||||
|
|
||||||
## Requirements
|
## Obtaining your Telegram `API ID` and `Hash`
|
||||||
### Python modules
|
In order to use Telethon, you first need to obtain your very own API ID and Hash:
|
||||||
This project requires the following Python modules, which can be installed by issuing `sudo -H pip3 install <module>` on a
|
|
||||||
Linux terminal:
|
|
||||||
- `pyaes` ([GitHub](https://github.com/ricmoo/pyaes), [package index](https://pypi.python.org/pypi/pyaes))
|
|
||||||
|
|
||||||
### Obtaining your `API ID` and `Hash`
|
|
||||||
1. Follow [this link](https://my.telegram.org) and login with your phone number.
|
1. Follow [this link](https://my.telegram.org) and login with your phone number.
|
||||||
2. Click under `API Development tools`.
|
2. Click under `API Development tools`.
|
||||||
3. A `Create new application` window will appear. Fill in your application details.
|
3. A `Create new application` window will appear. Fill in your application details.
|
||||||
There is no need to enter any `URL`, and only the first two fields (`App title` and `Short name`)
|
There is no need to enter any `URL`, and only the first two fields (`App title` and `Short name`)
|
||||||
can be changed later as long as I'm aware.
|
can be changed later as long as I'm aware.
|
||||||
4. Click on `Create application` at the end. Now that you have the `API ID` and `Hash`,
|
4. Click on `Create application` at the end.
|
||||||
head to `api/` directory and create a copy of the `settings_example` file, naming it `settings` (lowercase!).
|
|
||||||
Then fill the file with the corresponding values (your `api_id`, `api_hash` and phone number in international format).
|
Now that you know your `API ID` and `Hash`, you can continue installing Telethon.
|
||||||
|
|
||||||
|
## Installing Telethon
|
||||||
|
### Installing Telethon via `pip`
|
||||||
|
On a terminal, issue the following command:
|
||||||
|
```sh
|
||||||
|
sudo -H pip install telethon
|
||||||
|
```
|
||||||
|
|
||||||
|
You're ready to go.
|
||||||
|
|
||||||
|
### Installing Telethon manually
|
||||||
|
1. Install the required `pyaes` module: `sudo -H pip install pyaes`
|
||||||
|
([GitHub](https://github.com/ricmoo/pyaes), [package index](https://pypi.python.org/pypi/pyaes))
|
||||||
|
2. Clone Telethon's GitHub repository: `git clone https://github.com/LonamiWebs/Telethon.git`
|
||||||
|
3. Enter the cloned repository: `cd Telethon`
|
||||||
|
4. Run the code generator: `python3 telethon_generator/tl_generator.py`
|
||||||
|
5. Done!
|
||||||
|
|
||||||
## Running Telethon
|
## Running Telethon
|
||||||
First of all, you need to run the `tl_generator.py` (located under `telethon-generator/`) by issuing
|
If you've installed Telethon via pip, launch an interactive python3 session and enter the following:
|
||||||
`python3 tl_generator.py`. This will generate all the TLObjects from the given `scheme.tl` file.
|
```python
|
||||||
When it's done, you can run `python3 try_telethon.py` to start the interactive example.
|
>>> from telethon import InteractiveTelegramClient
|
||||||
|
>>> # 'sessionid' can be 'yourname'. It'll be saved as yourname.session
|
||||||
|
>>> # Also (obviously) replace the api_id and api_hash with your values
|
||||||
|
...
|
||||||
|
>>> client = InteractiveTelegramClient('sessionid', '+34600000000',
|
||||||
|
... api_id=12345, api_hash='0123456789abcdef0123456789abcdef')
|
||||||
|
|
||||||
|
┌───────────────────────────────────────────────────────────┐
|
||||||
|
│ Initialization │
|
||||||
|
└───────────────────────────────────────────────────────────┘
|
||||||
|
Initializing interactive example...
|
||||||
|
Connecting to Telegram servers...
|
||||||
|
>>> client.run()
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
If, on the other hand, you've installed Telethon manually, head to the `api/` directory and create a
|
||||||
|
copy of the `settings_example` file, naming it `settings` (lowercase!). Then fill the file with the
|
||||||
|
corresponding values (your `api_id`, `api_hash` and phone number in international format).
|
||||||
|
|
||||||
|
Then, simply run `python3 try_telethon.py` to start the interactive example.
|
||||||
|
|
||||||
## Advanced uses
|
## Advanced uses
|
||||||
### Using more than just `TelegramClient`
|
### Using more than just `TelegramClient`
|
||||||
|
@ -137,8 +170,3 @@ replacing the one you can find in this same directory by the updated one. Don't
|
||||||
afterwards and specifying the new layer number to be used when creating the `TelegramClient`.
|
afterwards and specifying the new layer number to be used when creating the `TelegramClient`.
|
||||||
|
|
||||||
If the changes weren't too big, everything should still work the same way as it did before; but with extra features.
|
If the changes weren't too big, everything should still work the same way as it did before; but with extra features.
|
||||||
|
|
||||||
## Plans for the future
|
|
||||||
If everything works well, this probably ends up being a Python package :)
|
|
||||||
|
|
||||||
But as of now, and until that happens, help is highly appreciated!
|
|
||||||
|
|
88
setup.py
Normal file
88
setup.py
Normal file
|
@ -0,0 +1,88 @@
|
||||||
|
"""A setuptools based setup module.
|
||||||
|
|
||||||
|
See:
|
||||||
|
https://packaging.python.org/en/latest/distributing.html
|
||||||
|
https://github.com/pypa/sampleproject
|
||||||
|
"""
|
||||||
|
|
||||||
|
from telethon import TelegramClient
|
||||||
|
|
||||||
|
# Always prefer setuptools over distutils
|
||||||
|
from setuptools import setup, find_packages
|
||||||
|
# To use a consistent encoding
|
||||||
|
from codecs import open
|
||||||
|
from os import path
|
||||||
|
|
||||||
|
here = path.abspath(path.dirname(__file__))
|
||||||
|
|
||||||
|
# Get the long description from the README file
|
||||||
|
with open(path.join(here, 'README.md'), encoding='utf-8') as f:
|
||||||
|
long_description = f.read()
|
||||||
|
|
||||||
|
setup(
|
||||||
|
name='Telethon',
|
||||||
|
|
||||||
|
# Versions should comply with PEP440.
|
||||||
|
version=TelegramClient.__version__,
|
||||||
|
|
||||||
|
description="Python3 Telegram's client implementation with full access to its API",
|
||||||
|
long_description=long_description,
|
||||||
|
|
||||||
|
# The project's main homepage.
|
||||||
|
url='https://github.com/LonamiWebs/Telethon',
|
||||||
|
download_url='https://github.com/LonamiWebs/Telethon/releases',
|
||||||
|
|
||||||
|
# Author details
|
||||||
|
author='Lonami Exo',
|
||||||
|
author_email='totufals@hotmail.com',
|
||||||
|
|
||||||
|
# Choose your license
|
||||||
|
license='MIT',
|
||||||
|
|
||||||
|
# See https://pypi.python.org/pypi?%3Aaction=list_classifiers
|
||||||
|
classifiers=[
|
||||||
|
# How mature is this project? Common values are
|
||||||
|
# 3 - Alpha
|
||||||
|
# 4 - Beta
|
||||||
|
# 5 - Production/Stable
|
||||||
|
'Development Status :: 3 - Alpha',
|
||||||
|
|
||||||
|
# Indicate who your project is intended for
|
||||||
|
'Intended Audience :: Developers',
|
||||||
|
'Topic :: Communications :: Chat',
|
||||||
|
|
||||||
|
# Pick your license as you wish (should match "license" above)
|
||||||
|
'License :: OSI Approved :: MIT License',
|
||||||
|
|
||||||
|
# Specify the Python versions you support here. In particular, ensure
|
||||||
|
# that you indicate whether you support Python 2, Python 3 or both.
|
||||||
|
'Programming Language :: Python :: 3',
|
||||||
|
'Programming Language :: Python :: 3.3',
|
||||||
|
'Programming Language :: Python :: 3.4',
|
||||||
|
'Programming Language :: Python :: 3.5',
|
||||||
|
],
|
||||||
|
|
||||||
|
# What does your project relate to?
|
||||||
|
keywords='telegram api chat client mtproto',
|
||||||
|
|
||||||
|
# You can just specify the packages manually here if your project is
|
||||||
|
# simple. Or you can use find_packages().
|
||||||
|
packages=find_packages(exclude=[
|
||||||
|
'telethon_generator',
|
||||||
|
'telethon_tests',
|
||||||
|
'run_tests.py',
|
||||||
|
'try_telethon.py']),
|
||||||
|
|
||||||
|
# List run-time dependencies here. These will be installed by pip when
|
||||||
|
# your project is installed.
|
||||||
|
install_requires=['pyaes'],
|
||||||
|
|
||||||
|
# To provide executable scripts, use entry points in preference to the
|
||||||
|
# "scripts" keyword. Entry points provide cross-platform support and allow
|
||||||
|
# pip to create the appropriate form of executable for the target platform.
|
||||||
|
entry_points={
|
||||||
|
'console_scripts': [
|
||||||
|
'gen_tl = tl_generator:clean_and_generate',
|
||||||
|
],
|
||||||
|
}
|
||||||
|
)
|
|
@ -176,7 +176,7 @@ class BadMessageError(Exception):
|
||||||
ErrorMessages = {
|
ErrorMessages = {
|
||||||
16: 'msg_id too low (most likely, client time is wrong it would be worthwhile to '
|
16: 'msg_id too low (most likely, client time is wrong it would be worthwhile to '
|
||||||
'synchronize it using msg_id notifications and re-send the original message '
|
'synchronize it using msg_id notifications and re-send the original message '
|
||||||
'with the “correct” msg_id or wrap it in a container with a new msg_id if the '
|
'with the "correct" msg_id or wrap it in a container with a new msg_id if the '
|
||||||
'original message had waited too long on the client to be transmitted).',
|
'original message had waited too long on the client to be transmitted).',
|
||||||
|
|
||||||
17: 'msg_id too high (similar to the previous case, the client time has to be '
|
17: 'msg_id too high (similar to the previous case, the client time has to be '
|
||||||
|
|
|
@ -211,7 +211,15 @@ class InteractiveTelegramClient(TelegramClient):
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def update_handler(update_object):
|
def update_handler(update_object):
|
||||||
if type(update_object) is UpdateShortMessage:
|
if type(update_object) is UpdateShortMessage:
|
||||||
|
if update_object.out:
|
||||||
|
print('You sent {} to user #{}'.format(update_object.message, update_object.user_id))
|
||||||
|
else:
|
||||||
print('[User #{} sent {}]'.format(update_object.user_id, update_object.message))
|
print('[User #{} sent {}]'.format(update_object.user_id, update_object.message))
|
||||||
|
|
||||||
elif type(update_object) is UpdateShortChatMessage:
|
elif type(update_object) is UpdateShortChatMessage:
|
||||||
print('[Chat #{} sent {}]'.format(update_object.chat_id, update_object.message))
|
if update_object.out:
|
||||||
|
print('You sent {} to chat #{}'.format(update_object.message, update_object.chat_id))
|
||||||
|
else:
|
||||||
|
print('[Chat #{}, user #{} sent {}]'.format(update_object.chat_id,
|
||||||
|
update_object.from_id,
|
||||||
|
update_object.message))
|
||||||
|
|
|
@ -34,6 +34,9 @@ from telethon.tl.all_tlobjects import layer
|
||||||
|
|
||||||
class TelegramClient:
|
class TelegramClient:
|
||||||
|
|
||||||
|
# Current TelegramClient version
|
||||||
|
__version__ = '0.5'
|
||||||
|
|
||||||
# region Initialization
|
# region Initialization
|
||||||
|
|
||||||
def __init__(self, session_user_id, api_id, api_hash):
|
def __init__(self, session_user_id, api_id, api_hash):
|
||||||
|
@ -73,7 +76,7 @@ class TelegramClient:
|
||||||
query = InitConnectionRequest(api_id=self.api_id,
|
query = InitConnectionRequest(api_id=self.api_id,
|
||||||
device_model=platform.node(),
|
device_model=platform.node(),
|
||||||
system_version=platform.system(),
|
system_version=platform.system(),
|
||||||
app_version='0.4',
|
app_version=self.__version__,
|
||||||
lang_code='en',
|
lang_code='en',
|
||||||
query=GetConfigRequest())
|
query=GetConfigRequest())
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user