Задать вопрос
  • Как при конвертации валют рассчитывать числа с плавающей точкой?

    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 комментария
  • Есть ли разница между asyncsession.begin() и session.commit()?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    В SQLAlchemy asyncIO, asyncsession.begin() и session.commit() представляют два разных этапа в асинхронном цикле работы сессии.

    asyncsession.begin() используется для начала транзакции. Транзакция представляет собой блок операций, который будет выполнен атомарно – либо все операции успешно применятся, либо ни одна из них. Транзакция обеспечивает целостность данных и позволяет откатывать операции, если что-то идет не так.

    session.commit() используется для фиксации (commit) изменений, сделанных во время транзакции. Это означает, что все изменения, выполненные в рамках транзакции, сохраняются в базе данных. Если транзакция завершилась успешно, то изменения становятся видимыми для других пользователей базы данных.

    Таким образом, asyncsession.begin() начинает транзакцию, а session.commit() закрывает транзакцию и сохраняет изменения. Эти операции необходимо использовать совместно для правильной работы сессии.

    Пример использования:
    async with AsyncSession(engine) as session:
        async with session.begin():
            # выполнение операций внутри транзакции
            # изменение, добавление или удаление объектов
            # выполнение запросов
    
        # после окончания транзакции вызываем session.commit()
        await session.commit()
    Ответ написан
    6 комментариев
  • При попытке отправить сообщение от имени вебхука возвращает очень большую ошибку, что делать?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    @bot.event
    async def on_message(msg):
    for webhook in await msg.channel.webhooks():
            if webhook.user == bot.user:
                if msg.content.startswith(webhook.name):
                    url = None
                    try:
                        url = Memory.read(f"avatars/{msg.channel.id}{webhook.name}webhook.txt")
                    except disnake.errors.HTTPException:
                        await webhook.send(content="Слишком много запросов отправлено! Пожалуйста подождите...")
                    except:
                        await webhook.send(content = msg.content[len(webhook.name) + 1:])
                        await msg.delete()
                    else:
                        await webhook.send(content = msg.content[len(webhook.name) + 1:], avatar_url=url)
                        await msg.delete()


    желательно: переменную webhook изменить на channel
    Ответ написан
  • Python sqlite3 как избежать ошибку?

    Zagir-vip
    @Zagir-vip Автор вопроса
    Web dev, Game dev, app dev, Разработчик на Python!
    ИСРАВИЛ.
    Нужно было добавить ковычки. Пример: "name='ban'"
    Ответ написан
  • Бот отвечает два раза на нажатие кнопки?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    Потому, что у вас 2 слушателя на кнопку. При нажатии на любую кнопку будет вызываться слушатель: on_button_click_one(). Решение: Добавьте в первый слушатель проверка на custom_id('verif_button') или label('Прохождение верификации') кнопки, чтобы начать проверку.
    Ответ написан
  • Discord.py Как сделать команду Feedback??

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    @bot.command()
    async def feedback(ctx, message:str, user_id:int=None):
       if user_id is None:
          author = bot.get_user(your_id)
          await author.send(f"Вам отправили сообщение: {message}\nАвтор: {ctx.author} | {ctx.author.id}")
       else:
           user = bot.get_user(user_id)
           await user.send(f"Вам отправили сообщение: {message}")

    Нужно уметь думать..
    Ответ написан
    Комментировать
  • Почему HTML не видит js функцию?

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

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    Ну это же легко. Можно получить номер и добавить его к строке.
    user_phone = "XXXX..." # номер пользователя
    user_phone = f"+375 {user_phone}" # Получили +375 XXX... 
    И добавляем номер в БД.
    Ответ написан
    Комментировать
  • Как сделать система дохода по времени в телеграм боте python?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    # Вой примерный код
    def income():
       users = пользователи из бд или файла
       for user in users:
          user["balance"]+= user["regular_income"] #Получаем ежедневный доход и обновляем баланс
          ### если нужно сохраните процесс ###
    Ответ написан
  • Как вывести значение из ajax в тег html?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    $('.content').innerText = content
    Ответ написан
    Комментировать
  • Возможно ли создать бота именно для страницы вк?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    Возможно нельзя, так как в вк стоит защита от ботов, чтобы Ваши личные переписки не кто не узнал.
    2)Ответ Вы можете поискать в Документации
    3)Да и зачем Вам такое делать, т.к для ответов нужно создать ИИ, а это сложно и долго
    Ответ написан
    Комментировать
  • Как получить из html объект обозначенный selected при помощи cheerio?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    Желательно использовать select по id
    let university = $(#'id_institution')[0].selectedOptions[0].value // Это мы получили value выбраного элемента
    Ответ написан
  • Как отправить несколько embed в одном сообщении?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    Эти сообщения отправлены в одну минуты, а если сообщения отправлены от одного пользователя и в одинаковые минуты, то дискорд группирует сообщение в одно целое!
    Ответ написан
    1 комментарий
  • Почему не работает программа?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    Переходите на сайт PyPI eel и скачиваете архив
    Eel-0.14.0.tar.gz. Из архива файл eel.js переносите в свой проект и подключаете в html файле(<script src="folder/eel.js"></script>)
    Готово!
    Ответ написан
    Комментировать
  • Как в HTML сначала получить текст из тэга input, а потом перенаправить используя Flask?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    Сначала нужно обернёть input's в тег form
    А для input's задать атрибут name и вместо h1/h2 лучше указывать
    Вот код html:
    <form action="/do_dashboard" method="post">
       <label for="">Введите свой айди:</label>
       <input name="user_id" type="text" size="40"><br>
       <label>Введите айди гильдии:</label>
       <input name="server_id" type="text" size="40">
    </form>

    Код Python файла:

    from flask import request # requests - для принятие данных(вроде бы)
    
    @app.route("/do_dashboard", methods=['get', 'post']) # Методы для принятия даных. Get - обычное получение, а Post - Передача данных.
    def dodash():
        if request.method == "POST":
            user_id = request.form['user_id'] # Выбераем из формы user_id
            server_id = request.form['server_id'] # Быбераем из формы server_id
            return redirect(f"https://wbot.serega15032011.repl.co/dashboard/{user_id}/{server_id}")
        else:
            return "Get запрост"
    Ответ написан
    Комментировать
  • Как исключить себя из цикла telebot?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    Ну научитесь пользоваться Python элементарные вещи не знаете!
    sended = 0
    for result in results:
       if result == message.from_user.id: pass
       else:
          try:
             bot.send_message(result[0], message.text)
             sended+=1
          except Exception as e: print(f"[Error] {e}")
    bot.send_message(message.from_user.id, f"Отправлено {sended} сообщений!")
    Ответ написан
    Комментировать
  • Почему отвечает не правильно?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    Правильно будет использовать .lower() чтобы перевести текст в нижний регистр.

    w = input("Начать игру? ").lower()
    
    if w == "да":
       print("Начали!")
    else:
       print("Отменено")
    Ответ написан
    Комментировать
  • Как записать ответ пользователя в переменную(Bot telegram)?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    Я так и не понял что за библиотека, но думаю что 'Telegraf'
    Вот код:
    let prev_command = ""
    
    bot.command('test', (ctx) => {
    	ctx.reply("Send your text in chat.")
    	prev_command = "test"
    });
    
    bot.on('text', (ctx) => {
    	if (prev_command == "test") {
    		ctx.reply(`Ok, your text '${ctx.message.text}'`)
    	} else {
    		ctx.reply("Sorry, usage commands!")
    	}
    })


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

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    def id():
       for i in range(len(oj)):
          print(f"your id: {oj[i]}')
          del oj[i] # Чтобы id больше не повторялось
    Ответ написан
  • Как вписать в дискорд бота команду по выдаче роли с удалением предыдущих ролей?

    Zagir-vip
    @Zagir-vip
    Web dev, Game dev, app dev, Разработчик на Python!
    Специально для Вас и для опыта писал данный код:

    import discord
    import json
    import asyncio
    
    from discord.ext import commands
    
    @client.event
    async def on_ready():
    	with open("test.json", 'r') as f:
    		data = json.load(f)
    		for i in range(len(data)):
    			member = await (await client.fetch_guild(data[i]["guild_id"])).fetch_member(data[i]["id"])
    			client.loop.create_task(pun_start(member))
    	print("ready")
    
    def check_user_db(user_id:int):
    	with open('test.json', 'r') as f:
    		data = json.load(f)
    		for i in range(len(data)):
    			if data[i]["id"] == user_id: return True
    	return False
    
    def add_user_db(user_id:int, guild_id:int, author:str, timeout:int, reason:str, roles:list, role_pun:int):
    	if check_user_db(user_id) is True: return False
    	else:
    		with open('test.json', 'r') as f:
    			data = json.load(f)
    
    		new_user = {
    		"id": user_id,
    		"guild_id": guild_id,
    		"author": f"{author.name}#{author.discriminator}",
    		"timeout": timeout,
    		"reason": reason,
    		"roles": roles,
    		"role_pun": role_pun
    		}
    		data.append(new_user)
    
    		with open('test.json', 'w') as f:
    			json.dump(data, f, indent=3)
    
    		return True
    
    def remove_user_db(user_id:int):
    	if check_user_db(user_id) is False: return False
    	else:
    		with open('test.json', 'r') as f:
    			data = json.load(f)
    			for i in range(len(data)):
    				if data[i]["id"] == user_id:
    					del data[i]
    					with open('test.json', 'w') as f:
    						json.dump(data, f)
    					return True
    		return False
    
    async def pun_start(user):
    	with open('test.json', 'r') as f:
    		data = json.load(f)
    		user_data = {}
    		for i in range(len(data)):
    			if data[i]["id"] == user.id: user_data = data[i]; break
    		role_pun = discord.utils.get(user.guild.roles, id=id_роли) # роль для наказания
    		old_roles = user_data["roles"] # старые роли участника
    		await asyncio.sleep(user_data["timeout"])
    		await user.remove_roles(role_pun)
    		for role in old_roles:
    			role_user = discord.utils.get(user.guild.roles, id=role)
    			await user.add_roles(role_user)
    		remove_user_db(user.id)
    
    
    
    @client.command()
    async def pun(ctx, member:discord.Member=None, timeout:int=None, reason:str="Не указано"):
    	if member is None or timeout is None:
    		await ctx.reply("Укажите участника и время.\nПример: !pun @участник 100 - наказываем участника на 100сек.\n**Важно:** Время указывается в секундах!")
    	elif check_user_db(member.id) is True:
    		await ctx.reply("Участника уже наказан!")
    	else:
    		role_pun = discord.utils.get(ctx.guild.roles, id=id_роли) # роль для наказания
    		old_roles = [] # старые роли участника
    		for role in member.roles:
    			if role.name != "@everyone":
    				old_roles.append(role.id)
    				await member.remove_roles(role)
    		await member.add_roles(role_pun)
    		add_user_db(member.id, ctx.guild.id, ctx.author, timeout, reason, list(old_roles), role_pun.id) # добавляем участника в файл
    		await ctx.send(f"{member.mention}, наказан!\nПричина: {reason}")
    		await asyncio.sleep(timeout)
    		await member.remove_roles(role_pun)
    		for role in old_roles:
    			role_user = discord.utils.get(ctx.guild.roles, id=role)
    			await member.add_roles(role_user)
    		remove_user_db(member.id)
    		await ctx.send(f"Наказания с {member.mention} снято!\nПричина: Автоматическое снятие")


    Если будут ошибки пишите Xpeawey#5262
    Ответ написан