• Можно ли сократить этот код?

    @teenager_python
    $(function() {
    loadItems();
    });
    
    function loadItems() {
    $.getJSON('database/products.json', function(data) {
    function loadCakes(num) {
    let out = '';
    for (let i = 0; i < (num || data.length); i++) {
    out += '<a data-num="' + data[i].id + '" data-category="' + data[i]['category'] + '" class="products__card card">';
    out += '<div class="card__image image">';
    out += '<img src="' + data[i].image + '" alt="' + data[i]['image'] + '">';
    out += '</div>';
    out += '<h3 class="card__title title">' + data[i]['name'] + '</h3>';
    out += '<p class="card__desc">' + data[i]['description'] + '</p>';
    out += '<div class="card__bottom">';
    out += '<p class="card__price">' + data[i].price + ' р.</p>';
    out += '<button class="card__buy">';
    out += '<img src="images/icons/shopping-cart-add.svg" alt="shopping-cart-add">';
    out += '</button>';
    out += '</div>';
    out += '</a>';
    }
    return out;
    }
    $('#cakes-cards').html(loadCakes());
    $('#index-cards').html(loadCakes(6));
    })
    }

    Код был упрощен с помощью цикла for. Теперь функция loadCakes обрабатывает только один случай, в зависимости от переданного параметра num. Если num равен 0 или не был передан, то в цикле обрабатываются все элементы из базы данных. Если num больше 0, то обрабатываются только num элементов. После этого, результат выводится на страницу в нужные элементы.
    Ответ написан
    3 комментария
  • Как в телеграм боте (pyTelegramBotAPI) добавить в кнопку ссылку вида mailto:mail@mail.com?

    @teenager_python
    Чтобы добавить ссылку в кнопку вида mailto:mail@mail.com в телеграм боте, используя библиотеку pyTelegramBotAPI, вам нужно создать объект InlineKeyboardButton и передать в него ссылку как значение параметра url. Затем, добавьте эту кнопку в InlineKeyboardMarkup и отправьте сообщение с клавиатурой.
    import telebot
    
    bot = telebot.TeleBot('your_token')
    
    # Создание кнопки с ссылкой
    button_url = telebot.types.InlineKeyboardButton(text='Написать нам', url='mailto:mail@mail.com')
    
    # Создание клавиатуры и добавление кнопки
    keyboard = telebot.types.InlineKeyboardMarkup()
    keyboard.add(button_url)
    
    # Отправка сообщения с клавиатурой
    bot.send_message(chat_id='your_chat_id', text='Свяжитесь с нами:', reply_markup=keyboard)

    В этом примере создается кнопка с текстом "Написать нам" и ссылкой mailto:mail@mail.com. Затем кнопка добавляется в InlineKeyboardMarkup и отправляется в сообщении с текстом "Свяжитесь с нами:".

    Обратите внимание, что при нажатии на кнопку пользователь будет перенаправлен на почтовый клиент с заполненным полем "Кому" для отправки электронной почты на указанный адрес.
    Ответ написан
    Комментировать
  • Telegram Bot. Как подключить и проверить оплату через крипту.?

    @teenager_python
    Для подключения и проверки оплаты через криптовалюту в Telegram Bot вам понадобится:

    Создать кошелек для приема криптовалюты. Вы можете использовать любой известный кошелек, например, Blockchain.info, Coinbase, BitPay или другой.

    Подключить бота к платежной системе, поддерживающей криптовалюту. Существует несколько платежных систем, которые поддерживают криптовалюту, такие как CoinPayments, BitPay или SpectroCoin. Выберите ту, которая лучше всего подходит для ваших нужд.

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

    Для проверки оплаты вы можете использовать API вашей платежной системы. К примеру, SpectroCoin предоставляет API для проверки транзакций в вашем кошельке.

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

    Вот пример кода на Python, который может помочь вам подключить криптовалюту в вашем Telegram Bot, используя API CoinPayments:
    import telebot
    import requests
    import json
    
    bot = telebot.TeleBot('TOKEN') # Токен вашего бота
    coinpayments_url = 'https://www.coinpayments.net/api.php'
    merchant_id = 'YOUR_MERCHANT_ID' # Ваш merchant ID в CoinPayments
    private_key = 'YOUR_PRIVATE_KEY' # Ваш private key в CoinPayments
    
    @bot.message_handler(commands=['pay'])
    def pay(message):
        payload = {
            'cmd': 'create_transaction',
            'merchant_id': merchant_id,
            'amount': '10',
            'currency1': 'USD',
            'currency2': 'BTC',
            'item_name': 'Test Payment',
            'ipn_url': 'https://yourserver.com/ipn',
            'success_url': 'https://yourserver.com/success',
            'cancel_url': 'https://yourserver.com/cancel',
        }
        r = requests.post(coinpayments_url, data=payload)
        response = json.loads(r.text)
        if response['error'] == 'ok':
            address = response['result']['address']
            amount = response['result']['amount']
            qr_code = response['result']['qrcode_url']
            bot.send_message(message.chat.id, f'Send {amount} BTC to {address}')
            bot.send_photo(message.chat.id, photo=qr_code)
        else:
            bot.send_message(message.chat.id, 'Error creating payment')
    
    if __name__ == '__main__':
        bot.polling(none_stop=True)
    Ответ написан
    Комментировать
  • Как показать URL создаваемого вебхука discord.py?

    @teenager_python
    В discord.py после создания вебхука вы можете получить URL созданного вебхука, вызвав атрибут url созданного объекта вебхука. Вот пример:
    import discord
    import asyncio
    
    # создаем клиента Discord
    client = discord.Client()
    
    # создаем вебхук
    async def create_webhook():
        channel = client.get_channel(1234567890)  # замените на ID канала, в котором нужно создать вебхук
        webhook = await channel.create_webhook(name='My Webhook')  # создаем вебхук и сохраняем его в переменной webhook
        print(f'Вебхук успешно создан! URL: {webhook.url}')  # выводим URL созданного вебхука
    
    # запускаем клиента Discord и создаем вебхук
    @client.event
    async def on_ready():
        print('Бот запущен')
        await create_webhook()
    
    client.run('ваш токен')

    В этом примере после создания вебхука с помощью метода channel.create_webhook мы выводим его URL с помощью атрибута url созданного объекта вебхука.
    Ответ написан
    Комментировать
  • Как отправить keyboard vk конкретному пользователю в беседе?

    @teenager_python
    В API ВКонтакте нет возможности отправлять клавиатуры напрямую конкретному пользователю в беседе. Однако, вы можете использовать метод messages.setActivity для показа уведомления о том, что вы начали набирать сообщение, и затем отправить клавиатуру в ответном сообщении.

    Вот пример кода на Python, который отправляет клавиатуру в ответном сообщении пользователю в беседе:
    import vk_api
    from vk_api.longpoll import VkLongPoll, VkEventType
    from vk_api.keyboard import VkKeyboard, VkKeyboardColor
    import random
    
    # Токен вашего сообщества
    TOKEN = "YOUR_TOKEN_HERE"
    
    # Инициализация VK API
    vk_session = vk_api.VkApi(token=TOKEN)
    longpoll = VkLongPoll(vk_session)
    
    # Создание клавиатуры
    keyboard = VkKeyboard(one_time=True)
    keyboard.add_button("Кнопка 1", color=VkKeyboardColor.PRIMARY)
    keyboard.add_button("Кнопка 2", color=VkKeyboardColor.SECONDARY)
    keyboard.add_button("Кнопка 3", color=VkKeyboardColor.NEGATIVE)
    
    # Обработчик новых сообщений
    for event in longpoll.listen():
        if event.type == VkEventType.MESSAGE_NEW and event.to_me:
            # Отправляем уведомление о том, что мы начали набирать сообщение
            vk_session.method("messages.setActivity", {"peer_id": event.peer_id, "type": "typing"})
            
            # Отправляем сообщение с клавиатурой
            vk_session.method("messages.send", {"peer_id": event.peer_id, "message": "Выберите действие:", "keyboard": keyboard.get_keyboard(), "random_id": random.randint(1, 1000)})

    В этом примере мы создаем клавиатуру с помощью класса VkKeyboard, затем в цикле обработки новых сообщений мы отправляем уведомление о том, что мы начали набирать сообщение с помощью метода messages.setActivity, а затем отправляем сообщение с клавиатурой с помощью метода messages.send. Клавиатура отправляется в ответном сообщении пользователю в беседе.
    Ответ написан
    Комментировать
  • Как остановить цикл при нажатии на кнопку aiogram?

    @teenager_python
    В библиотеке aiogram, чтобы остановить цикл при нажатии на кнопку, вы можете использовать метод register_callback_query_handler() в сочетании с stop_propagation=True, чтобы предотвратить дальнейшую обработку событий.
    # Создаем состояние, в котором мы ожидаем нажатие на кнопку
    class MyStates(StatesGroup):
        waiting_for_button = State()
    
    # Обработчик команды /start
    @dp.message_handler(commands=["start"])
    async def start(message: types.Message):
        # Отправляем сообщение с кнопкой
        keyboard = types.InlineKeyboardMarkup()
        button = types.InlineKeyboardButton(text="Остановить", callback_data="stop")
        keyboard.add(button)
        await message.answer("Нажмите на кнопку, чтобы остановить цикл", reply_markup=keyboard)
    
        # Устанавливаем состояние "waiting_for_button"
        await MyStates.waiting_for_button.set()
    
    # Обработчик нажатия на кнопку
    @dp.callback_query_handler(Text(equals="stop"), state=MyStates.waiting_for_button)
    async def stop_callback(query: CallbackQuery, state: FSMContext):
        # Останавливаем цикл и удаляем состояние
        await query.answer("Цикл остановлен")
        await state.finish()
        # Вызываем stop_propagation=True, чтобы предотвратить дальнейшую обработку событий
        return await query.message.edit_text("Вы остановили цикл", reply_markup=None, disable_web_page_preview=True, stop_propagation=True)
    
    # Запускаем бота
    if __name__ == "__main__":
        executor.start_polling(dp, skip_updates=True)
    Ответ написан
    Комментировать
  • Почему выдает не верные координаты по ip?

    @teenager_python
    IP не привязан к местоположения как сказали раньше, да с его помощью можно попытаться узнать хоть примерную часть местонахождения(Регион/Страна), но и та не всегда может казаться верной, для полного местоположения нужно использовать сторонние вещи.
    Ответ написан
    Комментировать
  • Хочу установить библиотеку jnius но выдает ошибку типо не скачалось в чём проблема?

    @teenager_python
    Тебе помимо Pyjnius, нужна Cython, если я правильно понял, попробуй установить ее.
    Ответ написан
    Комментировать
  • Как убрать переносы строки в unicode?

    @teenager_python
    Регуляркой:
    import re
    
    mystr = " balabla\n zzz "
    
    re.sub("^\s+|\n|\r|\s+$", '', mystr)
    Ответ написан