• Как достать user_id из ссылки на профиль?

    gnifajio
    @gnifajio
    Совершенствуюсь каждый день
    Чтобы достать user_id из ссылки, содержащейся в переменной mention, нужно спарсить строку с помощью регулярных выражений.

    Вот пример кода, который можете использовать:
    import re
    
    # Используем регулярное выражение, чтобы найти user_id в ссылке
    match = re.search(r'tg://user\?id=(\d+)', mention)
    
    # Если ссылка была найдена
    if match:
        # Извлекаем user_id из ссылки
        user_id = int(match.group(1))
        print(user_id)
    Ответ написан
    Комментировать
  • Telethon выдает ошибку, что не может найти entity, в чем проблема?

    gnifajio
    @gnifajio
    Совершенствуюсь каждый день
    Ошибка "Cannot find any entity corresponding to "-12345"" означает, что указанное число (-12345) не соответствует ни одной сущности (entity) в Telegram. Сущность (entity) в Telethon это любой объект, с которым можно взаимодействовать через API, например, пользователь, группа, канал и т.д.

    Чтобы решить эту проблему, нужно убедиться, что вы передаете правильный идентификатор сущности в метод get_participants.
    Ответ написан
    Комментировать
  • Как запускать python файл через прокси?

    gnifajio
    @gnifajio
    Совершенствуюсь каждый день
    Да, можно передать параметры прокси через системные аргументы sys.argv.

    Например, в начале скрипта можно добавить следующий код:

    import sys
    
    # Проверяем, есть ли у нас два аргумента - IP адрес и порт прокси
    if len(sys.argv) != 3:
        print("Неправильное количество аргументов")
        sys.exit(1)
    
    # Извлекаем IP адрес и порт из аргументов
    proxy_ip = sys.argv[1]
    proxy_port = sys.argv[2]


    Теперь вы можете использовать полученные данные в своем коде.
    Ответ написан
  • Как првильно написать get запрос?

    gnifajio
    @gnifajio
    Совершенствуюсь каждый день
    Ошибка 409 означает, что на сервере произошло конфликт при совершении запроса. Это может быть связано с тем, что вы пытаетесь выполнить действие, которое недопустимо для текущего состояния ресурса. Например, вы можете пытаться создать ресурс, который уже существует.

    Чтобы узнать, почему вы получили ошибку 409, вы можете прочитать ответ сервера, который содержит более подробную информацию об ошибке. Вы можете это сделать, используя свойство response.text. Например:

    import requests
    
    response = requests.get('my_url', auth=('Web', '12345678'))
    
    if response.status_code == 409:
        print(response.text)


    Кроме того, убедитесь, что вы используете правильный URL и параметры аутентификации.
    Ответ написан
    Комментировать
  • Как конвертировать channel_id в ссылку или юзернейм? Телеграм?

    gnifajio
    @gnifajio
    Совершенствуюсь каждый день
    Чтобы получить юзернейм канала из channel_id, вы можете воспользоваться методом get_entity класса TelegramClient. Этот метод принимает channel_id и возвращает объект типа Channel, у которого есть свойство username.

    Вот пример кода, который получает юзернейм канала:

    from telethon import TelegramClient
    
    # Инициализируем клиент
    client = TelegramClient('session_name', api_id, api_hash)
    
    # Получаем канал по его channel_id
    channel = client.get_entity(channel_id)
    
    # Выводим юзернейм канала
    print(channel.username)

    Чтобы получить ссылку на канал, вы можете сконструировать ее самостоятельно, используя юзернейм канала. Например, так:
    link = f't.me/{channel.username}'
    После этого в переменной link будет храниться ссылка на канал вида t.me/username. Вы можете использовать ее для перехода на канал в телеграме.
    Ответ написан
    2 комментария
  • Задан массив состоящий из 15 элементов вещественного типа определить количество элементов значения которых больше первого элемента?

    gnifajio
    @gnifajio
    Совершенствуюсь каждый день
    Вот пример того, как это можно сделать:
    arr = [1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9, 10.1, 11.1, 12.2, 13.3, 14.4, 15.5]
    
    # Сохраняем значение первого элемента в переменную
    first_element = arr[0]
    
    # Инициализируем счетчик количества элементов
    count = 0
    
    # Перебираем элементы массива
    for element in arr:
        # Если текущий элемент больше первого элемента, увеличиваем счетчик
        if element > first_element:
            count += 1
    
    # Выводим результат
    print(f'Количество элементов, значения которых больше первого элемента: {count}')
    Ответ написан
    Комментировать
  • Как получить messageID отправленого сообщения в телеграм?

    gnifajio
    @gnifajio
    Совершенствуюсь каждый день
    Чтобы получить messageID отправленного сообщения в Telegram с помощью библиотеки pyrogram, нужно использовать метод send_message и передать ему чат и текст сообщения. Этот метод возвращает объект Message, у которого есть атрибут message_id, содержащий ID сообщения.

    Пример:
    import pyrogram
    
    # Создаем клиент pyrogram
    client = pyrogram.Client("my_account")
    
    # Отправляем сообщение
    message = client.send_message(chat_id=12345678, text="Hello, world!")
    message_id = message.message_id
    Ответ написан
    Комментировать
  • Как обработать событие SkypeCallEvent в Python SkPy?

    gnifajio
    @gnifajio
    Совершенствуюсь каждый день
    Чтобы обработать событие SkypeCallEvent в Python с помощью SkPy, вам следует добавить обработчик этого события в своей кастомной реализации класса SkypeEventLoop. Обработчик события должен называться onSkypeCallEvent. Например:
    from skpy import SkypeEventLoop, SkypeCallEvent
    
    
    class MySkype(SkypeEventLoop):
    
        def onSkypeCallEvent(self, event: SkypeCallEvent):
            # Обработка события звонка
            if event.type == "INCOMING":
                # Обработка входящего звонка
                pass
            elif event.type == "OUTGOING":
                # Обработка исходящего звонка
                pass
    Ответ написан
    Комментировать
  • Проблема с машиной состояний в aiogram. Как это можно исправить?

    gnifajio
    @gnifajio
    Совершенствуюсь каждый день
    Чтобы избежать этой проблемы, вы можете пометить каждую команду, которая вызывает машину состояний, с помощью @dp.message_handler(state=None). Таким образом, если пользователь вызывает эту команду, машина состояний будет начинаться сначала, а не продолжать с текущего состояния.
    Ответ написан
    Комментировать
  • [aiogram] Как получить упомянутого пользователя?

    gnifajio
    @gnifajio
    Совершенствуюсь каждый день
    Да, это возможно. В объекте Message есть атрибут entities, который содержит список сущностей, найденных в тексте сообщения. Сущности могут быть разных типов, например, хештеги, ссылки и имена пользователей. Чтобы получить упомянутого пользователя, нужно обработать список сущностей, найти там сущность типа MessageEntityMentionName и взять из нее user_id.
    Ответ написан
  • Почему при запуске скрипта telethon завершаются все сессии?

    gnifajio
    @gnifajio
    Совершенствуюсь каждый день
    Проблема может быть в том, что вы неправильно используете файл сессии. Сессия хранится в файле на компьютере, а не в телеграме. При каждом запуске скрипта вы должны указывать файл сессии с помощью аргумента session_name. Если вы хотите использовать тот же файл сессии, что и в предыдущем запуске, укажите тот же самый аргумент. Если вы хотите создать новый файл сессии, укажите новое имя файла.
    Ответ написан
  • Как вернуть публичный паблик в поиск в Telegram после "теневого бана"?

    gnifajio
    @gnifajio
    Совершенствуюсь каждый день
    Если ваш публичный паблик был удален из глобального поиска в Telegram (так называемый "теневой бан"), то, увы, нет никакого способа вернуть его обратно. Теневой бан в Telegram - это прямое решение специалистов поддержки, которое не объясняется и не обсуждается. Обычно такое решение принимается, если паблик нарушает правила Telegram.
    Ответ написан
    Комментировать
  • Как сообщение пользователя положить в переменную бот aiogram?

    gnifajio
    @gnifajio
    Совершенствуюсь каждый день
    ля того, чтобы сохранить сообщение пользователя в переменную в цикле, вы можете использовать декоратор @dp.message_handler(), который позволяет обрабатывать сообщения в цикле. Например, так:
    from aiogram import Dispatcher, types
    
    @dp.message_handler()
    async def handle_message(message: types.Message):
        # Здесь можете проверить, что пользователь является админом
        if user_is_admin(message.from_user.id):
            # Сохраняем сообщение в переменную
            message_text = message.text
            # Отправляем сообщение в канал
            await bot.send_message(channel_id, message_text)

    В этом примере handle_message() функция будет вызываться каждый раз, когда пользователь отправит сообщение боту. Внутри функции вы можете проверить, что пользователь является админом, и сохранить сообщение в переменную message_text.
    Ответ написан
  • Как сделать несколько каналов python pyrogram?

    gnifajio
    @gnifajio
    Совершенствуюсь каждый день
    В Pyrogram есть возможность подписаться на сообщения из нескольких каналов одновременно, чтобы получать уведомления о новых сообщениях. Для этого нужно использовать функцию add_channel_handler из Client, которая принимает на вход калбек-функцию и идентификаторы каналов, на которые нужно подписаться.

    Вот пример кода, который подписывается на сообщения из каналов с идентификаторами 'test' и 'test2':

    import pyrogram
    
    app = pyrogram.Client("my_account")
    
    def channel_handler(client, message):
        print(f"New message from channel {message.chat.title}: {message.text}")
    
    app.add_channel_handler(channel_handler, "test", "test2")
    
    app.run()


    Калбек-функция channel_handler будет вызываться каждый раз, когда появляется новое сообщение в одном из указанных каналов. В функции можно обрабатывать сообщения и выполнять нужные действия.
    Ответ написан
    Комментировать
  • При отправке неправильного значения он пишет "Что введите корректные данные" Вводишь данные и не чего не происходит в чем проблема?

    gnifajio
    @gnifajio
    Совершенствуюсь каждый день
    Ваш вопрос не корректен, но я постараюсь ответить на него:

    Возможно, проблема заключается в том, что в функции currency вы не указываете, что нужно делать, если полученное сообщение не равно 'Калькулятор цен'. В этом случае функция вызывает саму себя снова, но уже с новым сообщением, которое, вероятно, также не равно 'Калькулятор цен'. И так происходит бесконечное количество раз.
    Ответ написан
    Комментировать
  • Как правильно проверить на Null\NaT поле фраймворка pandas и записать его в базу postgres?

    gnifajio
    @gnifajio
    Совершенствуюсь каждый день
    В pandas можно использовать функцию isnull для проверки поля на наличие значения NaN (Not a Number) или NaT (Not a Time). Например, чтобы проверить поле update_dt на наличие значения NaT, можно использовать следующий код:
    df['update_dt'].isnull()
    Этот код вернет булевый сериес, где True указывает на то, что в соответствующей ячейке поля update_dt стоит значение NaT, а False - значение присутствует.

    Чтобы записать эти данные в базу данных, можно использовать конструкцию INSERT INTO ... SELECT ... FROM с вложенным запросом. Вот пример такого запроса, который записывает в таблицу table_name все записи из df, где поле update_dt не равно NaT:
    INSERT INTO table_name (column1, column2, ..., update_dt)
    SELECT column1, column2, ..., update_dt
    FROM df
    WHERE df['update_dt'].isnull() = False
    Ответ написан
    Комментировать
  • Срок действия ссылки истёк телеграм, что делать?

    gnifajio
    @gnifajio
    Совершенствуюсь каждый день
    Когда тебя выганяют из группы, ты попадаешь в черный список, поэтому не можешь вступить в группу снова.
    Можешь передать администратору чата, что нужно зайти в "Управление группой" -> "Разрешения" -> "Черный список", найти нужного пользователя и нажать кнопку "Удалить".
    Ответ написан
    Комментировать
  • Зачем каждый телеграм бот требует создавать своего телеграм бота?

    gnifajio
    @gnifajio
    Совершенствуюсь каждый день
    Можно, но тогда ты не сможешь персонализировать бота, например указать в его описании ссылку на какой-нибудь канал или другую информацию. Не сможешь грамотно настроить сообщения, которые получает пользователь при заходе в бота, не сможешь установить боту аватар и т.д.
    Надеюсь суть ясна.
    Ответ написан
  • Можно ли отправить сообщение пользователю от имени бота, используя только username?

    gnifajio
    @gnifajio
    Совершенствуюсь каждый день
    Нет, нельзя. Но вы можете сохранять username вместе с telegram_id в базе данных, а при надобности извлекать эти данные.
    Ответ написан
    Комментировать
  • Как написать бот для Одноклассников на Python?

    gnifajio
    @gnifajio
    Совершенствуюсь каждый день
    Чтобы написать бота для Одноклассников на Python, вам понадобится использовать библиотеку okpy, которая является официальным API для разработки ботов в Одноклассниках.

    Для того чтобы установить библиотеку okpy, выполните следующую команду:

    pip install okpy

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

    import okpy

    Далее, чтобы авторизоваться в Одноклассниках, вам нужно будет создать экземпляр класса Client и вызвать метод auth(), передав в него логин и пароль:

    client = okpy.Client()
    client.auth('login', 'password')


    После успешной авторизации вы сможете вызывать различные методы API Одноклассников, чтобы отправлять сообщения, получать информацию о пользователях и т. д.

    Вот пример простого бота на Python, который использует библиотеку okpy для авторизации в Одноклассниках и отправки сообщений:

    import okpy
    
    # авторизуемся в Одноклассниках
    client = okpy.Client()
    client.auth('login', 'password')
    
    # отправляем сообщение в чат
    client.messages.send('chat_id', 'Привет, я бот!')
    Ответ написан
    1 комментарий