• Как сделать ограничения кликов по времени?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    Можно сделать через php или js. Рассмотрим сперва php:
    <?php
    $clicks = 0 // Получаем кол-во кликов
    setcookie("clicks", clicks);
    // Теперь нужно получить их
    $clicks = $_COOKIE["clicks"];
    echo $clicks;
    ?>

    Cookies PHP

    Теперь сделаем на JS:

    let clicks = 0; // Получаем кол-во кликов
    localStorage.setItem("clicks", clicks);
    // Теперь получим их
    const clicks = localStorage.getItem("clicks");
    console.log(clicks);

    Session JS
    Ответ написан
    Комментировать
  • Как решить проблему когда ВК бот флудит после приписки else?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    А код мы гадать будем ?
    Ответ написан
    2 комментария
  • Как ввести большое число?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    input возвращает str и, если указать int(input()) и ввести 100, то будет результат нормальным, а вы указываете 10000000 1 - это уже строка, ведь в python число может быть только: "100..." или как float "1000.1". Можно использовать следующий код:

    num = input("Enter a number > ")
    # проверка на число
    if not num.isdigit():
       return False
    
    # Дальше можно сделать
    num = int(num) # и ошибок не будет.
    Ответ написан
    Комментировать
  • Как проставить ссылки в HTML?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    Если я правильно понял, то вот, в данной статье всё указано.
    Ответ написан
  • Как запросить разрешение на отправку push-уведомлений?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    Да, браузеры имеют строгие ограничения для отправки push-уведомлений из-за обеспечения конфиденциальности и безопасности пользователей. Особенно это касается безопасности и конфиденциальности на локальных сетях и устройствах.

    Можно попробовать запросить разрешение:
    if ('Notification' in window) {
      Notification.requestPermission().then(permission => {
        if (permission === 'granted') {
          // Разрешение получено, можно отправлять уведомления
        } else {
          // Разрешение не получено
        }
      });
    }


    И сайт должен работать через HTTPS.
    Ответ написан
  • Дискорд бот на питон не видет команды, почему это может быть?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    Документация для меня сделана?
    Запоминай:

    bot = commands.Bot('#', description='Крутой бот от Луффича)', intents=discord.Intents.all())
    bot.add_cog(Music(bot))
    bot.remove_command('help')
    
    @bot.command()
    async def test():
      ...
    
    bot.start(token)


    Чтобы бот видел команды ты должен их ему показать, а ты создаёшь команды через @commands.command(), а должен через @bot.command.

    Почему через bot ?
    Мы инициализируем бота и записываем его в переменную bot и в дальнейшем изменяем поведение, логику бота. Прописав @bot.command() бот понимает, что он должен запомнить команду для использования в дискорде.
    Ответ написан
    Комментировать
  • Временный мут на discord.py?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    @bot.command()
    async def mute(ctx, member: discord.Member, duration: str, *, reason: str):
    	try:
    		await ctx.message.delete()
    
    		duration_mute = int(duration[:1]) # duration = 1h. [0:] = 1
    		duration_time = str(duration[1:]) # duration = 1h. [:0] = h
    		duration_timer = None # timedelta
    
    		if any(map(duration_time.lower().startswith, ['s', 'с'])):
    			duration_timer = datetime.datetime.utcnow() + datetime.timedelta(hours=3, seconds=int(duration_mute))
    		if any(map(duration_time.lower().startswith, ['m', 'м'])):
    			duration_timer = datetime.datetime.utcnow() + datetime.timedelta(hours=3, minutes=int(duration_mute))
    		if any(map(duration_time.lower().startswith, ['h', 'ч'])):
    			duration_timer = datetime.datetime.utcnow() + datetime.timedelta(hours=int(duration_mute)+3)
    		if any(map(duration_time.lower().startswith, ['d', 'д'])):
    			duration_timer = datetime.datetime.utcnow() + datetime.timedelta(hours=3, days=int(duration_mute))
    
    		a = await member.timeout(duration_timer.astimezone(pytz.timezone("Europe/Moscow")), reason=reason)
    
    		embed = discord.Embed(
    			title="Пользователь замучен",
    			color=discord.Color.red(),
    			description=f"Наказан: {member.mention}\nЗамучен: {ctx.author.mention}\nСрок: {duration} мин\nОкончание: {end_time_str}\nПричина: {reason}"
    		)
    
    		await ctx.send(embed=embed)
    
    		
    	except discord.Forbidden:
    		embed = discord.Embed(
    				title="Ошибка",
    				color=discord.Color.red(),
    				description="У меня недостаточно прав для выполнения этой команды."
    		)
    		await ctx.send(embed=embed)
    
    	except commands.MissingRequiredArgument:
    		embed = discord.Embed(
    				title="Ошибка",
    				color=discord.Color.red(),
    				description="Некоторые обязательные аргументы отсутствуют. Используйте команду в следующем формате: !mute @пользователь срок_мута(в минутах) причина."
    		)
    		await ctx.send(embed=embed)
    
    	except commands.BadArgument:
    		embed = discord.Embed(
    				title="Ошибка",
    				color=discord.Color.red(),
    				description="Неверный формат аргумента. Пожалуйста, проверьте правильность введенных данных."
    		)
    		await ctx.send(embed=embed)


    Нельзя указывать таймаут больше 28 дней.

    Код нужно немного доработать.
    Ответ написан
  • Как кликнуть по любому элементу и добавить класс?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    this в вашем случае не поможет, нужно использовать: event.target:

    $("*").click((event) => {
       $(event.target).toggleClass("active");
    });


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

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    Можно прочитать файл и просто перезаписать его:

    with open('file.txt', 'rb') as file:
        data = file.read()
    
    with open('file.txt', 'wb') as final:    
        file.writelines(['first_string'])
        file.write(data)
    Ответ написан
    Комментировать
  • Как добавить класс к пагинации после просмотра слайда?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    Попробуйте мой код:

    on: {
        slideChange: function() {
         // тут добавляете уже класс
        },
      },
    Ответ написан
    Комментировать
  • Как вывести строку из Rust в HTML элемент с помощью JS?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    Для того чтобы вывести строку из Rust в HTML элемент с помощью JS, можно использовать JavaScript API, предоставляемый Tauri. Вот пример кода:

    Rust:

    #[tauri::command]
    fn get_username() -> String {
        let username = whoami::username();
        format!("Привет, {}!", username)
    }


    JavaScript:

    async function getUsername() {
      const response = await window.tauri.promisified({
        cmd: 'get_username'
      });
      const username = response.result;
      const element = document.getElementById('greeting');
      element.innerHTML = username;
    }


    В этом примере мы создаем функцию getUsername, которая вызывает Rust функцию get_username с помощью Tauri API и получает строку с приветствием. Затем мы находим элемент HTML с идентификатором greeting и устанавливаем его содержимое равным полученной строке.

    Для того чтобы вызвать функцию getUsername, можно использовать обработчик события DOMContentLoaded:

    document.addEventListener('DOMContentLoaded', getUsername);


    Этот код вызовет функцию getUsername при загрузке страницы.

    Обратите внимание, что для использования Tauri API необходимо добавить соответствующие зависимости в Cargo.toml и настроить конфигурацию проекта. Более подробную информацию можно найти в документации Tauri.
    Ответ написан
  • Как правильно прописать вызов функции на событие, например, нажатие кнопки «Оплатить»?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    Для того чтобы вызвать функцию pay() при нажатии на кнопку «Оплатить», нужно прописать следующий код:

    $('#checkout').click(function() {
        payments.pay("charge", {
            publicId: "ВАШ_ID",
            description: "Тестовая оплата",
            amount: 100,
            currency: "RUB",
            invoiceId: "",
            accountId: "",
            email: "",
            skin: "classic",
            requireEmail: true,
        }).then(function(widgetResult) {
            console.log('result', widgetResult);
        }).catch(function(error) {
            console.log('error', error);
        });
    });


    В этом коде мы используем метод click() объекта jQuery для привязки функции к событию клика на кнопке с id checkout. Внутри этой функции вызываем функцию payments.pay(), которая откроет форму оплаты. Теперь форма будет вызываться только при клике на кнопку «Оплатить»
    Ответ написан
    Комментировать
  • Как сделать авторизацию VK OAuth на сайте во всплывающем окне?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    Для того чтобы реализовать авторизацию VK OAuth на сайте во всплывающем окне, можно использовать JavaScript библиотеку VK Connect.

    Вот пример кода, который можно использовать для этого:

    1. Подключите библиотеку VK Connect в вашем HTML файле:

    <script src="https://vk.com/js/api/external/56.js"></script>


    2. Создайте кнопку для запуска авторизации и добавьте обработчик события на эту кнопку:

    <button id="vk-auth-button">Авторизоваться через ВКонтакте</button>
    
    <script>
    document.getElementById('vk-auth-button').addEventListener('click', function() {
      VK.Auth.login(function(response) {
        // Обработка ответа от сервера
        if (response.session) {
          // Авторизация прошла успешно
        } else {
          // Авторизация не удалась
        }
      }, VK.Auth.access.AUDIO);
    });
    </script>


    3. В обработчике события вызовите метод VK.Auth.login с параметрами, которые определяют запрашиваемые права доступа и функцию обратного вызова, которая будет вызываться после завершения авторизации.

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

    5. После успешной авторизации вы можете использовать полученный токен доступа для вызова методов API VK и получения данных о пользователе.
    Ответ написан
    Комментировать
  • Как сделать анти флуд по комманде пример: !antispam on / off?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    Для создания анти-спама в Discord боте на Python можно использовать следующий код:

    import discord
    from discord.ext import commands
    
    bot = commands.Bot(command_prefix='!')
    
    # Создаем словарь для хранения количества сообщений пользователя
    message_count = {}
    
    # Задаем лимит сообщений за определенный промежуток времени
    SPAM_LIMIT = 5
    SPAM_TIME = 10
    
    @bot.event
    async def on_message(message):
        # Проверяем, что сообщение отправлено в текстовый канал
        if isinstance(message.channel, discord.TextChannel):
            # Проверяем, что отправитель не является ботом
            if not message.author.bot:
                # Проверяем, что отправитель не находится в списке администраторов
                if message.author not in bot.get_guild(message.guild.id).get_role(ADMIN_ROLE_ID).members:
                    # Получаем количество сообщений пользователя за последний SPAM_TIME секунд
                    if message.author.id in message_count:
                        message_count[message.author.id] += 1
                    else:
                        message_count[message.author.id] = 1
                    
                    # Если количество сообщений превышает SPAM_LIMIT, то удаляем сообщение и отправляем предупреждение
                    if message_count[message.author.id] > SPAM_LIMIT:
                        await message.delete()
                        await message.author.send(f'Вы были заблокированы на {SPAM_TIME} секунд за спам')
                        await message.author.add_roles(bot.get_guild(message.guild.id).get_role(MUTED_ROLE_ID))
                        await asyncio.sleep(SPAM_TIME)
                        await message.author.remove_roles(bot.get_guild(message.guild.id).get_role(MUTED_ROLE_ID))
                        message_count[message.author.id] = 0
    
        await bot.process_commands(message)


    В этом коде мы создаем словарь message_count, который хранит количество сообщений каждого пользователя. Затем мы задаем лимит сообщений за определенный промежуток времени (5 сообщений за 10 секунд). В функции on_message мы проверяем, что сообщение отправлено в текстовый канал, что отправитель не является ботом и не находится в списке администраторов. Затем мы получаем количество сообщений пользователя за последний промежуток времени и если оно превышает лимит, то удаляем сообщение, отправляем предупреждение и блокируем пользователя на SPAM_TIME секунд. После этого мы удаляем блокировку и сбрасываем количество сообщений пользователя до 0.

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

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    Вы сможете сделать красивые анимации с помощью библиотеки Anime.js
    Ответ написан
    Комментировать
  • Как узнать, что Windows сейчас выполняет дефрагментацию?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    Чтобы узнать, что Windows сейчас выполняет дефрагментацию, можно воспользоваться следующими шагами:

    1. Откройте диспетчер задач, нажав комбинацию клавиш Ctrl + Shift + Esc.
    2. Перейдите на вкладку "Процессы".
    3. В списке процессов найдите процесс defrag.exe. Если этот процесс присутствует, это означает, что в данный момент выполняется дефрагментация.

    Чтобы узнать, сколько времени длится дефрагментация и какие диски/тома дефрагментируются, можно воспользоваться следующими шагами:

    1. Откройте командную строку, нажав комбинацию клавиш Win + R, введите cmd и нажмите Enter.
    2. В командной строке введите команду defrag C: /A /V, где C: - это буква диска, который вы хотите проверить.
    3. Нажмите Enter.
    4. В результате выполнения команды вы увидите информацию о состоянии дефрагментации для указанного диска/тома, включая время выполнения и процент завершенности.

    Вы можете повторить шаги 2-4 для каждого диска/тома, чтобы получить информацию о состоянии дефрагментации для всех дисков/томов на вашем компьютере.
    Ответ написан
    Комментировать
  • Как удалить сообщение aiogram?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    Вроде немного понял вашу проблему.

    Отправка сообщений в группу
    Отправка сообщений в группу происходит через асинхронную функцию: send_message, просто нужно указать определённые аргументы. Пример кода:
    message = await bot.send_message(chat_id='-00000000', text=f'{message.from_user.username} Находиться в меню и нажал кнопку')


    Удаление сообщений в группе
    Удалить сообщение можно через асинхронную функцию delete_message, для этого нужно указать 2 аргумента. Пример кода:
    result = await bot.delete_message(chat_id='-00000000', message_id='id сообщения.')
    Ответ написан
    Комментировать
  • Как сделать в читалке calibre при просмотре книги вместо двух страниц одну?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    В читалке Calibre при просмотре книги можно настроить отображение одной страницы вместо двух страниц. Для этого выполните следующие шаги:

    1. Откройте Calibre и выберите книгу, которую вы хотите прочитать.

    2. Нажмите на кнопку "Открыть внешний вид" в верхней панели инструментов.

    3. В открывшемся окне "Внешний вид книги" выберите вкладку "Страница".

    4. В разделе "Количество страниц" выберите опцию "Одна страница".

    5. Нажмите на кнопку "Применить".

    Теперь при просмотре книги в Calibre будет отображаться только одна страница.

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

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    При конвертации валют в PHP с использованием чисел с плавающей точкой рекомендуется использовать тип данных `float`. В PHP `float` представляет числа с плавающей точкой двойной точности (64 бита) и обычно используется для работы с вещественными числами.

    Вот пример использования `float` для конвертации валют в PHP:

    $amount = 10.50; // исходная сумма в валюте
    $exchangeRate = 1.22; // курс обмена
    
    $convertedAmount = $amount * $exchangeRate;
    
    echo $convertedAmount; // выводит 12.81


    В этом примере `amount` и `exchangeRate` являются значениями типа `float`. При умножении `amount` на `exchangeRate` результирующее значение `convertedAmount` будет также типа `float`.

    Однако, при работе с числами с плавающей точкой в PHP может возникать проблема точности из-за представления таких чисел в двоичном формате. Если точность является важным аспектом, необходимо использовать специальные функции для работы с десятичными числами, такие как `bcadd()`, `bcsub()`, `bcmul()`, `bcdiv()`, которые обеспечивают более точные операции с числами с плавающей точкой.

    Пример использования `bcadd()` для конвертации валют с точностью:

    $amount = '10.50'; // исходная сумма в валюте
    $exchangeRate = '1.22'; // курс обмена
    
    $convertedAmount = bcadd($amount, '0', 2);
    $convertedAmount = bcmul($convertedAmount, $exchangeRate, 2);
    
    echo $convertedAmount; // выводит 12.81


    В этом примере `amount` и `exchangeRate` являются строками (тип `string`), а не числами с плавающей точкой. Функция `bcadd()` используется для сложения строковых чисел с указанной точностью (2 десятичных знака), а `bcmul()` используется для умножения этих чисел.
    Ответ написан
    2 комментария