• Как сделать кик со всех бесед где состоит пользователь?

    Lapita12
    @Lapita12
    import re
    
    def kick_user_from_all_chats(user_id):
        # Получаем список всех чатов, в которых участвует пользователь
        chat_list = []
        # Заполните chat_list, используя ваш собственный код для получения списка чатов с участником user_id
    
        for chat_id in chat_list:
            # Удаляем пользователя из каждой беседы
            authorize.method('messages.removeChatUser', {
                'chat_id': chat_id,
                'user_id': user_id
            })
    
    if msg_lower[1:] == 'kick' or msg_lower[1:].startswith('kick '):
        try:
            user_id = re.findall(r'\[id(\d*)\|.*]', msg_orig)
            local = msg.split(' ')
            reason = ' '.join(map(str, local[2:999]))
    
            user = authorize.method("users.get", {"user_ids": user_id})
            fullname = user['first_name'] + ' ' + user['last_name']
    
            user1 = authorize.method("users.get", {"user_ids": uid, "name_case": 'gen'})
            fullname1 = user1['first_name'] + ' ' + user1['last_name']
    
            if not reason:
                write_message(sender, "❌ | Укажите причину!")
            else:
                kick_user_from_all_chats(user_id)
                write_message(sender, f"Администратор [id{user_id}|{fullname}] Был исключен по запросу [id|{fullname1}].\nПричина: {reason.capitalize()}")
        except:
            write_message(sender, "❌ | Используйте /kick [id пользователя)] [reason]")
    Написано
  • Почему gsap не меняет изображение?

    Lapita12
    @Lapita12
    Jussss92,Попробуй так

    npm install gsap@latest
    npm install gsap@latest --save-dev
    npm install gsap-blur


    import { gsap } from "gsap";
    import { blur } from "gsap-blur";
    
    const img = document.querySelector("#communication-img img");     
    const newImgSrc = "/assets/img/communication/chat1.png";
    
    gsap.timeline()
     .to(img, {
        attr:{src:newImgSrc},
        duration: 1, 
        ease: "none", 
        modifiers: {
          blur: blur
        },
        blur: 50
     })
    Написано
  • В чём проблема OpenAI?

    Lapita12
    @Lapita12
    import openai
    
    client = openai.Client()
    
    PROMPT = "Что такое OpenAI?"
    HISTORY = "OpenAI - это компания, которая разрабатывает искусственный интеллект."
    
    edited_news_text = client.chat.responses.create(
        model="gpt-3.5-turbo",
        prompts=[PROMPT, HISTORY],
        stream=False,
    )
    
    print(edited_news_text.choices[0].message.content)
    Написано
  • Как получить peer_id в vk api python?

    Lapita12
    @Lapita12
    import vk
    
    token = "ваш токен"
    
    vk_api = vk.API(token=token)
    
    def get_peer_id():
        conversations = vk_api.messages.getConversations(count=1)
        return conversations[0].peer_id
    
    if input("/peer_id: ") == "/peer_id":
        print(get_peer_id())
    Написано
  • Как исправить ошибку бота, связанную с отстутсвием атрибута user_name?

    Lapita12
    @Lapita12
    def new_user(self, bot, chat_id, user_tg_id, user_name, language_code, link):
        self._model.chat_id = chat_id
        self._model.user_tg_id = user_tg_id
    
        result = asyncio.run(db.insert_user(self._model))
        self._model = result._data[0]
    
        if user_name is not None:
            self.user_info = User_info(self._model, user_name, language_code, True)
        else:
            self.user_info = User_info(self._model, "", language_code, True)
    
        self.status = enums.user_status.user
        self.checkReferal(bot, link)
    Написано
  • Использую opentele для конвертации tdata в telethon.session. На tdesk.ToTelethon зависает, что делать?

    Lapita12
    @Lapita12
    Попробуй код ниже и скажи что тебе вывело
    try:
        client = await tdesk.ToTelethon(session=path, proxy=proxy, auto_reconnect=False)
        task1 = loop.create_task(client.connect())
        await asyncio.wait_for(task1, timeout=5)
    except Exception as e:
        print(f"An error occurred: {e}")
    finally:
        if client.is_connected():
            await client.disconnect()
    Написано
  • Как сформировать условие для проверки сокета в JS?

    Lapita12
    @Lapita12
    $("#wrappelLine").on("focusout", "#extLineSipProxy", function () {
        var text = $(this).val();
        var id = $(this).attr("id");
    
        var parts = text.split(':');
        var ipOrDns = parts[0];
        var port = parts[1];
    
        var reg = /^(([0-9]{1,4})|([1-5][0-9]{4})|(6[0-4][0-9]{3})|(65[0-4][0-9]{2})|(655[0-2][0-9])|(6553[0-5]))$/;
        if (!reg.test(port) && $.trim(port) != "") {
            alert("Неверное значение порта.\nВы должны выбрать порт из данного диапазона:\n0-65535.");
            return 0;
        }
    
        $(this).replaceWith('<div class="EXL_MAIN_SIP_C3TCRRInp1" id="' + id + '">' + text + '</div>');
        $("#" + id).focus();
    });
    $("#wrappelLine").on("focusout", "#extLineSipProxy", function () {
        var text = $(this).val();
        var id = $(this).attr("id");
    
        $(this).replaceWith('<div class="EXL_MAIN_SIP_C3TCRRInp1" id="' + id + '">' + text + '</div>');
    
    });
    
    $("#wrappelLine").on("dblclick", "#extLineSipPort", function () {
        var text = $(this).text();
        var id = $(this).attr("id");
        $(this).replaceWith('<input type="text" class="EXL_MAIN_SIP_C3TCRRInpSh1" maxlength="5" id="' + id + '" value="' + text + '" />');
        $("#" + id).focus();
    });
    $("#wrappelLine").on("focusout", "#extLineSipPort", function () {
        var text = $(this).val();
        var id = $(this).attr("id");
        var reg = /^(([0-9]{1,4})|([1-5][0-9]{4})|(6[0-4][0-9]{3})|(65[0-4][0-9]{2})|(655[0-2][0-9])|(6553[0-5]))$/;
        if (!reg.test(text) && $.trim(text) != "") {
            alert("Неверное значение порта.\nВы должны выбрать порт из данного диапазона:\n0-65535.");
            //            $(this).focus();
            return 0;
        }
        if ($.trim(text.replace(/[",']/g, '')) == "" && $.trim(text) != "") {
            alert("Введите Порт!");
            //            $(this).focus();
        } else {
            if ($.trim(text) == "") {
                text = 5060;
            }
            $(this).replaceWith('<div class="EXL_MAIN_SIP_C3TCRRInpSh1" id="' + id + '">' + text + '</div>');
            $("#extLineSipURI").attr("title", 'sip:' + $("#extLineSipLogin").text() + '@' + $("#extLineSipHost").text() + ':' + text);
        }
    });
    Написано
  • Sortable.min.js или как убить нервную систему в 0?

    Lapita12
    @Lapita12
    После выполнения AJAX-запроса не обновляется структура данных для плагина Sortable. Вам нужно повторно вызывать функцию applySortable после того, как контент добавляется через AJAX. Если поафколупиваться изменять ваш код, можете попробовать следующий вариант:

    $(document).ajaxSuccess(function () {
            var f0dChildren = $('#f0_d_');
            var fotosRElems = $('[id^="fotos-r"]');
            var sortableOptions = {
                animation: 150,
                handle: '.click_red, [class^="tab-ds f_"]',
            };
        
            function applySortable(elements, options) {
                elements.each(function () {
                    new Sortable(this, options);
                });
            }
        
            applySortable(f0dChildren, sortableOptions);
            applySortable(fotosRElems, sortableOptions);
        });
        
        $(document).on('content-loaded', function () {
            // Вызывайте applySortable после добавления контента через AJAX
            applySortable($('#f0_d_'), sortableOptions);
            applySortable($('[id^="fotos-r"]'), sortableOptions);
        });


    При добавлении контента через AJAX возведите событие 'content-loaded':

    $(document).trigger('content-loaded');
    Написано
  • Как сгенерировать уникальный номер заказа примерно как у Бургер кинга?

    Lapita12
    @Lapita12
    Альберт Ушаков

    1. Создай функцию для генерации уникального номера заказа. Эта функция будет принимать две буквы (филиал и тип заказа) и числовой номер заказа.

    function generateOrderNumber(branch, orderType, number) {
      return `${branch}-${orderType}-${number}`;
    }


    2. Для работы с базой данных PostgreSQL используй библиотеку node-postgres Установи её

    npm install pg

    3. Создай таблицу в базе данных PostgreSQL для хранения информации о заказах, включая уникальный номер заказа, филиал, тип заказа и дату создания заказа.

    CREATE TABLE orders (
      id SERIAL PRIMARY KEY,
      order_number VARCHAR(255) UNIQUE NOT NULL,
      branch CHAR(1) NOT NULL,
      order_type CHAR(1) NOT NULL,
      created_at TIMESTAMP NOT NULL
    );


    4. Создай функцию для добавления нового заказа в базу данных. Эта функция будет использовать функцию генерации уникального номера заказа и добавлять запись в таблицу orders

    const { Pool } = require('pg');
    
    const pool = new Pool({
      // Ваши настройки подключения к базе данных
    });
    
    async function addOrder(branch, orderType) {
      const client = await pool.connect();
      try {
        await client.query('BEGIN');
        const { rows } = await client.query('SELECT COUNT(*) as count FROM orders WHERE created_at >= CURRENT_DATE');
        const orderNumber = generateOrderNumber(branch, orderType, parseInt(rows[0].count) + 1);
        await client.query('INSERT INTO orders (order_number, branch, order_type, created_at) VALUES ($1, $2, $3, NOW())', [orderNumber, branch, orderType]);
        await client.query('COMMIT');
        return orderNumber;
      } catch (error) {
        await client.query('ROLLBACK');
        throw error;
      } finally {
        client.release();
      }
    }


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

    (async () => {
      try {
        const orderNumber = await addOrder('Y', 'A');
        console.log('Уникальный номер заказа:', orderNumber);
      } catch (error) {
        console.error('Ошибка при добавлении заказа:', error);
      }
    })();


    Это создаст уникальный номер заказа в формате YA-50, Счетчик числового номера заказа будет сбрасываться каждый день автоматически благодаря условию WHERE created_at >= CURRENT_DATE в запросе к базе данных.
    Написано
  • Отображение блока в самом низу?

    Lapita12
    @Lapita12
    Артем Гартунг,
    async function elUp(selector) {
      try {
        var html = await (await fetch(location.href)).text();
        var newdoc = new DOMParser().parseFromString(html, 'text/html');
        var chat = document.querySelector(selector);
        chat.outerHTML = newdoc.querySelector(selector).outerHTML;
        
        chat = document.querySelector(selector);
        chat.scrollTop = chat.scrollHeight;
    
        return true;
      } catch(err) {return false;}
    }
    Написано
  • Как добавить кнопку отмены действия в telegram боте?

    Lapita12
    @Lapita12
    from aiogram import Bot, Dispatcher, types
    from aiogram.contrib.middlewares.logging import LoggingMiddleware
    from aiogram.types import ParseMode
    from aiogram.utils import executor
    
    API_TOKEN = 'YOUR_BOT_TOKEN'
    admin_id = 'YOUR_ADMIN_ID'
    
    bot = Bot(token=API_TOKEN)
    dp = Dispatcher(bot)
    dp.middleware.setup(LoggingMiddleware())
    
    support_enabled = True
    
    @dp.message_handler(commands=['help'])
    async def process_start_command(message: types.Message):
        if message['from'].id == admin_id:
            await message.answer(f"Hi, admin")
        else:
            keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
            cancel_button = types.KeyboardButton(text="Отмена")
            keyboard.add(cancel_button)
            await message.answer(f"Привет! Если у тебя есть предложение или идея - напиши мне!", reply_markup=keyboard)
    
    @dp.message_handler(lambda message: message.text == 'Отмена')
    async def process_cancel_support(message: types.Message):
        global support_enabled
        support_enabled = False
        await message.answer("Техническая поддержка отменена.")
    
    @dp.message_handler(content_types=['text'])
    async def process_start_command(message: types.Message):
        global support_enabled
        if support_enabled:
            if message.reply_to_message == None:
                if '/start' not in message.text and message.text != 'Отмена':
                    await bot.forward_message(admin_id, message.from_user.id, message.message_id)
                    await message.answer('Спасибо за сообщение!!')
            else:
                if message['from'].id == admin_id:
                    if message.reply_to_message.forward_from.id:
                        await bot.send_message(message.reply_to_message.forward_from.id, message.text)
                else:
                    await message.answer('На сообщения нельзя отвечать!')
        else:
            await message.answer('Техническая поддержка отключена.')
    
    if __name__ == '__main__':
        from aiogram import executor
        executor.start_polling(dp, skip_updates=True)
    Написано
  • Как НЕ выполнять условие при таче по UI элементам?

    Lapita12
    @Lapita12
    Или попробуйте код ниже
    void Update()
    {
        if (canExecute && (Input.GetMouseButtonDown(0) || Input.GetKeyDown(KeyCode.Space)) && !IsPointerOverUIObject() && !endGame)
        {
            canExecute = false;
            cooldownTimer = cooldownDuration;
    
            Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            directionKnife = mousePosition;
            mousePosition.z = 0f;
            GameObject knife = Instantiate(knifePrefab, mousePosition, Quaternion.identity);
    
            StartCoroutine(RotateKnife(knife));
        }
    }
    
    bool IsPointerOverUIObject()
    {
        #if UNITY_EDITOR || UNITY_STANDALONE || UNITY_WEBGL
            return EventSystem.current.IsPointerOverGameObject();
        #elif UNITY_ANDROID || UNITY_IOS
            if (Input.touchCount > 0)
            {
                Touch touch = Input.GetTouch(0);
                PointerEventData eventData = new PointerEventData(EventSystem.current);
                eventData.position = touch.position;
                List<RaycastResult> results = new List<RaycastResult>();
                EventSystem.current.RaycastAll(eventData, results);
                return results.Count > 0;
            }
            return false;
        #endif
    }
    Написано
  • Как НЕ выполнять условие при таче по UI элементам?

    Lapita12
    @Lapita12
    Александр Андропов,
    void Update()
    {
        bool isOverUI = false;
    
        if (Application.platform == RuntimePlatform.Android || Application.platform == RuntimePlatform.IPhonePlayer)
        {
            if (Input.touchCount > 0)
            {
                int pointerId = Input.touches[0].fingerId;
                isOverUI = EventSystem.current.IsPointerOverGameObject(pointerId);
            }
        }
        else
        {
            isOverUI = EventSystem.current.IsPointerOverGameObject();
        }
    
        if (canExecute && (Input.GetMouseButtonDown(0) || Input.GetKeyDown(KeyCode.Space)) && !isOverUI && !endGame)
        {
            canExecute = false;
            cooldownTimer = cooldownDuration;
    
            Vector3 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            directionKnife = mousePosition;
            mousePosition.z = 0f;
            GameObject knife = Instantiate(knifePrefab, mousePosition, Quaternion.identity);
    
            StartCoroutine(RotateKnife(knife));
        }
    }
    Написано
  • В чем разница между сервлетом и контроллером?

    Lapita12
    @Lapita12
    OldJohn, Ваши выражения в основном верны, но позвольте мне разъяснить их еще немного:

    Сервлеты и контроллеры оба обрабатывают HTTP-запросы, но на разных уровнях абстракции и в разных контекстах.

    Сервлет - это низкоуровневый компонент Java EE, который обрабатывает HTTP-запросы, разбирает заголовки и формирует HTTP-ответы. Сервлеты предоставляют базовую функциональность для обработки запросов, но обычно требуют больше кода для управления деталями и состоянием сессии.

    Контроллер - это более высокоуровневая абстракция, которая использует архитектуру MVC и фреймворки, такие как Spring MVC. Контроллеры определяют логику обработки запросов и определяют, какие данные должны быть получены из модели и какие представления (view) должны быть отображены. Контроллеры упрощают и структурируют обработку запросов, предоставляя аннотации и соглашения для определения обработчиков запросов.

    Cервлеты и контроллеры имеют разные цели и уровни абстракции, хотя оба обрабатывают HTTP-запросы. Сервлеты фокусируются на непосредственной обработке HTTP-запросов, а контроллеры организуют логику обработки запросов в контексте архитектуры MVC и фреймворков.
    Написано
  • В чем разница между сервлетом и контроллером?

    Lapita12
    @Lapita12
    Главная мысль в разнице между сервлетом и контроллером заключается в том, что сервлеты - это низкоуровневые компоненты Java EE для обработки HTTP-запросов, а контроллеры - более высокоуровневая абстракция, использующая архитектуру MVC и фреймворки типа Spring MVC для организации логики обработки запросов.
    Написано
  • Как сделать кнопки по очереди?

    Lapita12
    @Lapita12
    Можно phone_code()
    def family_buttons(message):
        email(message)
    
    def email(message):
        markup = types.InlineKeyboardMarkup(row_width=1)
        email = types.InlineKeyboardButton("Введите почту", callback_data="email")
        markup.add(email)
        bot.send_message(message.chat.id, "Время заполнения поля 30 секунд", reply_markup=markup)
    
    def phone_code(message):
        markup = types.InlineKeyboardMarkup(row_width=1)
        phone_code = types.InlineKeyboardButton("Введите код телефона", callback_data="phone_code")
        markup.add(phone_code)
        bot.send_message(message.chat.id, "Нажмите для заполнения поля!", reply_markup=markup)
    
    @bot.callback_query_handler(func=lambda call: True)
    def callback(call):
        if call.message:
            if call.data == "email":
                text_email = bot.send_message(chat_id=call.message.chat.id, text="Введите почту")
                bot.register_next_step_handler(text_email, next)
    
            elif call.data == "phone_code":
                text_phone_code = bot.send_message(chat_id=call.message.chat.id, text="Введите код телефона")
                bot.register_next_step_handler(text_phone_code, next)
    
    def next(message):
        if message.text:
            # Здесь вы можете обработать введенный текст для первой кнопки
            # Например, сохранить его в переменную или базу данных
            # Затем вызовите функцию phone_code() для отображения второй кнопки
            phone_code(message)
    Написано
  • Как записать данные пользователей?

    Lapita12
    @Lapita12
    Vadok, Идентификатор discord ID будет тем, который был подан последним. Если одновременно подано 5 заявок, будет использован ID дискорд той заявки, которая была подана последней.
  • Как записать данные пользователей?

    Lapita12
    @Lapita12
    Vadok, Использовать API базы данных Python для доступа к данным.
    Например вот это выведет никнейм пользователя
    import sqlite3
    
    
    connection = sqlite3.connect('my_database.db')
    
    
    cursor = connection.cursor()
    
    
    cursor.execute('SELECT nickname FROM users WHERE discord_id = ' + str(discord_id))
    
    
    result = cursor.fetchone()
    
    
    nickname = result[0]
    
    
    connection.close()