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

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


admin

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

19.02.2021 в 13:15, dimas123123 сказал:

Всем доброго дня.

1) Подскажите, пожалуйста, должен ли бот быть добавлен или быть админом в паблик, из которого идет репост или нет?

Есть ли какая-то возможность настроить работу бота без необходимости держать компьютер включеннным?

Арендуй ВПС и будет счастье

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

  • 1 month later...

Подскажите, сделал пересылку фото, у меня сначала все работало, теперь выдает ошибки:

[ 2][t 4][1621412766.853208780][NetQueryDelayer.cpp:75][!NetQueryDelayer]    Delay: [Query:[id:2621440][tl:0xb8d1262b][state:Query]] [timeout:5.000000][total_timeout:5.000000] because of [Error : 420 : FLOOD_WAIT_5] from Session:2:main::Connect::Tcp::[149.154.167.50:443] to DcId{2} from [0.0.0.0:62025]
[ 2][t 4][1621412772.066001415][MessagesManager.cpp:20436][!net_actor][&error_code != 403]    Fail to send yet unsent message 35.25 in chat -10013541677 with the error [Error : 406 : FILEREF_UPGRADE_NEEDED]

Читал на поддержке Телеграма, что нужно обновить клиент (

406 FILEREF_UPGRADE_NEEDED The client has to be updated in order to support file references

)

Телеграм обновлен, стоит последняя версия. Что за обновление ему нужно?!!111

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

Всем добрый день!

Подскажите как пересылать картинки и документы?

Никак не могу разобраться...

Спасибо.

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

  • 2 weeks later...

Хочу захардкодить ID каналов чтоб каждый раз не выбирать , подскажите где это сделать?

 

       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 = (ID Канала)
                print("Выбран чат", chats[chat_id])
                choosen_chat_id = chats[chat_id]['id']

                chat_id = (ID Канала)
                print("Выбран чат", chats[chat_id])
                target_chat_id = chats[chat_id]['id']

 

РЕШЕНО, Готовый вариант выше

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

21.05.2021 в 18:50, Izotkin сказал:

Всем добрый день!

Подскажите как пересылать картинки и документы?

Никак не могу разобраться...

Спасибо.

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

Если кто-то уже решил эту проблему, можете поделиться решением ? Буду весьма благодарен 😄

 

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

  • 1 month later...
  • 3 weeks later...

Касаемо пересылки фото, несколько топорно, но работает:

            if message_type == 'messagePhoto':
                message_photo = event['message']['content']['photo']
                photo_size = message_photo['sizes'][0]
                
                print(photo_size['photo']['remote']['id'])

                td_send({'@type': 'sendMessage', 'chat_id': target_chat_id, 'input_message_content': {
                    '@type': 'inputMessagePhoto',
                    'photo': {
                        '@type': 'inputFileRemote',
                        'id': photo_size['photo']['remote']['id']
                    }}}
                        )

 

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

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

Привет!

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

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

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

Для того, чтобы можно было с нескольких чатов пересылать сообщения, нужно некоторые переменные добавить, некоторые убрать. 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  

 

никак не могу исполнить выдает море ошибок прочекал видимо из за старой версии TDLib можете пожалуйста скинуть файл новой TDLib

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

  • 5 weeks later...

 

День добрый. Остановился на моменте пересылки фото с описанием и дальнейшем взаимодействии с текстом фотографии. На данном этапе пересылает только фотографию без текста. Может кто разобрался? Буду благодарен.

 

if message_type == 'messagePhoto':
                        message_photo = event['message']['content']['photo']
                        photo_size = message_photo['sizes'][0]
                        print(photo_size['photo']['remote']['id'])
                        td_send({'@type': 'sendMessage', 'chat_id': target_chat_idB[i], 'input_message_content': {'@type': 'inputMessagePhoto','photo': {'@type': 'inputFileRemote','id': photo_size['photo']['remote']['id']}}}) 

Касаемо проблем (читал выше) у многих вылазит ошибка по типу - [Error : 406 : FILEREF_UPGRADE_NEEDED].

Все, что нужно, это обновить TDlib, долго не мог найти где, поэтому решил повторить первый этап статьи автора и вуаля, все работает. Было еще несколько ошибок, с которыми может столкнуться человек который будет самостоятельно создавать файл tdjson.dll . Одна из них на этом этапе:

 

28.01.2019 в 16:57, admin сказал:
cd C:\code\examples\telegram\src\cmake
cmake -DCMAKE_TOOLCHAIN_FILE=C:\vcpkg\scripts\buildsystems\vcpkg.cmake -A x64 ..
cmake --build . --config Release

Вылезет ошибка - 

Цитата

-- Found ZLIB: C:/Users/moham/Documents/telegram-bot-api/vcpkg/installed/x64-windows/include optimized;C:/Users/moham/Documents/telegram-bot-api/vcpkg/installed/x64-windows/lib/zlib.lib;debug;C:/Users/moham/Documents/telegram-bot-api/vcpkg/installed/x64-windows/debug/lib/zlibd.lib CMake Error at td/tdutils/generate/CMakeLists.txt:28 (message):

Could NOT find gperf.

Add path to gperf executable to PATH environment variable or specify it manually using GPERF_EXECUTABLE option, i. e. 'cmake -DGPERF_EXECUTABLE:FILEPATH="<path to gperf executable>"'. -- Configuring incomplete, errors occurred! See also

"C:/Users/moham/Documents/telegram-bot-api/build/CMakeFiles/CMakeOutput.log". See also "C:/Users/moham/Documents/telegram-bot-api/build/CMakeFiles/CMakeError.log".

Нужно будет выполнить -

cd vcpkg
.\vcpkg.exe install gperf:x64-windows

перед vcpkg(путь к нему). Установятся недостающие данные, далее снова выполняете 

28.01.2019 в 16:57, admin сказал:
cd C:\code\examples\telegram\src\cmake
cmake -DCMAKE_TOOLCHAIN_FILE=C:\vcpkg\scripts\buildsystems\vcpkg.cmake -A x64 ..
cmake --build . --config Release

и все должно заработать. Помню, еще в чем-то проблема была, но не помню точно в чем. Если что, задавайте вопросы, постараюсь вспомнить что и как.

 

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

Join the conversation

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

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

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

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

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

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

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

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