Местоположение
Украина

Наибольший вклад в теги

Все теги (4)

Лучшие ответы пользователя

Все ответы (11)
  • Ошибка в боте, который отправляет комментарии.Что делать?

    Во первых не светите свой ID и Hash на форумах, это как логин и пароль от аккаунта)

    Ошибка у вас из-за того, что в цикле переменная msg это и есть сообщение чата. Нужно сделать так:
    print(f”Пропускаем уже обработанное message _id={msg.id}”)


    Для отладки в следующий раз можете делать вывод переменной в консоль, чтобы понять какие там есть поля и как к ним обращаться.
    Ответ написан
    Комментировать
  • Как отделить дату от даты и сделать его прописью?

    from datetime import datetime #импортируем нужное
    
    created = ...   #дата регистрации, взятая откуда-то ранее
    you_with_us = (datetime.now() - regdate).strftime(%d)
    #вычитаем из нынешней даты дату регистрации, форматируем, оставляя только дни
    Ответ написан
    2 комментария
  • Pyrogram bot: как отправить фото по айди?

    EntireMusic
    @EntireMusic Автор вопроса
    (:
    Всем большое спасибо за подсказки, особенно User . Проблема была как раз в фильтре. Нужно было искать photo и photo.file_id.
    Универсальный вариант - скачивать и отправлять фото, т.к. пересылка не будет работать из закрытых чатов. Вот такую функцию по-быстрому сообразил для загрузки фото.
    async def dl_last_photo(target):    #передаём в функцию ID или Username чата
        async for msg in app.get_chat_history(target, limit = 50, offset_id = -1):    #ищем в истории с конца, обрабатываем 50 сообщений
            if msg.photo:    #если есть фото
                print(msg.photo.file_id)    #в консоль выводим ID - не обязательно
                await app.download_media(msg.photo) #скачиваем фото из сообщения в стандартный каталог (папка_бота/downloads)


    По аналогии можно фильтровать и другие типы файлов. Так же можно менять папку, куда скачивается файл. И если вы уверены, что чат открыт и разрешена пересылка - можно и сразу переслать фото по ID куда нужно.
    Ответ написан
    Комментировать
  • Пишу тг бота для отправки комментариев на pyrogram. Выдаёт ошибку,что делать?

    В такой каше сложно разобраться. Но если я правильно понимаю, ты пытаешься проверить несуществующий атрибут:
    Выдаёт ошибку: if (msg.from_user is None and msg.forward_from_chat.id == public.id):
    AttributeError: ‘NoneType’ object has no attribute ‘I’d’

    Из твоего кода:
    if (msg.from_user is None) # если сообщение не имеет автора
    # и это репост из паблика (проверка по id)


    Это так не работает. Если нет автора, то такого атрибута нет вообще, эта часть не работает. Вот тебе пример на Pyrogram как из сообщения вытащить ID.
    any_sender_id = message.from_user.id if message.from_user else message.sender_chat.id #вытаскиваем ID
    if any_sender_id == public.id: #проверяем что это нужный паблик
        #дальше твоя логика

    Если сообщение "from_user", значит принимает его ID. Иначе - принимает ID чата/канала.

    этот же код чуть понятнее:
    any_sender_id = None    #объявляем переменную для хранения ID
    if message.from_user:    #если у нас есть параметр from_user
        any_sender_id = message.from_user.id    #присваеваем ID юзера
    else:    #иначе
        any_sender_id = message.sender_chat.id    #присваеваем ID канала или чата
    
    if any_sender_id == public.id:    #проверяем что это нужный паблик
        #дальше твоя логика
    Ответ написан
    Комментировать

Лучшие вопросы пользователя

Все вопросы (10)