Загрузка...

Как исправить ебучий код

Тема в разделе Python создана пользователем cuttiexd Вчера, в 02:39. 101 просмотр

Загрузка...
  1. cuttiexd
    cuttiexd Автор темы Вчера, в 02:39 0 24 фев 2022
    Проблема в граббере постов тг, посты криво отправляются если в посте больше одной фотографии - сначала кидается пост с первой фотографией из альбома и последующие посты с оставшимися фотографиями, происходит это когда в канал "откуда" пересылают пост. Также не сохраняется форматирование. Проблему эту я уже решал, но не помню как, прошу помощи у форумчан

    from telethon import TelegramClient, events
    from telethon import errors
    import asyncio
    import re
    # ----
    api_id = 6118138
    api_hash = "adc8s354e5243aacaasddf569567b3be7c"
    # ----
    channels = '@' # откуда
    my_channel = '@' # куда
    # -----
    KEYS = {
    "": '',
    "": '',
    "": "",
    "": "",
    "": "",
    r"https://\S+": "",
    r"http://\S+": "",
    "": ""
    }
    # ----
    Bad_Keys = ['']
    # ----
    tags = ''
    # ----
    with TelegramClient('myApp13', api_id, api_hash) as client:
    print("~Activated~")

    Client.on(events.NewMessage(chats=channels))
    async def Messages(event):
    if not [element for element in Bad_Keys
    if event.raw_text.lower().__contains__(element)]:
    text = event.raw_text
    for i in KEYS:
    text = re.sub(i, KEYS, text)
    if not event.grouped_id\
    and not event.message.forward:
    try:
    await client.send_message(
    entity=my_channel,
    file=event.message.media,
    message=text + tags,
    parse_mode='md',
    link_preview=False)
    except errors.FloodWaitError as e:
    print(f'[!] Ошибка флуда ждем: {e.seconds} секунд')
    await asyncio.sleep(e.seconds)
    except Exception as e:
    print('[!] Ошибка', e)
    elif event.message.text and not event.message.media\
    and not event.message.forward\
    and not event.grouped_id:
    try:
    await client.send_message(
    entity=my_channel,
    message=text + tags,
    parse_mode='md',
    link_preview=False)
    except errors.FloodWaitError as e:
    print(f'[!] Ошибка флуда ждем: {e.seconds} секунд')
    await asyncio.sleep(e.seconds)
    except Exception as e:
    print('[!] Ошибка', e)
    elif event.message.forward:
    try:
    await event.message.forward_to(my_channel)
    except errors.FloodWaitError as e:
    print(f'[!] Ошибка флуда ждем: {e.seconds} секунд')
    except Exception as e:
    print('[!] Ошибка', e)

    Client.on(events.Album(chats=channels))
    async def Album(event):
    text = event.original_update.message.message
    print(text)
    if not [element for element in Bad_Keys
    if text.lower().__contains__(element)]:
    for i in KEYS:
    text = re.sub(i, KEYS, text)
    try:
    await client.send_message(
    entity=my_channel,
    file=event.messages,
    message=text + tags,
    parse_mode='md',
    link_preview=False)
    except errors.FloodWaitError as e:
    print(f'[!] Ошибка флуда ждем: {e.seconds} секунд')
    await asyncio.sleep(e.seconds)
    except Exception as e:
    print('[!] Ошибка', e)

    client.run_until_disconnected()
     
    Вчера, в 02:39 Изменено
  2. Rendel842
    from telethon import TelegramClient, events
    from telethon import errors
    import asyncio
    import re

    # ----
    api_id = 6118138
    api_hash = "adc8s354e5243aacaasddf569567b3be7c"
    # ----
    channels = '@' # откуда
    my_channel = '@' # куда
    # -----
    KEYS = {
    "": '',
    "": '',
    "": "",
    "": "",
    "": "",
    r"https://\S+": "",
    r"http://\S+": "",
    "": ""
    }
    # ----
    Bad_Keys = ['']
    # ----
    tags = ''
    # ----

    client = TelegramClient('myApp13', api_id, api_hash)

    Client.on(events.NewMessage(chats=channels))
    async def Messages(event):
    if not [element for element in Bad_Keys if element in event.raw_text.lower()]:
    text = event.raw_text

    for i in KEYS:
    text = re.sub(i, KEYS, text)

    # Обрабатываем только если это не часть альбома (grouped_id)
    if not event.grouped_id and not event.message.forwards:
    try:
    if event.message.media:
    await client.send_message(
    entity=my_channel,
    file=event.message.media,
    message=text + tags,
    parse_mode='md',
    link_preview=False
    )
    else:
    await client.send_message(
    entity=my_channel,
    message=text + tags,
    parse_mode='md',
    link_preview=False
    )
    except errors.FloodWaitError as e:
    print(f'[!] Ошибка флуда ждем: {e.seconds} секунд')
    await asyncio.sleep(e.seconds)
    except Exception as e:
    print('[!] Ошибка', e)
    # Обрабатываем пересланные сообщения
    elif event.message.forwards:
    try:
    await event.message.forward_to(my_channel)
    except errors.FloodWaitError as e:
    print(f'[!] Ошибка флуда ждем: {e.seconds} секунд')
    await asyncio.sleep(e.seconds)
    except Exception as e:
    print('[!] Ошибка', e)

    Client.on(events.Album(chats=channels))
    async def Album(event):
    # Получаем текст из первого сообщения в альбоме
    text = event.messages[0].message if event.messages and event.messages[0].message else ""

    if not [element for element in Bad_Keys if element in text.lower()]:
    for i in KEYS:
    text = re.sub(i, KEYS, text)

    try:
    # Отправляем весь альбом вместе
    await client.send_message(
    entity=my_channel,
    file=event.messages, # Все медиафайлы из альбома
    message=text + tags,
    parse_mode='md',
    link_preview=False
    )
    except errors.FloodWaitError as e:
    print(f'[!] Ошибка флуда ждем: {e.seconds} секунд')
    await asyncio.sleep(e.seconds)
    except Exception as e:
    print('[!] Ошибка', e)

    with client:
    client.run_until_disconnected()
     
  3. Falley
    Falley Вчера, в 11:38 Разработка софта https://lolz.live/threads/7325736/ 1199 28 авг 2021
    тебе надо чекать является ли сообщение медиа группой, если это так, то собирать все фотки из этой медиа группы с помощью каждой отработки хендлера(тг так устроен, что каждая медиа обрабатывается как отдельное сообщение). Попробуй какую-то общую переменную сделать или что-то типа того и собирать туда все фотки, чтобы потом собрать на пересылке в одну медиа группу и отправить разом
     
Top
JavaScript error: