2
0
mirror of https://github.com/pyrogram/pyrogram synced 2025-08-28 21:07:59 +00:00

Add join_chat method

This commit is contained in:
Dan 2017-12-25 12:30:48 +01:00
parent aef1386a1a
commit c7f7825c92

View File

@ -22,6 +22,7 @@ import logging
import math import math
import mimetypes import mimetypes
import os import os
import re
import time import time
from collections import namedtuple from collections import namedtuple
from configparser import ConfigParser from configparser import ConfigParser
@ -53,6 +54,7 @@ Config = namedtuple("Config", ["api_id", "api_hash"])
class Client: class Client:
INVITE_LINK_RE = re.compile(r"^(?:https?:\/\/)?t\.me\/joinchat\/(.+)$")
DIALOGS_AT_ONCE = 100 DIALOGS_AT_ONCE = 100
def __init__(self, session_name: str, test_mode: bool = False): def __init__(self, session_name: str, test_mode: bool = False):
@ -933,3 +935,30 @@ class Client:
limit=limit limit=limit
) )
) )
def join_chat(self, chat_id: str):
match = self.INVITE_LINK_RE.match(chat_id)
if match:
return self.send(
functions.messages.ImportChatInvite(
hash=match.group(1)
)
)
else:
resolved_peer = self.send(
functions.contacts.ResolveUsername(
username=chat_id.lower().strip("@")
)
)
channel = InputPeerChannel(
channel_id=resolved_peer.chats[0].id,
access_hash=resolved_peer.chats[0].access_hash
)
return self.send(
functions.channels.JoinChannel(
channel=channel
)
)