#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]))