Задать вопрос
  • Как настроить вентиляторы RTX 3080TI в Linux mint?

    metalexs
    @metalexs Автор вопроса
    Сегодня прилетело обновление на карту и все починилось само собой.
    Ответ написан
    Комментировать
  • Как получить какой-нибудь хеш от значения переменной (dict)?

    metalexs
    @metalexs
    Для того чтобы получить хеш-значение от словаря (dict), вы можете использовать hashlib из стандартной библиотеки Python. Один из популярных и безопасных алгоритмов хеширования — это SHA-256.

    Сначала, нужно сериализовать словарь в строковое представление (например, в формат JSON), а затем получить хеш этой строки.
    import hashlib
    import json
    
    def dict_hash(d):
        serialized_data = json.dumps(d, sort_keys=True).encode()
        return hashlib.sha256(serialized_data).hexdigest()
    
    d1 = {"a": 1}
    d2 = {"a": 1}
    
    hash1 = dict_hash(d1)
    hash2 = dict_hash(d2)
    
    print(hash1 == hash2)  # Вернет True, потому что содержимое словарей идентично

    Этот метод позволяет получить уникальное строковое представление для каждого уникального словаря. По сути, вы можете сохранить это значение хеша и проверять его через 10 минут. Если хеши совпадают, то содержимое словарей также совпадает.

    Обратите внимание, что в этом методе используется sort_keys=True при сериализации в JSON. Это делается для гарантии того, что порядок ключей в словаре не влияет на результат хеширования. Если порядок ключей может изменяться, но при этом словари остаются идентичными, то без сортировки ключей у вас могут получаться разные хеш-значения для идентичных словарей.
    Ответ написан
  • Как восстановить аккаунт telegram без номера?

    metalexs
    @metalexs
    Если файл сессии не остался после авторизации с данными из my.telegram.org, то никак.
    Ответ написан
    Комментировать
  • Не могу понять почему выводит ошибка use_context если я его уже прописал?

    metalexs
    @metalexs
    Ошибки, которые вы получаете, могут быть связаны с тем, что ваша версия библиотеки python-telegram-bot устарела или, наоборот, слишком новая по отношению к коду, который вы используете.

    В более новых версиях python-telegram-bot, параметр use_context является обязательным и уже не нуждается в явном указании, так как по умолчанию use_context=True. Следовательно, если вы используете более новую версию, вам не нужно передавать use_context=True при создании объекта Updater.

    Касательно ошибки с update_queue, этот параметр больше не используется в конструкторе Updater в более новых версиях библиотеки. Опять же, если у вас новая версия, вам не нужно явно указывать update_queue.

    Попробуйте следующее:

    Удалите параметры use_context и update_queue:
    updater = Updater("Token")

    Если это не работает, проверьте версию библиотеки, которую вы используете:
    pip show python-telegram-bot

    Если версия ниже 12.0, обновите библиотеку:
    pip install python-telegram-bot --upgrade

    Также, убедитесь, что у вас правильно настроены обработчики, и они соответствуют версии библиотеки. Например, в новых версиях filters.text и filters.command должны быть вызваны как методы:
    dp.add_handler(MessageHandler(Filters.text() & ~Filters.command, answer_questions))


    Если после всех этих шагов у вас по-прежнему возникают проблемы, вам нужно будет проверить, соответствует ли ваш код версии библиотеки python-telegram-bot, которую вы используете, и возможно, обновить ваш код.
    Ответ написан
  • Как через Telethon переслать сообщение от отправителя в группу?

    metalexs
    @metalexs
    В Telethon есть метод forward_messages, который позволяет пересылать сообщения так, чтобы было видно, от кого они пришли. Основной синтаксис таков:
    await client.forward_messages(entity, messages, from_peer)

    • entity - куда вы хотите переслать сообщение (например, ID чата или группы)
    • messages - сообщения, которые вы хотите переслать (например, ID сообщения)
    • from_peer - откуда пересылать сообщение (необязательный параметр)

    Ваш пример уже содержит вызов этого метода, но кажется, что forward_to является списком. Попробуйте перебрать каждый чат в списке и переслать сообщение отдельно:

    async def handler(event: NewMessage.Event):
        phone = get_session_name(event.client)
        with DB() as db:
            autoresponder_message = db.get_autoresponder_text(phone)
        try:
            await event.reply(autoresponder_message)
            for chat in forward_to:
                print(chat)
                await event.client.forward_messages(chat, event.message)
        except Exception as e:
            logger.info(f"Ошибка при автоответчике: {e}")
        logger.info(f"Аккаунт {phone} получил сообщение в лс")

    Обратите внимание, что я изменил event.client.forward_messages(forward_to, event.message) на await event.client.forward_messages(chat, event.message), так как forward_messages должен быть вызван для каждого чата отдельно. Кроме того, я добавил {e} к строке логирования ошибки, чтобы было видно детали ошибки.
    Ответ написан
    Комментировать
  • Как менять некоторую информацию на сайте через Telegram бота?

    metalexs
    @metalexs
    Нужно иметь доступ к базе и через бота реализовать запрос в БД.
    Ответ написан
    Комментировать
  • Поможет ли переименование публичного имени группы телеграм от ботов?

    metalexs
    @metalexs
    Смотря как у них таргетинг настроен. Но это не выход.
    Ответ написан
    Комментировать
  • Как отвечать на конкретное сообщения пользователю?

    metalexs
    @metalexs
    Это самый простой пример. Если кто-то боту напишет "привет" он ответит "и тебе не хворать". На базе этого можно сделать и для любого чата.

    import telebot
    
    bot = telebot.TeleBot("API")
    
    @bot.message_handler(commands=['start'])
    
    @bot.message_handler()
    def start(message):
        if message.text == "привет":
            bot.send_message(message.chat.id, "и тебе не хворать")
    
    bot.polling(none_stop=True)
    Ответ написан
    Комментировать
  • Как добавить пользователя в группу тг имея его никнейм?

    metalexs
    @metalexs
    С помощью библиотеки pyrogram можно.

    # Add one member to a group or channel
    await app.add_chat_members(chat_id, user_id)
    
    # Add multiple members to a group or channel
    await app.add_chat_members(chat_id, [user_id1, user_id2, user_id3])
    
    # Change forward_limit (for basic groups only)
    await app.add_chat_members(chat_id, user_id, forward_limit=25)
    Ответ написан
    Комментировать