DirectX
Интересующийся
Интересующийся
DirectX
Интересующийся
Интересующийся
- Сообщения
- 59
- Реакции
- 129
В этой теме мы разберем:
Желательно использовать купленный аккаунт, т.к не следуя советам приведенным в этой теме, ваш личный акк отлетит в бан
1. Установка библиотеки Telethon.
2. Код скрипта.
Копируем код ниже и редактируем следуя теме
from telethon import TelegramClient, events
import asyncio
api_id = 2281337
api_hash = '2d4zalupa737aa228e62a1f1337fd6a13'
my_channel_id = -1001345345836
channels = [-10012345353430, -100327473252340]
client = TelegramClient('myGrab', api_id, api_hash)
print("GRAB - Started")
@client.on(events.NewMessage(chats=channels))
async def my_event_handler(event):
if event.message:
await client.send_message(my_channel_id, event.message)
client.start()
client.run_until_disconnected()
Самое первое и важное в коде после импорта библиотек вы должны заметить api_id и api_hash, а так-же id каналовВ коде выше они вымышленны. заменить на своё!
Важно! api_id и api_hash это данные вашего аккаунта, они не должны попасть к третьим лицам, иначе вы потеряете аккаунт.
3.Получение / Регистрация API Telegram.
Где взять api_id и api_hash?: на оф.сайте >
На приложение придет код который вы должны ввести далее.
Напомню еще раз:
api_id и api_hash это данные вашего аккаунта, они не должны попасть к третьим лицам, иначе вы потеряете аккаунт.
Полученные api_id и hash заменяем в коде на свои.
Важно: api_hash в коде обязательно должен быть за кавычками, 'одинарными' или "двойными" - разницы нет.
Далее ID каналов.
id своего канала и id канала откуда будем брать посты:
my_channel_id = -1001345345836 #id нашего канала
channels = [-10012345353430, -100327473252340] #id каналов, откуда будем брать материал.
Если ваш канал публичный т.е имеется ссылка в виде @MoykAnal228, Вместо ID просто вставляем его туда за кавычки
channels = [-10012345353430, -100327473252340]
как видите здесь указано id двух каналов, т.е. посты будут браться одновременно с двух каналов
Если вы просто ленитесь и у одного из каналов есть @ссылка можно сделать так:
channels = ['@tut_user', -100327473252340]
Туда-же можно вставлять неограниченное число id каналов через запятую.
если каналы активные, добавляйте не более 8 каналов, т.к из-за флуда в свой канал телеграм выдаст ограничение на отправку сообщений на 480 ± секунд, дальше больше и бан.
На время теста чтобы не создавать два канала для проверки скрипта
можете сделать так:
my_channel_id = 'me'
в этом случае с нужного канала сообщения будут отправляться к вам в сохраненки.
4. Получение id каналов.
Открываем диалог с ботом в телеграм: @getIDs_bot
пересылаем любой пост с нужного канала боту, после чего он выдаст:
И следующее то, что нас больше всего интересует, что мы нашим кодом будем пересылать, и как пересылать.
5. Функция граббера.
За это отвечает часть кода:
if event.message:
await client.send_message(my_channel_id, event.message)
В этом случае копируется любой пост (фото, видео, аудио, текст) целиком, вместе с описанием и отправляется в ваш канал.
Не пересылается а именно отправляется в канал как полноценный новый пост.
Пример работы
Но что если нам нужно только фото, и мы хотим своё описание к фото?
заменяем эту часть кода на следующий:
if event.message.photo: await client.send_file(my_channel_id, file=event.message, caption="тут ваш текст")
Скрин работы
Здесь всё просто рассмотрим аргумент event.message
event.message #-берет все посты
event.message.media #-только медиа контент исключая текст
event.message.photo #-только фото
event.message.video #-только видео
event.message.audio #-только музыка
заменяем на нужный нам вариант
Если вам нужен только текст, для отправки самого 'сообщения 'используйте
await client.send_message(my_channel_id, event.message)
Если медиа контент:
await client.send_file(my_channel_id, file=event.message, caption="свой текст")
Если же вам нужно и то и другое просто вставьте еще одну проверку ниже
if event.message.text:
await client.send_message(my_channel_id, event.message)
if event.message.video:
await client.send_file(my_channel_id, file=event.message)
======
Отправка Альбомов (сгруппированных фото)
И так, разобравшись со всем что написано до этого момента, и протестировав скрипт вы наверняка обнаружите что
сгруппированные сообщения разбиваются и отправляются по одному, тут же всё элементарно просто
добавим следующий кусок кода к тому что выше
@client.on(events.Album(chats=channels))
async def handler(event):
await client.send_message(
chat,
file=event.messages,
message=event.original_update.message.message,
)
Должно получиться так:
from telethon import TelegramClient, events
api_id = 2281337
api_hash = '2d4zalupa737aa228e62a1f1337fd6a13'
my_channel_id = -1001345345836
channels = [-10012345353430, -100327473252340]
client = TelegramClient('myGrab', api_id, api_hash)
print("GRAB - Started")
@client.on(events.NewMessage(chats=channels))
async def my_event_handler(event):
if event.message:
await client.send_message(my_channel_id, event.message)
@client.on(events.Album(chats=channels))
async def handler(event):
await client.send_message(
my_channel_id,
file=event.messages,
message=event.original_update.message.message,
)
client.start()
client.run_until_disconnected()
Если хотите поменять текст у альбома
message=event.original_update.message.message
редактируем следующим образом
message='Ваш текст для альбома'
Можно сказать на этом всё!
Сохраняем скрипт и запускаем, наслаждаемся.
6.Запуск скрипта.Важно!
Если вы впервые регаете api телеграма, запустите скрипт
у вас спросит номер телефона от аккаунта, введите его и затем код отправленный вам в приложение, эта процедура делается всего один раз.
Здесь же создается еще один файл в данном случае myGrab.session
название файла берется из
client = TelegramClient('myGrab', api_id, api_hash)
этот файл всегда должен находится в одной директории со скриптом
и как только появится "GRAB - Started" - Закройте скрипт и запустите его только через пару часов.
иначе ваш аккаунт может отлететь в бан.
После этого запускайте и держите скрипт рабочим хоть 24/7
- Установка библиотеки Telethon.
- Код скрипта.
- Получение / Регистрация API Telegram.
- Получение id каналов.
- Функция граббера.
- Запуск скрипта.
Желательно использовать купленный аккаунт, т.к не следуя советам приведенным в этой теме, ваш личный акк отлетит в бан
1. Установка библиотеки Telethon.
- Нажать сочетание клавиш win+R
- В появившемся окне прописываем: cmd жмем Enter
- В следующем окне вводим pip install telethon
- Дожидаемся завершения установки.
2. Код скрипта.
Копируем код ниже и редактируем следуя теме
from telethon import TelegramClient, events
import asyncio
api_id = 2281337
api_hash = '2d4zalupa737aa228e62a1f1337fd6a13'
my_channel_id = -1001345345836
channels = [-10012345353430, -100327473252340]
client = TelegramClient('myGrab', api_id, api_hash)
print("GRAB - Started")
@client.on(events.NewMessage(chats=channels))
async def my_event_handler(event):
if event.message:
await client.send_message(my_channel_id, event.message)
client.start()
client.run_until_disconnected()
Самое первое и важное в коде после импорта библиотек вы должны заметить api_id и api_hash, а так-же id каналовВ коде выше они вымышленны. заменить на своё!
Важно! api_id и api_hash это данные вашего аккаунта, они не должны попасть к третьим лицам, иначе вы потеряете аккаунт.
3.Получение / Регистрация API Telegram.
Где взять api_id и api_hash?: на оф.сайте >
You do not have permission to view link please
Вход or Регистрация
На приложение придет код который вы должны ввести далее.
Напомню еще раз:
api_id и api_hash это данные вашего аккаунта, они не должны попасть к третьим лицам, иначе вы потеряете аккаунт.
Полученные api_id и hash заменяем в коде на свои.
Важно: api_hash в коде обязательно должен быть за кавычками, 'одинарными' или "двойными" - разницы нет.
Далее ID каналов.
id своего канала и id канала откуда будем брать посты:
my_channel_id = -1001345345836 #id нашего канала
channels = [-10012345353430, -100327473252340] #id каналов, откуда будем брать материал.
Если ваш канал публичный т.е имеется ссылка в виде @MoykAnal228, Вместо ID просто вставляем его туда за кавычки
тоже самое и с переменной "channels" но давайте рассмотрим ее поближеmy_channel_id = '@MoykAnal228'
channels = [-10012345353430, -100327473252340]
как видите здесь указано id двух каналов, т.е. посты будут браться одновременно с двух каналов
Если вы просто ленитесь и у одного из каналов есть @ссылка можно сделать так:
channels = ['@tut_user', -100327473252340]
Туда-же можно вставлять неограниченное число id каналов через запятую.
если каналы активные, добавляйте не более 8 каналов, т.к из-за флуда в свой канал телеграм выдаст ограничение на отправку сообщений на 480 ± секунд, дальше больше и бан.
На время теста чтобы не создавать два канала для проверки скрипта
можете сделать так:
my_channel_id = 'me'
в этом случае с нужного канала сообщения будут отправляться к вам в сохраненки.
4. Получение id каналов.
Открываем диалог с ботом в телеграм: @getIDs_bot
пересылаем любой пост с нужного канала боту, после чего он выдаст:
И следующее то, что нас больше всего интересует, что мы нашим кодом будем пересылать, и как пересылать.
5. Функция граббера.
За это отвечает часть кода:
if event.message:
await client.send_message(my_channel_id, event.message)
В этом случае копируется любой пост (фото, видео, аудио, текст) целиком, вместе с описанием и отправляется в ваш канал.
Не пересылается а именно отправляется в канал как полноценный новый пост.
Пример работы
Но что если нам нужно только фото, и мы хотим своё описание к фото?
заменяем эту часть кода на следующий:
if event.message.photo: await client.send_file(my_channel_id, file=event.message, caption="тут ваш текст")
Скрин работы
Здесь всё просто рассмотрим аргумент event.message
event.message #-берет все посты
event.message.media #-только медиа контент исключая текст
event.message.photo #-только фото
event.message.video #-только видео
event.message.audio #-только музыка
заменяем на нужный нам вариант
Если вам нужен только текст, для отправки самого 'сообщения 'используйте
await client.send_message(my_channel_id, event.message)
Если медиа контент:
await client.send_file(my_channel_id, file=event.message, caption="свой текст")
Если же вам нужно и то и другое просто вставьте еще одну проверку ниже
if event.message.text:
await client.send_message(my_channel_id, event.message)
if event.message.video:
await client.send_file(my_channel_id, file=event.message)
======
Отправка Альбомов (сгруппированных фото)
И так, разобравшись со всем что написано до этого момента, и протестировав скрипт вы наверняка обнаружите что
сгруппированные сообщения разбиваются и отправляются по одному, тут же всё элементарно просто
добавим следующий кусок кода к тому что выше
@client.on(events.Album(chats=channels))
async def handler(event):
await client.send_message(
chat,
file=event.messages,
message=event.original_update.message.message,
)
Должно получиться так:
from telethon import TelegramClient, events
api_id = 2281337
api_hash = '2d4zalupa737aa228e62a1f1337fd6a13'
my_channel_id = -1001345345836
channels = [-10012345353430, -100327473252340]
client = TelegramClient('myGrab', api_id, api_hash)
print("GRAB - Started")
@client.on(events.NewMessage(chats=channels))
async def my_event_handler(event):
if event.message:
await client.send_message(my_channel_id, event.message)
@client.on(events.Album(chats=channels))
async def handler(event):
await client.send_message(
my_channel_id,
file=event.messages,
message=event.original_update.message.message,
)
client.start()
client.run_until_disconnected()
Если хотите поменять текст у альбома
message=event.original_update.message.message
редактируем следующим образом
message='Ваш текст для альбома'
Можно сказать на этом всё!
Сохраняем скрипт и запускаем, наслаждаемся.
6.Запуск скрипта.Важно!
Если вы впервые регаете api телеграма, запустите скрипт
у вас спросит номер телефона от аккаунта, введите его и затем код отправленный вам в приложение, эта процедура делается всего один раз.
Здесь же создается еще один файл в данном случае myGrab.session
название файла берется из
client = TelegramClient('myGrab', api_id, api_hash)
этот файл всегда должен находится в одной директории со скриптом
и как только появится "GRAB - Started" - Закройте скрипт и запустите его только через пару часов.
иначе ваш аккаунт может отлететь в бан.
После этого запускайте и держите скрипт рабочим хоть 24/7
Вложения
-
61.2 KB Просмотры: 5
-
17.5 KB Просмотры: 6
-
37.6 KB Просмотры: 5
-
14.9 KB Просмотры: 6
Последнее редактирование модератором: