Задать вопрос
  • Как отредактировать сообщение с картинками в группе Telegram через api bot?

    a777mp198
    @a777mp198
    Python developer
    (Ответ сгенерирован искусственным интеллектом!)
    Для редактирования сообщения с группой медиа-объектов в Telegram бот API предоставляет метод editMessageMedia. Он позволяет заменить все медиа-объекты в сообщении на новые.

    Если вам нужно добавить дополнительные медиа-объекты к уже существующим, вы можете сделать следующее:

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

    2. Отправьте новые медиа-объекты в группе sendMediaGroup с опцией disable_notification установленной в true. В ответе на этот запрос вы получите массив MediaGroup объектов, каждый из которых содержит идентификатор media_group_id, который связывает медиа-объекты в группе.

    3. Используйте метод editMessageMedia для замены всех медиа-объектов в сообщении на новые. Укажите media_group_id, который вы получили на шаге 2, в параметре media, чтобы связать новые медиа-объекты с уже существующими.

    Пример кода на PHP для добавления новых медиа-объектов к существующему сообщению с группой медиа-объектов:
    // Получить идентификатор сообщения, которое нужно отредактировать
    $message_id = 1234;
    
    // Отправить новые медиа-объекты в группе
    $response = $telegram->sendMediaGroup([
        'chat_id' => $chat_id,
        'media' => [
            [
                'type' => 'photo',
                'media' => 'http://example.com/new_photo1.jpg',
                'caption' => 'New photo caption 1',
                'disable_notification' => true,
            ],
            [
                'type' => 'photo',
                'media' => 'http://example.com/new_photo2.jpg',
                'caption' => 'New photo caption 2',
                'disable_notification' => true,
            ],
        ],
    ]);
    
    // Получить идентификатор группы медиа-объектов
    $media_group_id = $response[0]['media_group_id'];
    
    // Заменить все медиа-объекты в сообщении на новые
    $telegram->editMessageMedia([
        'chat_id' => $chat_id,
        'message_id' => $message_id,
        'media' => [
            [
                'type' => 'photo',
                'media' => 'http://example.com/existing_photo1.jpg',
                'caption' => 'Existing photo caption 1',
            ],
            [
                'type' => 'photo',
                'media' => 'http://example.com/existing_photo2.jpg',
                'caption' => 'Existing photo caption 2',
            ],
            [
                'type' => 'photo',
                'media' => 'http://example.com/new_photo1.jpg',
                'caption' => 'New photo
    Ответ написан
    Комментировать
  • Как посчитать количество одинаковых цифр в 4-х значном числе?

    a777mp198
    @a777mp198
    Python developer
    (Ответ сгенерирован искусственным интеллектом!)
    Вы можете решить эту задачу, преобразовав каждое число в строку, а затем использовать метод count() для подсчета количества вхождений каждой цифры. Затем можно проверить, есть ли у числа три одинаковых цифры, используя условие if. Например:
    num_1 = 1000
    num_2 = 2600
    
    for i in range(num_1, num_2 + 1):
        s = str(i)
        for c in s:
            if s.count(c) == 3:
                print(i)
                break

    Здесь мы проходимся по каждому числу i в диапазоне от num_1 до num_2, преобразуя его в строку s. Затем мы проходимся по каждой цифре c в строке s, и если c встречается в строке s три раза, мы выводим число i и переходим к следующему числу. Обратите внимание, что мы используем оператор break, чтобы выйти из цикла, когда мы находим число с тремя одинаковыми цифрами, потому что дальнейший поиск в этом числе бессмысленен.
    Ответ написан
    9 комментариев
  • Можно ли как-то повысить фпс?

    a777mp198
    @a777mp198
    Python developer
    (Ответ сгенерирован искусственным интеллектом!)
    Для повышения фпс в играх на Вашем ноутбуке, можно попробовать следующие рекомендации:

    1. Убедитесь, что у Вас установлены последние версии драйверов на все устройства, включая видеокарту, звуковую карту и сетевой адаптер. Вы можете найти их на сайте производителя вашего ноутбука или на сайте производителя компонентов.

    2. Проверьте настройки графики в игре. Уменьшите разрешение экрана, уменьшите уровень детализации, выключите эффекты, которые потребляют много ресурсов.

    3. Закройте все ненужные программы, которые потребляют ресурсы вашего компьютера. Например, браузеры, мессенджеры, антивирусы и т.д.

    4. Убедитесь, что в настройках питания вашего компьютера выбран режим "Высокая производительность".

    5. Если у Вас есть возможность, установите дополнительный модуль оперативной памяти (ОЗУ) для вашего ноутбука, чтобы увеличить общее количество ОЗУ до 16 ГБ. Это может помочь увеличить производительность в играх и сократить количество переключений оперативной памяти на жесткий диск.

    6. Если все вышеперечисленные действия не помогают, попробуйте установить специальные программы, которые могут помочь повысить производительность вашего компьютера в играх, например, Razer Cortex или MSI Afterburner.

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

    a777mp198
    @a777mp198
    Python developer
    Ваше решение близко к решению, но в нем есть несколько ошибок:
    1. Вы используете рекурсивный вызов функции solution вместо f, которую вы определили.
    2. Вы присваиваете res[key] дважды: один раз перед проверкой на instanceof Object, а затем в блоке условия.
    const f = (obj) => {
      const res = {};
    
      for (let key in obj) {
        const newKey = `${key}_upd`;
    
        if (Array.isArray(obj[key])) {
          res[newKey] = obj[key].map((el) => {
            return el instanceof Object ? f(el) : el;
          });
        } else {
          res[newKey] =
            obj[key] instanceof Object ? f(obj[key]) : obj[key];
        }
      }
    
      return res;
    };
    
    console.log(f(data));
    Ответ написан
  • Как вернуть русский язык в windows 10?

    a777mp198
    @a777mp198
    Python developer
    (Ответ сгенерирован искусственным интеллектом!)
    Для восстановления русского языка в Windows 10 вы можете следовать этим шагам:

    1. Нажмите правой кнопкой мыши на кнопке "Пуск" в левом нижнем углу экрана и выберите "Параметры".
    2. Нажмите на "Время и язык".
    3. Выберите "Регион и язык" в меню слева.
    4. Проверьте, что русский язык все еще есть в списке языков. Если его нет, нажмите на кнопку "Добавить язык" и выберите русский язык.
    5. Если русский язык уже в списке языков, нажмите на него и выберите "Параметры".
    6. Убедитесь, что установлен пакет языков для русского языка. Если нет, нажмите на кнопку "Скачать" и дождитесь завершения загрузки и установки пакета языков.
    7. Если все еще видите английский язык, выберите русский язык в меню "Предпочитаемые языки" и нажмите на него, чтобы сделать его основным языком системы.
    8. Перезагрузите компьютер, чтобы изменения вступили в силу.

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

    a777mp198
    @a777mp198
    Python developer
    (Ответ сгенерирован искусственным интеллектом!)
    Для того, чтобы настроить редирект на ту же динамическую страницу, вам необходимо определить маршрут (route) в Flask для каждой карточки. Когда пользователь нажимает на ссылку для перехода на другую карточку, вы должны перенаправлять его на соответствующий маршрут, передавая новый идентификатор карточки.
    from flask import Flask, render_template
    
    app = Flask(__name__)
    
    @app.route('/collections/collection-qua/product-qua/<id>')
    def product_details(id):
        # code to get details for product with given id
        # and render template with product details
        return render_template('product_details.html', product_id=id)

    В данном примере, когда пользователь переходит на страницу /collections/collection-qua/product-qua/QUA0001, Flask вызывает функцию product_details() и передает ей аргумент id со значением "QUA0001". Функция может использовать это значение для получения деталей о продукте с этим идентификатором и рендеринга шаблона с этими деталями.

    Для того, чтобы реализовать переход на другую карточку, вы можете использовать функцию redirect() из модуля flask:
    from flask import redirect, url_for
    
    @app.route('/collections/collection-qua/product-qua/<id>')
    def product_details(id):
        # code to get details for product with given id
        # and render template with product details
        return render_template('product_details.html', product_id=id)
    
    @app.route('/collections/collection-qua/product-qua/<id>/related')
    def related_product(id):
        # code to get details for related product with given id
        # and redirect to its product_details page
        return redirect(url_for('product_details', id=id))

    В данном примере, когда пользователь переходит на страницу /collections/collection-qua/product-qua/QUA0065/related, Flask вызывает функцию related_product() и передает ей аргумент id со значением "QUA0065". Функция затем использует функцию redirect() для перенаправления пользователя на страницу product_details для продукта с id="QUA0065".
    Ответ написан
  • Как правильно обработать колонки в датафрейме?

    a777mp198
    @a777mp198
    Python developer
    (Ответ сгенерирован искусственным интеллектом!)
    Для обработки колонок в датафрейме можно использовать методы библиотеки Pandas. Например, чтобы преобразовать числовые столбцы в строки и заменить точки на запятые, можно воспользоваться методом applymap и методом str.replace:
    import pandas as pd
    
    # пример данных
    data = {
        'date': ['2022-01-01', '2022-01-02', '2022-01-03'],
        'code': [100000000000000, 200000000000000, 300000000000000],
        'amount': [1000.50, 2000.75, 3000.0],
        'text': ['some text', 'more text', 'even more text']
    }
    df = pd.DataFrame(data)
    
    # преобразование числовых столбцов в строки с запятыми
    df[['amount', 'code']] = df[['amount', 'code']].applymap(lambda x: f'{x:,.2f}')
    
    # замена точек на запятые в столбце amount
    df['amount'] = df['amount'].str.replace('.', ',')
    
    # вывод результата
    print(df)

    Здесь метод applymap применяется к столбцам amount и code, чтобы заменить числа на строки с запятыми. Затем метод str.replace применяется только к столбцу amount, чтобы заменить точки на запятые. Все остальные столбцы остаются в исходном виде.

    Чтобы избежать научной записи в столбце code, можно преобразовать его в строку и затем заменить букву E на 0:
    # преобразование столбца code в строку и замена буквы E на 0
    df['code'] = df['code'].astype(str).str.replace('E', '0')
    
    # вывод результата
    print(df)

    Здесь метод astype применяется к столбцу code, чтобы преобразовать его в строку, а затем метод str.replace заменяет точки на запятые в строковом представлении столбца. Однако, в данном коде не учитывается возможность наличия в столбце символов, отличных от точек и цифр.
    Ответ написан
  • Как генерировать поочерёдные номера для заказов через Telegram-бота?

    a777mp198
    @a777mp198 Автор вопроса
    Python developer
    Чтобы реализовать данную задумку, необходимо вместо randint сделать запрос в БД, получить последнюю запись по id, и получить номер заказа у этой последней записи. Далее, прибавить к данному номеру += 1 и присвоить результат в виде номера к новому заказу. Отрывок из кода:
    cursor.execute('''SELECT order_number FROM orders WHERE id = (SELECT MAX(id) FROM orders);''')
    result = cursor.fetchone()[0]
    if result is None:
        result = 1
    else:
        result += 1
    order_number = result
    await state.update_data(order_number=order_number)
    Ответ написан
    Комментировать
  • Как вернуть старый ползунок громкости?

    a777mp198
    @a777mp198
    Python developer
    Боюсь, только откатившись на предыдущую версию ОС. Тоже недавно обновил Windows 11, но дизайн нового индикатора громкости не смущает.
    Ответ написан
    Комментировать
  • Как хранить информацию о пользователях телеграмм бота?

    a777mp198
    @a777mp198
    Python developer
    PostgreSQL отличная база данных, сколько использую её для работы с телеграм-ботами - проблем не возникает.
    Ответ написан
    Комментировать
  • Ошибка в коде телеграм бота при подключении к Postgresql?

    a777mp198
    @a777mp198
    Python developer
    Попробуйте заменить user_id = message.chat.id на user_id = message.from_user.id
    в функции main_menu. И если таблица создалась, можно убрать из кода
    cur.execute("""CREATE TABLE IF NOT EXISTS log_id(us_id INTEGER)""")
        base.commit()

    И лучше значение стобца us_id INTEGER поменять на BIGINT, так как некоторые user_id могут быть большими, и соответственно БД может их не принять в данный столбец.
    Так же, я бы рекомендовал открывать соединение с БД в каждой функции где она используется, а не глобально.
    async def main_menu (message):
        base = ps.connect(DATABASE_URL, sslmode='require')
        cur = base.cursor()
        user_id = message.from_user.id
        cur.execute("SELECT * FROM log_id WHERE us_id = %s;", (user_id, ))
        data = cur.fetchone()
        if data is None:
            cur.execute("INSERT INTO log_id (us_id) VALUES (%s);", (user_id, ))
            base.commit()
            cur.close()
        else:
            base.commit()
            cur.close()
        await bot.send_message(message.from_user.id, "Привет, {}!".format(message.from_user.first_name))
        await bot.send_message(message.from_user.id, "Выбери категорию  \U00002B07",
                               reply_markup=mainmenu_kb)
    Ответ написан
    Комментировать
  • Как осуществлять поиск по таблице?

    a777mp198
    @a777mp198 Автор вопроса
    Python developer
    Спасибо за ответ, Akina, igor6130, Elvis.
    cursor.execute("SELECT identification, client_number, client_name, comment FROM users INNER JOIN callback ON post_id = department WHERE status='no'")
    Ответ написан
    Комментировать
  • Как отправлять гиперссылки вместе с обычным текстом в Telebot?

    a777mp198
    @a777mp198
    Python developer
    Если я Вас правильно понял, то скорее всего Вы хотите видеть следующее:
    bot.send_message(message.chat.id, "Здравствуйте. Вот ссылка на <a href='https://www.google.com/'>гугл</a>.", parse_mode='HTML')
    Ответ написан
    1 комментарий
  • Как скопировать сообщение пользователя в телеграм боте?

    a777mp198
    @a777mp198
    Python developer
    Если Вам необходимо получить сообщение пользователя, которое он напишет после определенного сообщения бота - воспользуйтесь машиной состояний.
    from aiogram.types import Message
    from aiogram.dispatcher import FSMContext
    from aiogram.dispatcher.filters.state import StatesGroup, State
    
    class MessageUser(StatesGroup):
        mes = State()
    
    
    @dp.message_handler(commands=['start', 'help'])
    async def welcome(message: Message, state: FSMContext):
        await message.answer('Приветствую! Напишите своё сообщение, а я сохраню его.')
        await MessageUser.mes.set()
    
    @dp.message_handler(state=MessageUser.mes)
    async def save_message_user(message: Message, state: FSMContext):
        await state.update_data(mes=message.text)
        data = await state.get_data()
    # теперь в объекте data['mes'] хранится сообщение пользователя, можете совершать с ним любые действия.
        await state.finish()
    Ответ написан
    Комментировать
  • Как убрать кавычки и запятые из SQLite ответа?

    a777mp198
    @a777mp198
    Python developer
    Можно ещё упростить ответ Александр Х
    result = cur.fetchone()[0]
    print(result)
    Ответ написан
    Комментировать
  • Как добавить emoji в TelegramBot python?

    a777mp198
    @a777mp198
    Python developer
    Есть вариант ещё проще. Открываешь свой Telegram Desktop, открываешь Save Massage’s (или любой другой чат, куда можешь написать), кидаешь туда любой один emoji одним сообщением, который хочешь добавить в бота. Затем просто нажимаешь ПКМ на emoji, далее “copy”. И всё, в боте просто Ctrl + V.
    Ответ написан
    Комментировать