Перейти к публикации
Форум ботоводов

Пересылать сообщения из чужих чатов и каналов в свои


admin

Рекомендованные сообщения

А за оплату, могли бы как то наглядно показать, как из приложения (ios) перенаправлять сигналы в телеграм канал, учитывая что в приложение входишь по паролю, и туда приходят сигналы, доступ к приложению есть

Ссылка на комментарий
Поделиться на других сайтах

  • 1 month later...
07.11.2019 в 00:05, Spawnox сказал:

Хотел уточнить. А он может сразу с нескольких чатов пересылать сообщения или только с одного брать в другой отправлять?

Привет!

Прежде всего хочу поблагодарить Автора, Админа, который дал решение!

Был так благодарен, что решил разобраться и помочь ему с кодом.

День затратил, чтобы доработать этот код, не зная языка вообще, вот что получилось:

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

вместо choosen_chat_id заменил на два массива.

chat_ids = []
chats = []
x=0
choosen_chat_idA = []
target_chat_idB = []
sumChat = 6
i=0

Выделяем этот код в старом варианте и заменяем на новый:

if event['@type'] == 'updateNewMessage' and event['message']['chat_id'] == choosen_chat_id:
            
            message_type = event['message']['content']['@type']
            print("*"*80)
            print("Получено:", message_type)
            print("-"*80)
            if message_type == 'messageText':
                message_text = event['message']['content']['text']['text'].translate(non_bmp_map)
                print(message_text)
                
                td_send({'@type':'sendMessage', 'chat_id':target_chat_id, 'input_message_content': {
						 '@type': 'inputMessageText',
						 'text': {
						 '@type': 'formattedText',
						 'text': message_text
						}}}
                         )
                
                
            print("-"*80)
            print(event)
            
            print("*"*80)
            
        if event['@type'] == 'chat':
            title = event['title'].translate(non_bmp_map)
            print('Получен чат', len(chats),  title, event['id'])
            chats.append({'title': title, 'id': event['id']})
            if len(chats) == len(chat_ids):
                chat_id = int(input('Выберите чат для мониторинга (1 - {m_ch})'.format(m_ch=len(chats))))
                print("Выбран чат", chats[chat_id])
                choosen_chat_id = chats[chat_id]['id']

                chat_id = int(input('Выберите чат для пересылки (1 - {m_ch})'.format(m_ch=len(chats))))
                print("Выбран чат", chats[chat_id])
                target_chat_id = chats[chat_id]['id']

                if target_chat_id == choosen_chat_id:
                    print("Нельзя два раза выбрать одно и то же!!!!")
                    break

И вместо него вставляем это:

if event['@type'] == 'updateNewMessage':
            i=0
            while i < sumChat:               
                if event['message']['chat_id'] == choosen_chat_idA[i]:
                    print("range(choosen_chat_idA): ", choosen_chat_idA[i])
                    message_type = event['message']['content']['@type']
                    print("*"*80)
                    print("Получено:", message_type)
                    print("-"*80)
                    
                    if message_type == 'messageText':
                        message_text = event['message']['content']['text']['text'].translate(non_bmp_map)
                        print(message_text)
                                    
                        td_send({'@type':'sendMessage', 'chat_id':target_chat_idB[i], 'input_message_content': {
                                                                         '@type': 'inputMessageText',
                                                                         'text': {
                                                                         '@type': 'formattedText',
                                                                         'text': message_text
                                                                        }}}
                                                 )
                                        
                                        
                        print("-"*80)
                        print(event)
                                    
                        print("*"*80)

                i+=1
                 
                                    
        if event['@type'] == 'chat':
            title = event['title'].translate(non_bmp_map)
            print('Получен чат', len(chats),  title, event['id'])
            chats.append({'title': title, 'id': event['id']}) 
                    
            for x in range(sumChat):
                if len(chats) == len(chat_ids):
                    chat_id = int(input('Выберите чат для мониторинга (1 - {m_ch})'.format(m_ch=len(chats))))
                    print("Выбран чат", chats[chat_id])
                    choosen_chat_idA.append(chats[chat_id]['id'])

                    chat_id = int(input('Выберите чат для пересылки (1 - {m_ch})'.format(m_ch=len(chats))))
                    print("Выбран чат", chats[chat_id])
                    target_chat_idB.append(chats[chat_id]['id'])

                    if target_chat_idB[x] == choosen_chat_idA[x]:
                        print("Нельзя два раза выбрать одно и то же!!!!")
                        break  

 

Ссылка на комментарий
Поделиться на других сайтах

нашёл незначительную ошибку: 

if event['@type'] == 'updateNewMessage':
            i=0
            while i < sumChat:               
                if event['message']['chat_id'] == choosen_chat_idA[i]:

вставьте вот эту строчку выделенную жирным:

 

while i < sumChat:
    #print("range(choosen_chat_idA)["+i+"]: ", choosen_chat_idA[i])
    if len(choosen_chat_idA) !=0:
        if event['message']['chat_id'] == choosen_chat_idA[i]:
Ссылка на комментарий
Поделиться на других сайтах

Добрый день. При запуске скрипта автора, так же как и при запуске образца из папки examples выдает следующую ошибку:

Traceback (most recent call last):
  File "D:\code\Telegram\src\td\example\python\tdjson_example.py", line 18, in <module>
    tdjson = CDLL(tdjson_path)
  File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\ctypes\__init__.py", line 364, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: [WinError 126] Не найден указанный модуль

Файл tdjson.dll пробовал как свой, скомпилированный, так и из файлов автора. Пробовал в коде указать путь к tdjson.dll напрямую - результат тот же...Есть идеи как можно решить эту проблему? А то уже 2 дня убил и ничего не выходит 🙂

Ссылка на комментарий
Поделиться на других сайтах

25.12.2019 в 17:58, Modik сказал:

Добрый день. При запуске скрипта автора, так же как и при запуске образца из папки examples выдает следующую ошибку:


Traceback (most recent call last):
  File "D:\code\Telegram\src\td\example\python\tdjson_example.py", line 18, in <module>
    tdjson = CDLL(tdjson_path)
  File "D:\Program Files (x86)\Microsoft Visual Studio\Shared\Python37_64\lib\ctypes\__init__.py", line 364, in __init__
    self._handle = _dlopen(self._name, mode)
OSError: [WinError 126] Не найден указанный модуль

Файл tdjson.dll пробовал как свой, скомпилированный, так и из файлов автора. Пробовал в коде указать путь к tdjson.dll напрямую - результат тот же...Есть идеи как можно решить эту проблему? А то уже 2 дня убил и ничего не выходит 🙂

У вас может не хватать какого-то модуля, который вызывается в процессе.

Скачайте программу dependency walker, она покажет какой либы не хватает

Ссылка на комментарий
Поделиться на других сайтах

  • 3 weeks later...
27.12.2019 в 16:21, admin сказал:

У вас может не хватать какого-то модуля, который вызывается в процессе.

Скачайте программу dependency walker, она покажет какой либы не хватает

А как его использовать? У меня правда такая ошибка...

====================================================== RESTART: C:\Telegram\Resend\main.py ======================================================
Traceback (most recent call last):
  File "C:\Telegram\Resend\main.py", line 25, in <module>
    tdjson = CDLL(tdjson_path)
  File "C:\Users\novikov_a\AppData\Local\Programs\Python\Python38\lib\ctypes\__init__.py", line 373, in __init__
    self._handle = _dlopen(self._name, mode)
FileNotFoundError: Could not find module 'C:\WINDOWS\system32\tdjson.dll'. Try using the full path with constructor syntax.

Файл в system32 лежит, если что...

А также изначально не вышло зарегистрировать библиотеку, типо модуль не найден. Win10x64-1909

 

 

P.S. Отвечу сам себе. Я, идиот эдакий, не поместил в system32 остальные dll. Посыпаю голову пеплом за невнимательность.

Изменено пользователем komatera
Ссылка на комментарий
Поделиться на других сайтах

  • 2 weeks later...
15.12.2019 в 17:22, Геннадий сказал:

Для того, чтобы можно было с нескольких чатов пересылать сообщения,

А как сделать, чтобы наоборот в несколько чатов пересылать?

Ссылка на комментарий
Поделиться на других сайтах

10.11.2019 в 13:30, admin сказал:

Вообще он может всё то же самое, что и вы через официальный клиент Telegram

Отличный бот. Спасибо. Подскажите, как можно бота заставить править некоторые сообщения, если они имеют одинаковое наполнение. Например, сначала пришло сообщение в котором текст "Петров - козел", через несколько сообщений пришло сообщение "Петров - козел и дурак", можно сделать, чтобы бот второе сообщение про петрова не новым отправлял, а правил старое. Также в тексте этих сообщений имеются одинаковые даты и время.

Ссылка на комментарий
Поделиться на других сайтах

Автор красавчик

за что ему отдельное спасибо!!!

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

28.01.2019 в 17:57, admin сказал:

Теперь давайте попробуем собрать исходники в работающую библиотеку. Для этого запустим командную строку (cmd), в ней выполним следующие команды:


cd C:\code\examples\telegram\src\cmake
cmake -DCMAKE_TOOLCHAIN_FILE=C:\vcpkg\scripts\buildsystems\vcpkg.cmake -A x64 ..
cmake --build . --config Release
Цитата

-- Configuring incomplete, errors occurred!
See also "C:/code/examples/telegram/src/CMake/CMakeFiles/CMakeOutput.log".
See also "C:/code/examples/telegram/src/CMake/CMakeFiles/CMakeError.log".

в итоге просто скачал готовое решение по ветке ниже и все настроил)

работает без проблем

 

Имею все же смелость спросить, уточняю что в программировании я полный Зеро)))

Скажите, можно ли из сообщения которое мы копируем удалять определенные слова?

Такс сказать бот копирует сообщение, далее редактирует и после публикует его

Заранее спасибо

Ссылка на комментарий
Поделиться на других сайтах

28.01.2020 в 12:30, Aleksey.G сказал:

Имею все же смелость спросить, уточняю что в программировании я полный Зеро)))

Скажите, можно ли из сообщения которое мы копируем удалять определенные слова?

 

Можно. Попробуй, что-то вроде 

if 'слово' in message_text:
  message_text = message_text.replace('слово' , '')

Найди в комментах описание про фильтр и вставляй туда же. Между print(message_text) и td_send.

Ссылка на комментарий
Поделиться на других сайтах

01.02.2020 в 16:49, terpevt сказал:

Навряд ли кто-то прочтет. Но бот внезапно перестал работать и больше не запускается.

не навряд ли)))

а прочтет...такая же фигня

Ссылка на комментарий
Поделиться на других сайтах

4 минуты назад, Aleksey.G сказал:

не навряд ли)))

а прочтет...такая же фигня

 Помог запуск через впн. ProtonVPN бесплатный вполне для этого подошел.

Ссылка на комментарий
Поделиться на других сайтах

  • 1 month later...

Добрый день. А как можно пропустить первый этап? Я пытался его выполнить, но застрял на двух моментах, а именно:
 

28.01.2019 в 22:57, admin сказал:

Потом нужно будет добавить путь в переменные окружения:

 

и в конце на командной строке

Ссылка на комментарий
Поделиться на других сайтах

 

10.03.2020 в 12:02, Epmak сказал:

Добрый день. А как можно пропустить первый этап? Я пытался его выполнить, но застрял на двух моментах, а именно:
 

и в конце на командной строке

Просто пролистайте дальше, скачайте готовые файлы и запустите )

Ссылка на комментарий
Поделиться на других сайтах

  • 4 weeks later...

Добрый вечер, админ у меня проблема пока только на первом шаге.

Как вы указали нужно изменить среду, то есть добавить GnuWin, после загрузке а далее запуска программы, происходит следующее: 

появляется окно (командной строки) и моментом исчезает, в итоге программ описанная выше не открывается, но она установилась.

от сюда следует, что работать дальше я не могу так как, моя командная строка не видит дальнейший шаг(картинка 2)

 

среда переменной.jpg

картинка 2.jpg

Ссылка на комментарий
Поделиться на других сайтах

16 часов назад, MOl сказал:

появляется окно (командной строки) и моментом исчезает, в итоге программ описанная выше не открывается, но она установилась.

от сюда следует, что работать дальше я не могу так как, моя командная строка не видит дальнейший шаг(картинка 2)

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

У вас ругается на cmake, его нужно будет установить (там дальше в статье это есть и ссылка).

На данном этапе вы просто добавили путь к gnuwin и должны продолжать устанавливать всякие программы дальше. Либо взять готовые либы из п.3 и не париться)

Ссылка на комментарий
Поделиться на других сайтах

Подскажите что делать дальше. Дошел до момента Enter code, мне пришёл код на ТГ, после чего нажимаю Enter, и глухо
В папке telegram создается две папки, общий вес которых 104 кб. 
Пробовал скачивать VPN, так же не помогло. 
Что делать? Есть ли решение? 
photo_2020-04-07_20-14-33.jpg.b128f5ef92fd09b7c192d76bde050f2b.jpg

Ссылка на комментарий
Поделиться на других сайтах

  • 2 weeks later...
07.04.2020 в 20:17, davidfox200 сказал:

Подскажите что делать дальше. Дошел до момента Enter code, мне пришёл код на ТГ, после чего нажимаю Enter, и глухо
В папке telegram создается две папки, общий вес которых 104 кб. 
Пробовал скачивать VPN, так же не помогло. 
Что делать? Есть ли решение? 

Та же проблема(

Подскажите что делать... 😭

Ссылка на комментарий
Поделиться на других сайтах

Хочу сказать спасибо админу. Бот реально рабочий. Но можно как-то сделать так что б бот сам редактировал сообщение? Пример: В другом канале написали пост. Бот это увидел, разослал всем кому я выбрал. Потом тот пост изменили/редактировали. И мой бот тоже изменил сообщение. Заранее спасибо за помощь

Ссылка на комментарий
Поделиться на других сайтах

Спасибо автору за интересное и рабочее решение! Но у меня возникли затруднения - при регистрации приложения ошибочно указали не ту платформу (Андроид). Плюс ко всему очень много контактов (больше 100). Итого - компилится, код ввожу и глухо. Потом приходит сообщения о том, что доступ не предоставлен.

Вопрос: проблема в неверном выборе платформы? и, если это так, есть ли возможность это изменить? пока вообще не пойму как это можно сделать (когда снова захожу в API Telegram, вижу ключи. названия приложения и  коды для прокси, а поля выбора платформы нет!!!)

Или проблема в том, что контактов много?

Заранее благодарю всех кто откликнется!

Ссылка на комментарий
Поделиться на других сайтах

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...