mirror of
https://github.com/TeamPGM/pyrogram.git
synced 2024-11-16 12:51:18 +00:00
Add bot_token argument (#221)
* Add bot_token argument (closes #123) * Make session_name docs more readable and detailed * Explicitely set is_bot=False
This commit is contained in:
parent
87c4d08d9c
commit
f84f9ec4df
@ -29,6 +29,7 @@ import struct
|
|||||||
import tempfile
|
import tempfile
|
||||||
import threading
|
import threading
|
||||||
import time
|
import time
|
||||||
|
import warnings
|
||||||
from configparser import ConfigParser
|
from configparser import ConfigParser
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from hashlib import sha256, md5
|
from hashlib import sha256, md5
|
||||||
@ -67,10 +68,10 @@ class Client(Methods, BaseClient):
|
|||||||
|
|
||||||
Args:
|
Args:
|
||||||
session_name (``str``):
|
session_name (``str``):
|
||||||
Name to uniquely identify a session of either a User or a Bot.
|
Name to uniquely identify a session of either a User or a Bot, e.g.: "my_account". This name will be used
|
||||||
For Users: pass a string of your choice, e.g.: "my_main_account".
|
to save a file to disk that stores details needed for reconnecting without asking again for credentials.
|
||||||
For Bots: pass your Bot API token, e.g.: "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11"
|
Note for bots: You can pass a bot token here, but this usage will be deprecated in next releases.
|
||||||
Note: as long as a valid User session file exists, Pyrogram won't ask you again to input your phone number.
|
Use *bot_token* instead.
|
||||||
|
|
||||||
api_id (``int``, *optional*):
|
api_id (``int``, *optional*):
|
||||||
The *api_id* part of your Telegram API Key, as integer. E.g.: 12345
|
The *api_id* part of your Telegram API Key, as integer. E.g.: 12345
|
||||||
@ -144,6 +145,10 @@ class Client(Methods, BaseClient):
|
|||||||
a new Telegram account in case the phone number you passed is not registered yet.
|
a new Telegram account in case the phone number you passed is not registered yet.
|
||||||
Only applicable for new sessions.
|
Only applicable for new sessions.
|
||||||
|
|
||||||
|
bot_token (``str``, *optional*):
|
||||||
|
Pass your Bot API token to create a bot session, e.g.: "123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11"
|
||||||
|
Only applicable for new sessions.
|
||||||
|
|
||||||
last_name (``str``, *optional*):
|
last_name (``str``, *optional*):
|
||||||
Same purpose as *first_name*; pass a Last Name to avoid entering it manually. It can
|
Same purpose as *first_name*; pass a Last Name to avoid entering it manually. It can
|
||||||
be an empty string: "". Only applicable for new sessions.
|
be an empty string: "". Only applicable for new sessions.
|
||||||
@ -192,6 +197,7 @@ class Client(Methods, BaseClient):
|
|||||||
password: str = None,
|
password: str = None,
|
||||||
recovery_code: callable = None,
|
recovery_code: callable = None,
|
||||||
force_sms: bool = False,
|
force_sms: bool = False,
|
||||||
|
bot_token: str = None,
|
||||||
first_name: str = None,
|
first_name: str = None,
|
||||||
last_name: str = None,
|
last_name: str = None,
|
||||||
workers: int = BaseClient.WORKERS,
|
workers: int = BaseClient.WORKERS,
|
||||||
@ -218,6 +224,7 @@ class Client(Methods, BaseClient):
|
|||||||
self.password = password
|
self.password = password
|
||||||
self.recovery_code = recovery_code
|
self.recovery_code = recovery_code
|
||||||
self.force_sms = force_sms
|
self.force_sms = force_sms
|
||||||
|
self.bot_token = bot_token
|
||||||
self.first_name = first_name
|
self.first_name = first_name
|
||||||
self.last_name = last_name
|
self.last_name = last_name
|
||||||
self.workers = workers
|
self.workers = workers
|
||||||
@ -263,8 +270,13 @@ class Client(Methods, BaseClient):
|
|||||||
raise ConnectionError("Client has already been started")
|
raise ConnectionError("Client has already been started")
|
||||||
|
|
||||||
if self.BOT_TOKEN_RE.match(self.session_name):
|
if self.BOT_TOKEN_RE.match(self.session_name):
|
||||||
|
self.is_bot = True
|
||||||
self.bot_token = self.session_name
|
self.bot_token = self.session_name
|
||||||
self.session_name = self.session_name.split(":")[0]
|
self.session_name = self.session_name.split(":")[0]
|
||||||
|
warnings.warn('\nYou are using a bot token as session name.\n'
|
||||||
|
'It will be deprecated in next update, please use session file name to load '
|
||||||
|
'existing sessions and bot_token argument to create new sessions.',
|
||||||
|
DeprecationWarning, stacklevel=2)
|
||||||
|
|
||||||
self.load_config()
|
self.load_config()
|
||||||
self.load_session()
|
self.load_session()
|
||||||
@ -282,13 +294,15 @@ class Client(Methods, BaseClient):
|
|||||||
try:
|
try:
|
||||||
if self.user_id is None:
|
if self.user_id is None:
|
||||||
if self.bot_token is None:
|
if self.bot_token is None:
|
||||||
|
self.is_bot = False
|
||||||
self.authorize_user()
|
self.authorize_user()
|
||||||
else:
|
else:
|
||||||
|
self.is_bot = True
|
||||||
self.authorize_bot()
|
self.authorize_bot()
|
||||||
|
|
||||||
self.save_session()
|
self.save_session()
|
||||||
|
|
||||||
if self.bot_token is None:
|
if not self.is_bot:
|
||||||
if self.takeout:
|
if self.takeout:
|
||||||
self.takeout_id = self.send(functions.account.InitTakeoutSession()).id
|
self.takeout_id = self.send(functions.account.InitTakeoutSession()).id
|
||||||
log.warning("Takeout session {} initiated".format(self.takeout_id))
|
log.warning("Takeout session {} initiated".format(self.takeout_id))
|
||||||
@ -1113,6 +1127,8 @@ class Client(Methods, BaseClient):
|
|||||||
self.auth_key = base64.b64decode("".join(s["auth_key"]))
|
self.auth_key = base64.b64decode("".join(s["auth_key"]))
|
||||||
self.user_id = s["user_id"]
|
self.user_id = s["user_id"]
|
||||||
self.date = s.get("date", 0)
|
self.date = s.get("date", 0)
|
||||||
|
# TODO: replace default with False once token session name will be deprecated
|
||||||
|
self.is_bot = s.get("is_bot", self.is_bot)
|
||||||
|
|
||||||
for k, v in s.get("peers_by_id", {}).items():
|
for k, v in s.get("peers_by_id", {}).items():
|
||||||
self.peers_by_id[int(k)] = utils.get_input_peer(int(k), v)
|
self.peers_by_id[int(k)] = utils.get_input_peer(int(k), v)
|
||||||
@ -1246,7 +1262,8 @@ class Client(Methods, BaseClient):
|
|||||||
test_mode=self.test_mode,
|
test_mode=self.test_mode,
|
||||||
auth_key=auth_key,
|
auth_key=auth_key,
|
||||||
user_id=self.user_id,
|
user_id=self.user_id,
|
||||||
date=self.date
|
date=self.date,
|
||||||
|
is_bot=self.is_bot,
|
||||||
),
|
),
|
||||||
f,
|
f,
|
||||||
indent=4
|
indent=4
|
||||||
|
@ -68,7 +68,7 @@ class BaseClient:
|
|||||||
}
|
}
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.bot_token = None
|
self.is_bot = None
|
||||||
self.dc_id = None
|
self.dc_id = None
|
||||||
self.auth_key = None
|
self.auth_key = None
|
||||||
self.user_id = None
|
self.user_id = None
|
||||||
|
@ -94,6 +94,7 @@ class Syncer:
|
|||||||
auth_key=auth_key,
|
auth_key=auth_key,
|
||||||
user_id=client.user_id,
|
user_id=client.user_id,
|
||||||
date=int(time.time()),
|
date=int(time.time()),
|
||||||
|
is_bot=client.is_bot,
|
||||||
peers_by_id={
|
peers_by_id={
|
||||||
k: getattr(v, "access_hash", None)
|
k: getattr(v, "access_hash", None)
|
||||||
for k, v in client.peers_by_id.copy().items()
|
for k, v in client.peers_by_id.copy().items()
|
||||||
|
Loading…
Reference in New Issue
Block a user