1. Встановлення необхідних бібліотек
Спочатку встановіть бібліотеку Telethon:
bashpip install telethon
2. Імпорт необхідних модулів
pythonfrom telethon import TelegramClient, events, Button
from telethon.tl.functions.messages import ImportChatInviteRequest
from telethon.tl.types import InputPeerChannel
import re
3. Налаштування клієнта
Вам потрібно зареєструвати свій додаток на my.telegram.org і отримати API ID та API Hash.
pythonapi_id = 'YOUR_API_ID'
api_hash = 'YOUR_API_HASH'
phone = 'YOUR_PHONE_NUMBER'
client = TelegramClient('session_name', api_id, api_hash)
4. Функція для дублювання постів
Створіть функцію, яка обробляє повідомлення і дублює їх на ваш канал:
pythonasync def duplicate_post(event):
sender = await event.get_sender()
username = sender.username
# Замінити ім'я користувача в постах
message_text = event.raw_text.replace(username, 'new_username')
# Замінити посилання в постах
message_text = re.sub(r'http[s]?://\S+', 'new_link', message_text)
# Додати кнопки
buttons = [
[Button.url('New Button 1', 'https://example.com'), Button.url('New Button 2', 'https://example.com')]
]
# Пересилання преміум емоджі
if event.message.stickers:
stickers = event.message.stickers
else:
stickers = []
# Відправити пост на ваш канал
await client.send_message('your_channel_username', message_text, buttons=buttons, file=stickers)
# Додати обробник подій для отримання повідомлень з цільових каналів
@client.on(events.NewMessage(chats=('source_channel_username')))
async def handler(event):
await duplicate_post(event)
# Підключитися і почати обробку повідомлень
client.start(phone)
client.run_until_disconnected()
5. Додавання до закритих каналів
Для отримання доступу до закритих каналів, вам потрібно буде використовувати ImportChatInviteRequest.
pythonasync def join_private_channel(link):
try:
await client(ImportChatInviteRequest(link.split('/')[-1]))
except Exception as e:
print(f'Failed to join the channel: {e}')
# Приклад виклику функції
client.loop.run_until_complete(join_private_channel('https://t.me/joinchat/XXXXXX'))
6. Запуск клієнта
Запустіть ваш клієнт, щоб він почав обробку повідомлень:
pythonif __name__ == '__main__':
client.start(phone)
client.run_until_disconnected()