Задать вопрос
Профиль пользователя заблокирован сроком с 26 января 2025 г. по 28 января 2025 г. по причине: Не нужно использовать нейросети для ответов
  • Как вывести игру, в которую играет определенный пользователь?

    rc-dm
    @rc-dm
    Full-Stack Web Developer
    Вариант 1: Во что пользователь играет
    import discord
    from discord.ext import commands
    
    intents = discord.Intents.default()
    intents.members = True
    intents.presences = True
    
    bot = commands.Bot(command_prefix="!", intents=intents)
    
    @bot.command(name="activity")
    async def get_activity(ctx, member: discord.Member):
        # Проверяем, есть ли у пользователя активность
        if member.activity:
            # Если активность есть, выводим её название
            await ctx.send(f"{member.name} играет в: {member.activity.name}")
        else:
            # Если активности нет, сообщаем об этом
            await ctx.send(f"{member.name} в данный момент ничего не играет.")
    
    bot.run('YOUR_BOT_TOKEN')

    Вариант 2: Во что пользователь играет или играл
    import discord
    from discord.ext import commands
    import json
    import os
    
    intents = discord.Intents.default()
    intents.members = True
    intents.presences = True
    
    bot = commands.Bot(command_prefix="!", intents=intents)
    
    # Файл для хранения истории активностей
    ACTIVITY_HISTORY_FILE = "activity_history.json"
    
    # Загружаем историю активностей из файла (если файл существует)
    if os.path.exists(ACTIVITY_HISTORY_FILE):
        with open(ACTIVITY_HISTORY_FILE, "r") as f:
            activity_history = json.load(f)
    else:
        activity_history = {}
    
    @bot.event
    async def on_presence_update(before, after):
        # Сохраняем активность пользователя, если она изменилась
        if after.activity and after.activity != before.activity:
            user_id = str(after.id)
            if user_id not in activity_history:
                activity_history[user_id] = []
            activity_history[user_id].append(after.activity.name)
    
            # Сохраняем историю в файл
            with open(ACTIVITY_HISTORY_FILE, "w") as f:
                json.dump(activity_history, f)
    
    @bot.command(name="activity")
    async def get_activity(ctx, member: discord.Member):
        user_id = str(member.id)
        if user_id in activity_history:
            # Выводим историю активностей пользователя
            activities = activity_history[user_id]
            await ctx.send(f"{member.name} играл в: {', '.join(activities)}")
        else:
            await ctx.send(f"У {member.name} нет сохранённой истории активностей.")
    
    bot.run('YOUR_BOT_TOKEN')

    Команда: !activity @Username
    Ответ написан
    Комментировать
  • Как вывести топ n самых не похожих результата?

    rc-dm
    @rc-dm
    Full-Stack Web Developer
    import chromadb
    from chromadb.utils import embedding_functions
    import numpy as np
    
    # Инициализация ChromaDB
    client = chromadb.Client()
    
    # Создание коллекции
    collection = client.create_collection(name="text_collection")
    
    # Добавление текстов и их векторных представлений
    texts = ["текст 1", "текст 2", "текст 3", "текст 4", "текст 5"]
    embeddings = embedding_functions.DefaultEmbeddingFunction()(texts)
    
    for idx, (text, embedding) in enumerate(zip(texts, embeddings)):
        collection.add(ids=[str(idx)], embeddings=[embedding], documents=[text])
    
    # Получение всех векторов из коллекции
    all_embeddings = collection.get(include=["embeddings"])["embeddings"]
    
    # Вычисление среднего расстояния для каждого вектора
    def cosine_distance(vec1, vec2):
        return 1 - np.dot(vec1, vec2) / (np.linalg.norm(vec1) * np.linalg.norm(vec2))
    
    average_distances = []
    for i, vec1 in enumerate(all_embeddings):
        distances = []
        for j, vec2 in enumerate(all_embeddings):
            if i != j:
                distances.append(cosine_distance(vec1, vec2))
        average_distances.append(np.mean(distances))
    
    # Сортировка по убыванию среднего расстояния
    sorted_indices = np.argsort(average_distances)[::-1]
    
    # Вывод топ n самых не похожих результатов
    n = 5
    top_n_indices = sorted_indices[:n]
    top_n_texts = [texts[i] for i in top_n_indices]
    
    print("Топ", n, "самых не похожих текстов:")
    for text in top_n_texts:
        print(text)
    Ответ написан
  • Как получить json без индекса в Laravel?

    rc-dm
    @rc-dm
    Full-Stack Web Developer
    $url = $path.'?'.urldecode(http_build_query($params));
    $response = Http::get($url);
    $array = $response->json();
    
    // Извлекаем массив пользователей
    $users = $array['users'];
    
    // Вставляем данные в базу данных
    foreach ($users as $userData) {
        DB::table('users')->insert($userData);
    }

    foreach ($users as $userData) — проходит по каждому элементу массива (пользователю) и вставляет его данные в базу данных.

    Но как правило данные нужно подготовить в зависимости от количества и названий столбцов БД, это можно сделать примерно так:
    $url = $path.'?'.urldecode(http_build_query($params));
    $response = Http::get($url);
    $array = $response->json();
    
    // Извлекаем массив пользователей
    $users = $array['users'];
    
    // Вставляем данные в базу данных
    foreach ($users as $userData) {
        // Меняем имена столбцов ("id" становится "user_id" и т.д.)
        $mappedData = [
            'user_id' => $userData['id'],
            'full_name' => $userData['name'], 
            'username' => $userData['login'], 
        ];
    
        // Вставляем данные в базу
        DB::table('users')->insert($mappedData);
    }
    Ответ написан
  • Загрузка через ipxe с маской /32?

    rc-dm
    @rc-dm
    Full-Stack Web Developer
    set net0/addr 199.7.250.10
    set net0/netmask 255.255.255.255
    set net0/gateway 172.16.250.21
    set net0/arp 172.16.250.21 ff:ff:ff:ff:ff:ff
    ifopen net0
    Ответ написан
    Комментировать
  • Как сделать правильную табуляцию в html?

    rc-dm
    @rc-dm
    Full-Stack Web Developer
    Попробуй показать преподавателю примерно так:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <link rel="stylesheet" href="style.css">
    </head>
    <body>
        <div id="features">
            <!-- блок с секциями -->
            <div id="main-block">
                <!-- секция с показателями кислорода -->
                <section class="oxygen-saturation">
                    <img src="assets/services/heart.svg" alt="Сердце" width="45px">
                    <h2>Измерение уровня кислорода в крови</h2>
                    <p>Измеряйте уровень насыщения крови кислородом в любой момент прямо со своего запястья.</p>
                </section>
                <!-- секция с отслеживанием сна -->
                <section class="sleep-tracking">
                    <img src="assets/services/clock.svg" alt="Часы" width="45px">
                    <h2>Отслеживание сна</h2>
                    <p>Настройте цель сна, время отхода ко сну и время пробуждения, а также отслеживайте свой прогресс.</p>
                </section>
                <!-- секция с обнаружением мытья рук -->
                <section class="hand-washing-detection">
                    <img src="assets/services/wash.svg" alt="Мыло" width="45px">
                    <h2>Обнаружение мытья рук</h2>
                    <p>Часы автоматически обнаруживают, что вы начали мыть руки, и устанавливают таймер на 20 секунд.</p>
                </section>
            </div>
        </div>
    </body>
    </html>
    Ответ написан
    7 комментариев
  • Какой параметр работы видеокарты существует для проверки влияния райзера на производительность?

    rc-dm
    @rc-dm
    Full-Stack Web Developer
    Нет единого параметра, который бы напрямую и однозначно показал влияние райзера на производительность видеокарты. Опосредованное тестирование через стресс-тесты и бенчмарки — это наиболее надёжный способ сравнить производительность в разных конфигурациях
    Ответ написан
    Комментировать
  • Как посчитать вероятность по формуле Байеса в экспертной системе?

    rc-dm
    @rc-dm
    Full-Stack Web Developer
    Чтобы получить результат 0.28, программа, вероятно, использует модифицированную формулу Байеса, которая учитывает вес свидетельства и нормализует результат. В данном случае подходит альтернативная модификация:

    6795496ce0797946122088.png
    Ответ написан
  • Как отключить ненужный рендер картинки на монитор когда ты в вр?

    rc-dm
    @rc-dm
    Full-Stack Web Developer
    - Включи "Direct Display Mode" в настройках SteamVR или ПО VR-гарнитуры.
    - Отключи дублирование экрана в настройках игры (если есть опция "Mirror Display").
    - Используй параметры запуска игры, если поддерживается отключение вывода на монитор.
    Ответ написан
    Комментировать
  • Как вернуть старую тему Chrome?

    rc-dm
    @rc-dm
    Full-Stack Web Developer
    UPD
    Проблема заключалась в сонной голове и в настройках самого сайта Google.

    Согласно настройкам профиля, все страницы Google были тёмными.
    Чтобы это исправить, нужно на странице поиска google нажать на свой аватар справа вверху. Откроется меню, внизу будет "дополнительные настройки". Далее, слева в меню нажми "другие настройки" и внутри, в разделе "Рабочий стол", будет первым пунктом выбор темы.

    Причины изменения настроек темы сайта Google без ведома автора вопроса неизвестны. Вероятно, какое-то расширение браузера сделало это автоматически.


    Первоначальный ответ

    Попробуй сбросить настройки Chrome:
    Настройки (три точки в правом верхнем углу) -> "Сбросить настройки" (в списке слева) -> "Восстановить настройки по умолчанию"

    Если не поможет, удали расширения и темы полностью:

    1. Windows:
      C:\Users\<username>\AppData\Local\Google\Chrome\User Data\

      macOS: ~/Library/Application Support/Google/Chrome/
      Linux: ~/.config/google-chrome/

    2. Найди папку Default, удали или переименуй папку Extensions
    3. Перезапусти Chrome

    Ответ написан
  • Как обновить таблицу на основании таблицы полученной с помощью рекурсии?

    rc-dm
    @rc-dm
    Full-Stack Web Developer
    Если задача заключается в том, чтобы просто перенумеровать строки в порядке возрастания дат, то можно использовать оконные функции
    WITH ordered_documents AS (
        SELECT 
            id, 
            dt,
            ROW_NUMBER() OVER (ORDER BY dt) AS new_id
        FROM 
            d_selling
    )
    UPDATE d_selling ds
    SET id = od.new_id
    FROM ordered_documents od
    WHERE ds.id = od.id AND ds.dt = od.dt;
    Ответ написан
    Комментировать
  • Как открыть веб-приложение, написанное на php?

    rc-dm
    @rc-dm
    Full-Stack Web Developer
    Информация о самой ошибке была бы крайне полезна, но тем не менее:
    1. Проверьте, что файл .htaccess (если используется Apache) настроен правильно и не блокирует доступ к другим страницам.
    2. Убедитесь, что в конфигурации сервера включена поддержка модуля mod_rewrite.
    3. Если маршрутизация осуществляется через .htaccess, убедитесь, что все запросы перенаправляются на index.php.
    4. Если ваше приложение использует базу данных, убедитесь, что подключение к БД настроено правильно.
    5. Проверьте, существуют ли необходимые таблицы и данные в БД.
    Ответ написан
    Комментировать
  • Можно ли запретить разблокировку экрана при нажатии элементов Media Session API?

    rc-dm
    @rc-dm
    Full-Stack Web Developer
    На данный момент нет способа программно запретить разблокировку экрана при нажатии на элементы управления медиа через Media Session API. Это поведение контролируется операционной системой и браузером, и разработчики приложений не могут его изменить.
    Ответ написан
    Комментировать
  • Перестало высвечиваться имя у постов в телеграме. У других авторов - все ок. Что это может быть?

    rc-dm
    @rc-dm
    Full-Stack Web Developer
    • Убедитесь, что в настройках канала для вашей роли (владельца) включена возможность подписывать сообщения. Это можно проверить в разделе "Администраторы" -> "Права администратора".
    • В Telegram есть возможность скрыть имя автора для конкретного поста. Убедитесь, что вы случайно не отключили отображение имени при публикации.
    • Если канал является анонимным, то имена авторов по умолчанию не отображаются.
    Ответ написан
    Комментировать
  • Делаю свой видеоплеер: при попытке перемотать видео, ползунок возвращается в начало и видео начинается заново. Что не так?

    rc-dm
    @rc-dm
    Full-Stack Web Developer
    Вы не учитываете правильное положение клика относительно прогресс-бара

    progressbar.addEventListener('click', (event) => {
        event.preventDefault();
    
        // Получаем позицию и размеры прогресс-бара
        const rect = progressbar.getBoundingClientRect();
        
        // Вычисляем новое время на основе положения клика
        const newTime = ((event.clientX - rect.left) / rect.width) * video.duration;
        console.log('New time:', newTime);
    
        if (video && progressbar) {
            video.currentTime = newTime;
        } else {
            console.error('Видео или прогрессбар не найден');
        }
    });
    Ответ написан
  • Как сделать отправку фото пользователя администратору?

    rc-dm
    @rc-dm
    Full-Stack Web Developer
    Когда пользователь отправляет несколько фотографий одним сообщением (альбомом), Telegram отправляет их как группу с одинаковым media_group_id. Нужно собрать все части группы в media_groups по media_group_id.
    Либо, если пользователь отправляет одно фото, обрабатывать сразу и отправлять администратору.

    from aiogram import Bot, Dispatcher, types
    from aiogram.types import MediaGroup
    from aiogram.utils import executor
    import asyncio
    
    API_TOKEN = 'YOUR_BOT_API_TOKEN'
    ADMIN_CHAT_ID = 'ADMIN_CHAT_ID'  # Замените на ID чата администратора
    
    bot = Bot(token=API_TOKEN)
    dp = Dispatcher(bot)
    
    # Хранение временных данных для групп фотографий
    media_groups = {}
    
    @dp.message_handler(commands=['start'])
    async def send_welcome(message: types.Message):
        await message.reply("Привет! Отправь мне фотографии для предложки.")
    
    @dp.message_handler(content_types=types.ContentType.PHOTO)
    async def handle_photo(message: types.Message):
        user_id = message.from_user.id
        media_group_id = message.media_group_id
    
        if media_group_id:
            # Если это группа медиафайлов
            if media_group_id not in media_groups:
                media_groups[media_group_id] = {
                    'user_id': user_id,
                    'photos': []
                }
    
            # Добавляем фото в группу
            media_groups[media_group_id]['photos'].append(message.photo[-1].file_id)
    
            # Ждем завершения группы (Telegram отправляет группу частями)
            await asyncio.sleep(1)  # Небольшая задержка для сбора всех частей группы
        else:
            # Если это одиночное фото
            await bot.send_photo(ADMIN_CHAT_ID, message.photo[-1].file_id)
    
    @dp.message_handler(content_types=types.ContentType.ANY)
    async def handle_media_group(message: types.Message):
        """Обработчик для завершения группы медиафайлов."""
        media_group_id = message.media_group_id
    
        if media_group_id and media_group_id in media_groups:
            # Отправляем группу фотографий администратору
            group_data = media_groups[media_group_id]
            album = MediaGroup()
    
            for photo in group_data['photos']:
                album.attach_photo(photo)
    
            await bot.send_media_group(ADMIN_CHAT_ID, media=album)
    
            # Удаляем группу из временного хранилища
            del media_groups[media_group_id]
    
    if __name__ == '__main__':
        executor.start_polling(dp, skip_updates=True)
    Ответ написан
  • Почему запрос sql возвращает неверное количество полей при поиске максимума?

    rc-dm
    @rc-dm
    Full-Stack Web Developer
    Если вы хотите найти команду (или команды) с максимальным количеством голов, то вам нужно убрать лишние поля из группировки и сосредоточиться только на team и goals
    Ответ написан
    6 комментариев
  • Как вывести дочерние категории через событие ajax?

    rc-dm
    @rc-dm
    Full-Stack Web Developer
    Тебе нужно повесить событие изменения (change) на select, затем отправить AJAX к серверному скрипту который вернёт JSON список дочерних категорий для только что выбранной категории.

    Пример для JQuery:
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title></title>
      </head>
      <body>
    
        <!-- Select родительских категорий -->
        <select name="categoryfilter">
          <option disabled="disabled" selected value="">Выберите категорию</option>
          <option value="1">Категория 1</option>
          <option value="2">Категория 2</option>
        </select>
    
        <!-- Select дочерних категорий -->
        <select name="subcategories"></select>
    
        <!-- Подключение JQuery для примера -->
        <script
            src="https://code.jquery.com/jquery-3.6.0.min.js"
            integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4="
            crossorigin="anonymous"></script>
    
        <!-- Логика клиентской части -->
        <script type="text/javascript">
          // Вешаем событие изменения на селект категорий
          $('select[name="categoryfilter"]').on('change', function(){
            let val = $(this).val(); // value только что выбранной категории
            $('select[name="categoryfilter"]').html(''); // Очищаем фильтр дочерних категорий
    
            //Запрашиваем данные
            $.ajax({
              url: '/path/to/file', // Путь к файлу PHP от корня сайта
              type: 'POST', // Отправляем данные методом POST
              dataType: 'json', // Ждём что сервер вернёт JSON
              data: {
                category: val, // Отправляем переменную 'category' со значением 'val'
              },
            })
            .done(function(data) {
              // Когда сервер вернул JSON
              // Перебираем данные циклом
              $.each(data, function(index, item) {
                // Добавляем внутрь select'а дочерних категорий новые опции
                $('select[name="subcategories"]').append('\
                  <option value="' + item.id + '">' + item.name + '</option>\
                ');
              });
            })
            .fail(function() {
              // Любая ошибка
              console.log("error");
            })
            .always(function() {
              // Когда запрос завершился успешно или с ошибкой
              console.log("complete");
            });
          });
        </script>
      </body>
    </html>


    Неполная серверная часть на PHP:
    <?php
    
    	//Тут должна быть логика загрузки нужных дочерних
    	//категорий согласно пришедшему значению 'category' ($_POST['category'])
    
    	$subCategories = [
    		[
    			'id' => 1,
    			'name' => 'Дочерняя категория 1',
    		],
    		[
    			'id' => 2,
    			'name' => 'Дочерняя категория 2',
    		],
    		[
    			'id' => 3,
    			'name' => 'Дочерняя категория 3',
    		],
    	];
    
    	//json_encode превращяет массив PHP в JSON, который ждёт AJAX
    	exit(json_encode($subCategories));
    ?>
    Ответ написан
    Комментировать
  • Как получить нужную часть ответа от API в PHP?

    rc-dm
    @rc-dm
    Full-Stack Web Developer
    Я получаю такую строку : {"day":0,"week":186,"month":186}
    из неё хочу брать только день и число


    <?php
    
        $url = "http://$server/api/?" .http_build_query($request_params);
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        
        //Получаем JSON
        $response = curl_exec($ch);
        curl_close($ch);
    
        //Декодируем JSON в PHP объект
        $data = json_decode($response);
       
        //Выводим только нужные элементы
        echo 'Day: '.$data->day.PHP_EOL;
        echo 'Week: '.$data->week.PHP_EOL;
        echo 'Month: '.$data->month.PHP_EOL;
    
    ?>
    Ответ написан
    Комментировать
  • Как сделать кликабельный никнейм в сообщении от телеграм бота?

    rc-dm
    @rc-dm
    Full-Stack Web Developer
    Смотри объект сообщения и элемент entities

    Telegram обычно автоматически обнаруживает внутренние ссылки.
    Ответ написан
  • Как изменить значение в html селекторе с помощью php?

    rc-dm
    @rc-dm
    Full-Stack Web Developer
    Можно использовать HTML парсер на PHP (Документация)

    <?php
    
    // Создаём DOM из строки
    $html = str_get_html('
      <div id="hello">Hello</div>
      <div id="world">World</div>
    ');
    
    // Ищем элемент 'div' с 'id="hello"' и меняем его содержимое на 'foo'
    $html->find('div[id=hello]', 0)->innertext = 'foo';
    
    // Ищем второй элемент 'div' по порядку и добавляем ему класс 'bar'
    $html->find('div', 1)->class = 'bar';
    
    echo $html; 
    // Результат:
    // <div id="hello">foo</div>
    // <div id="world" class="bar">World</div>
    
    ?>
    Ответ написан
    Комментировать