Перевод участников из одной супергруппы telegram в другую без хороших результатов

#python #telegram #telethon

Вопрос:

Я должен перевести членов супергруппы Telegram (около 6 тыс.) из другой, которая была создана в качестве резервной копии. Мы уже пытались отправить им ссылку, но большинство людей не будут беспокоиться.

Я пытаюсь сделать это в Телемарафоне, но, кроме перемещения от 1 до 12 пользователей за один запуск, он перестал что-либо делать. Я являюсь администратором в обеих группах.

 from telethon.sessions.string import StringSession
from telethon.tl.functions.channels import InviteToChannelRequest
import asyncio


api_id = xxxxx
api_hash = 'xxxxxxx'
string = 'xxxxxx'
client = TelegramClient(StringSession(string), api_id, api_hash)
loop = asyncio.get_event_loop()
origin = 'original_group'
destination = 'backup'
invited = []

async def transfer(): 
    users = client.iter_participants(origin, aggressive =True) 

    async for user in users:
        invited.append(user)
        await client(InviteToChannelRequest(
            destination,
            invited
        ))

with client:
    client.loop.run_until_complete(transfer())
 

Когда я запускаю код, терминал просто продолжает работать вечно, но в группе больше ничего не меняется.

Не могли бы вы, пожалуйста, указать мне на мою ошибку?

Спасибо.

Комментарии:

1. Массовое добавление пользователей считается спамом и приведет к удалению как учетной записи, так и группы. Просто нет возможности сделать это с помощью API.

2. Возможно, пользователи не хотят присоединяться к группе резервного копирования. Вот почему они не перешли по ссылке. Принуждение их присоединиться приведет к тому, что о группе будет сообщено, а ваша учетная запись будет заблокирована.

3. К сожалению, это связано с работой, поэтому в какой-то степени им в конечном итоге придется присоединиться.

Ответ №1:

попробуйте это:

 async def transfer(): 
    users = client.iter_participants(origin, aggressive =True) 
    __users = list()
    async for user in users:
        __users.append(user.id)
    for user in __users:
        await client(InviteToChannelRequest(destination, [user]))