Ответы пользователя по тегу Telegram
  • Как создавать сторис в Telegram?

    Laiwers
    @Laiwers
    Python, Telegram, Parsing
    Я могу предложить автоматизировать процесс выкладывания историй с помощью Python библиотеки - Telethon.
    В документации есть все возможные методы работы с историями, даже есть примеры.
    У меня нет возможности показать работу методов из-за отсутствия телеграм премиума, но могу показать сокращённый пример из документации метода SendStoryRequest:
    from telethon.sync import TelegramClient
    from telethon import functions, types
    
    with TelegramClient(name, api_id, api_hash) as client:
        result = client(functions.stories.SendStoryRequest(
            peer='username',
            media=types.InputMediaUploadedPhoto(
                file=client.upload_file('/path/to/file.jpg'),
                spoiler=True,
                stickers=[types.InputDocument(
                    id=-12398745604826,
                    access_hash=-12398745604826,
                    file_reference=b'arbitrary\x7f data \xfa here'
                )],
                ttl_seconds=42
            ),
            privacy_rules=[types.InputPrivacyValueAllowContacts()]
        )
        print(result.stringify())

    Достаточно легко разобраться, за что отвечает каждый параметр по его названию. Я привёл пример не полностью, потому что методу необходимы только первые три параметра (peer, media, privacy_rules), далее по желанию.
    Ответ написан
    Комментировать
  • Узнать дату регистрации в телеграм боте?

    Laiwers
    @Laiwers
    Python, Telegram, Parsing
    Без БД это сделать никак не получиться. У любого бота должна быть БД, с ней открывается больше возможностей.

    Вам нужно в момент отправки пользователем /start проверять, есть ли он в БД. Если нет, то получаем время в данный момент и сохраняем дату и время в БД.
    Время можно определить двумя способами:
    1. Можно с помощью ключа date, он присутствует у каждого Message и не только. Но имейте в виду, что дата будет возвращаться по времени Unix.
    2. Также можно с помощью встроенных функций в ЯП (например в Python с помощью datetime).

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

    Laiwers
    @Laiwers
    Python, Telegram, Parsing
    Покопавшись в документации и коде Pyrogram, стало понятно, что это тот случай, когда ошибка возникает не потому что что-то случилось, а потому что всё хорошо. Даже если перевести то, что написано в ошибке становится понятно, что "Запрос на присоединение к этому чату или каналу был успешно отправлен".
    Единственное решение - использовать try except. В Pyrogram кроме исключения InviteRequestSent, ещё есть исключение InviteHashExpired, которое вызывается, когда ссылка уже не действительна.
    Пример кода:
    from pyrogram.errors.exceptions.bad_request_400 import InviteRequestSent, InviteHashExpired
    
    ...
    
    try: 
        await app.join_chat("https://t.me/+xxxxxxxxxxxxx")
    except InviteRequestSent:
        print("Запрос отправлен!")
    except InviteHashExpired:
        print("Ссылка не действительна!")
    Ответ написан
    Комментировать
  • Есть ли в pyrogram функции, которых нет в telethon?

    Laiwers
    @Laiwers
    Python, Telegram, Parsing
    Все библиотеки, которые работают с юзерботами, обращаются к Telegram API. То есть все они имеют одинаковые методы для работы с Телеграмом, но отличаються синтаксисом и т.п.
    Проблема заключается в том, что какие-то библиотеки последний раз обновлялись давно. Вот например последнее обновление Pyrogram было аж 10 месяцев назад (Github), а вот Telethon обновляется постоянно (Github).
    Для ответа на вопрос что лучше, я потестил Telethon и понял, что в нём очень сложно разобраться. Сначала я думал, что в документации ничего не сказано про методы, но потом нашёл Telethon API с примерами кода и разобраться было чуть легче.
    Но проблем было гораздо больше с установкой. Чтобы установить Telethon нужно сначало установить wheel. Потом после ввода номера телефона и создания файла сессии, у меня отсоединился аккаунт от других устройств (решение).
    И последнее замечание - к сессиям. Во-первых сессия, созданная Pyrogram, не может использоваться в Telethon и наоборот. Во-вторых Pyrogram создаст файл один раз, и потом можно будет обращаться только по имени этого файла, а Telethon всегда нужны будут api_id, api_hash, device_model, system_version и app_version.
    Перед нами выбор: простой синтаксис и документация, но не обновлённый - Pyrogram или пройти через несколько проблем с началом работы, но содержащий новые методы - Telethon. Ответ простой. Всегда используй Pyrogram, но если будут нужны новые методы, которых нет в Pyrogram, то используй Telethon.
    Ответ написан
    Комментировать
  • Как работать с папками telegram через Pyrogram?

    Laiwers
    @Laiwers
    Python, Telegram, Parsing
    Надо пользоваться документацией не только библиотек, но ещё и API Телеграма, когда работаете с клиентом Телеграма. Вот все методы для работы с папками в офицальной документации: *тык*.
    Если попробуете поискать методы из документации API Телеграм в документации Pyrogram, то они там будут: *тык*.
    Вот например метод для получения всех папок: GetDialogFilters. С помощью этого метода будет возвращён список с классами DialogFilter и затем уже доставайте нужные вам айдишники чатов.
    Так что учитесь пользоваться разными документациями.
    Ответ написан
    Комментировать