@momoto

Как через TelegramClient подключить несколько аккаунтов?

Всем привет.
Задача:
Из своего аккаунта есть подписки и свои каналы.
Я хочу репостить из подписок в свои каналы посты.
Но у телеграмма ограничение.
Каждый аккаунт в телеге может создать только 9 каналов, но мне надо 17 своих каналов
Вижу выход из сложившейся ситуации созданием еще одного клиента в telegrame.
Ниже пример работы одного клиента.
Из базы данных берет настройки (какой пост куда репостить)

client = TelegramClient('session_name', api_id, api_hash)

@client.on(events.NewMessage)
async def handler(event):

    msg = event.message
    text = msg.to_dict()['message']
    to_id = msg.to_dict()['to_id']
    #date = msg.to_dict()['date']
	
    peer_id = 0
    
    if to_id['_'] == 'PeerUser':
        peer_id = msg.to_dict()['from_id']
    elif to_id['_'] == 'PeerChat':
        peer_id = to_id['chat_id']
    elif to_id['_'] == 'PeerChannel':
        peer_id = to_id['channel_id']
    
    db = MySQLdb.connect(host="localhost", user="*****", passwd="*****", db="*****", charset='utf8')
    # формируем курсор
    cursor = db.cursor()
    sql = "SELECT channel_id, channel_username, subscribe_username FROM link WHERE active='Y' AND subscribe_id = '%s'" % (peer_id)
    # выполняем запрос
    cursor.execute(sql)   
    # получаем результат выполнения запроса
    data =  cursor.fetchall()
    # перебираем записи
    for channel in data:
        await client.send_message(channel[1], msg)
    db.close()
	
client.start()


Подскажите примеры подключения для нескольких аккаунтов
  • Вопрос задан
  • 1352 просмотра
Пригласить эксперта
Ответы на вопрос 2
@momoto Автор вопроса
Если кому нужно будет.
from telethon import TelegramClient, sync, events, utils
from telethon.tl.custom import Button

# Вставляем api_id и api_hash
api_id1 = 00111111
api_hash1 = '0011111111111111111111'
client1 = TelegramClient('78901234567', api_id1, api_hash1)


api_id2 = 00222222
api_hash2 = '00222222222222222222'
client2 = TelegramClient('89012345678', api_id2, api_hash2)

@client1.on(events.NewMessage)
@client2.on(events.NewMessage)
async def handler(event):
 
    client =  event.client
    msg = event.message
    # тут код для обработки события
client1.start()
client2.start()

client1.run_until_disconnected()
client2.run_until_disconnected()
Ответ написан
@expk
А как в обработчике событий определить что сработал client1 или client2&
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы