Проблема заключается в том, что Pyrogram метод
copy_media_group()
отправляет каждый медиафайл как отдельное сообщение, что приводит к отправке нескольких сообщений вместо одного с группой медиафайлов.
Для исправления этой проблемы вам нужно использовать метод
send_media_group()
вместо
copy_media_group()
. Метод
send_media_group()
отправляет все медиафайлы в одном сообщении, что дает возможность отправлять группу медиафайлов как единое сообщение.
Ниже приведен исправленный код:
import pyrogram
import config
channels = []
lm = []
with open('channels.txt','r') as f:
for channel in f.read().split('\n'):
channels.append(channel)
app = pyrogram.Client('my_account', config.api_id, config.api_hash)
@app.on_message()
def copy_to_my_channel(app, message):
print(message)
if str(message.chat.id) in channels:
if message.media_group_id is None:
app.copy_message(from_chat_id=message.chat.id, chat_id=config.my_channel, message_id=message.message_id)
else:
if message.media_group_id not in lm:
media_group = app.get_media_group(chat_id=message.chat.id, message_id=message.message_id)
app.send_media_group(chat_id=config.my_channel, media=media_group)
lm.append(message.media_group_id)
print('Пост опубликован')
app.run()
В этом коде мы использовали метод
get_media_group()
для получения группы медиафайлов из оригинального сообщения, а затем отправили ее в новый канал, используя метод
send_media_group()
.