Get rid of signature warnings and use nicer *args instead

This commit is contained in:
Lonami Exo 2017-06-08 16:59:47 +02:00
parent b760f0de50
commit cf65e5b1cf
2 changed files with 23 additions and 67 deletions

View File

@ -125,13 +125,20 @@ class TelegramClient(TelegramBareClient):
# region Connecting # region Connecting
def connect(self, a=None, b=None, c=None, d=None): def connect(self, *args):
# TODO Use **kwargs instead 4 dummy parameters """Connects to the Telegram servers, executing authentication if
required. Note that authenticating to the Telegram servers is
not the same as authenticating the desired user itself, which
may require a call (or several) to 'sign_in' for the first time.
*args will be ignored.
"""
return super(TelegramClient, self).connect( return super(TelegramClient, self).connect(
device_model=self.device_model, device_model=self.device_model,
system_version=self.system_version, system_version=self.system_version,
app_version=self.app_version, app_version=self.app_version,
lang_code=self.lang_code) lang_code=self.lang_code
)
def disconnect(self): def disconnect(self):
"""Disconnects from the Telegram server """Disconnects from the Telegram server
@ -146,14 +153,21 @@ class TelegramClient(TelegramBareClient):
self._cached_senders.clear() self._cached_senders.clear()
self._cached_sessions.clear() self._cached_sessions.clear()
def reconnect(self, new_dc=None, a=None, b=None, c=None, d=None): def reconnect(self, new_dc=None, *args):
# TODO Use **kwargs instead 4 dummy parameters """Disconnects and connects again (effectively reconnecting).
If 'new_dc' is not None, the current authorization key is
removed, the DC used is switched, and a new connection is made.
*args will be ignored.
"""
super(TelegramClient, self).reconnect( super(TelegramClient, self).reconnect(
device_model=self.device_model, device_model=self.device_model,
system_version=self.system_version, system_version=self.system_version,
app_version=self.app_version, app_version=self.app_version,
lang_code=self.lang_code, lang_code=self.lang_code,
new_dc=new_dc) new_dc=new_dc
)
# endregion # endregion
@ -227,11 +241,13 @@ class TelegramClient(TelegramBareClient):
# region Telegram requests functions # region Telegram requests functions
def invoke(self, request, timeout=timedelta(seconds=5)): def invoke(self, request, timeout=timedelta(seconds=5), *args):
"""Invokes (sends) a MTProtoRequest and returns (receives) its result. """Invokes (sends) a MTProtoRequest and returns (receives) its result.
An optional timeout can be specified to cancel the operation if no An optional timeout can be specified to cancel the operation if no
result is received within such time, or None to disable any timeout. result is received within such time, or None to disable any timeout.
*args will be ignored.
""" """
if not issubclass(type(request), MTProtoRequest): if not issubclass(type(request), MTProtoRequest):
raise ValueError('You can only invoke MtProtoRequests') raise ValueError('You can only invoke MtProtoRequests')

View File

@ -1,60 +0,0 @@
# Example demonstrating how to make an automatic replier
from telethon import TelegramClient
from telethon.tl.types import UpdateShortMessage, UpdateShortChatMessage
from time import sleep
def get_config():
"""Returns (session_name, user_phone, api_id, api_hash)"""
result = {}
with open('../api/settings', 'r', encoding='utf-8') as file:
for line in file:
value_pair = line.split('=')
left = value_pair[0].strip()
right = value_pair[1].strip()
result[left] = right
return (
'../' + result.get('session_name', 'anonymous'),
result.get('user_phone'),
int(result.get('api_id')),
result.get('api_hash')
)
# Connection
user_id, user_phone, api_id, api_hash = get_config()
client = TelegramClient('session_id', api_id, api_hash)
client.connect()
if not client.is_user_authorized():
client.send_code_request(user_phone)
client.sign_in('+34600000000', input('Enter code: '))
number_of_auto_replies = int(input('Auto-reply how many times?: '))
# Real work here
def auto_reply_thread(update_object):
print(type(update_object), update_object)
return
'''
if isinstance(update_object, UpdateShortMessage):
if not update_object.out:
client.send_message()
print('[User #{} sent {}]'.format(
update_object.user_id, update_object.message))
elif isinstance(update_object, UpdateShortChatMessage):
if not update_object.out:
print('[Chat #{}, user #{} sent {}]'.format(
update_object.chat_id, update_object.from_id,
update_object.message))
'''
client.add_update_handler(auto_reply_thread)
while number_of_auto_replies > 0:
# A real application would do more work here
sleep(1)