Профиль пользователя заблокирован сроком с 17 августа 2021 г. и навсегда по причине: см. п. 8.3 правил Сервиса
  • Ошибка в Telegram PHP Bot?

    nastya97core
    @nastya97core
    Начинающий программист
    сделай:
    echo '<pre>';
    print_r($data);
    echo '</pre>';
    Ответ написан
    7 комментариев
  • Разве есть лимиты на наименования классов/айди?

    nastya97core
    @nastya97core Автор вопроса
    Начинающий программист
    название должно начинаться с любого символа, кроме цифры или дефиса
    Ответ написан
    Комментировать
  • У меня непонятная рамка вокруг сайта?

    nastya97core
    @nastya97core
    Начинающий программист
    body { margin: 0} ?
    Ответ написан
    2 комментария
  • Какие знаете электронные кошельки с NFC оплатой?

    nastya97core
    @nastya97core
    Начинающий программист
    Ответ написан
    Комментировать
  • Возможно ли использовать NFC чип в руке для бесконтактной оплаты?

    nastya97core
    @nastya97core
    Начинающий программист
    Невозможно. Нельзя назначать метки на оплату банковской картой. Дальше, чем оплаты метро вы не пойдёте (там немного другой принцип, нежели оплата банковской картой). Чтобы условно получить кольцо с возможностью оплаты картой - нужно взять вашу действующую карту, разобрать её, достать от туда NFC чип и запаять в кольцо. Переназначить обычную метку не выйдет.

    Если вы, конечно, не человек с приветом, как Alice, то да, тогда возможно: разбираете свою сбербанковскую карту и засовываете в руку. Как срок действия карты истечёт, так расковыриваете руку, достаёте старый чип, засовываете новый.
    Ответ написан
    4 комментария
  • Как в Telegram боте сразу узнать, что юзер отписался от канала?

    nastya97core
    @nastya97core
    Начинающий программист
    Так делай проверку перед отправкой сообщения от бота юзеру. Если подписан - разрешай команды, else { tg('sendMessage', "А НУ БЫСТРО ПОДПИСАЛСЯ")

    вот так проверяй:
    Как проверить подписку на канал в телеграм?
    Ответ написан
    Комментировать
  • Как сделать разделение кнопок в сообщении телеграм бота?

    nastya97core
    @nastya97core
    Начинающий программист
    $mata["reply_markup"] = json_encode([
    			"keyboard" => [
    				[["text"=>"Кнопка в одну строку"]],
    				[["text"=>"левая кнопка"], ["text"=>"правая кнопка"]], // вторая строка
    				[["text"=>"Кнопка в одну строку"]],
    			]
    		]);


    Дело в массивах. Есть массив, в котором каждый массив - строка. В этом каждом массиве - каждый другой массив - кнопка

    В твоём случае:
    $inline_keyboard_questions_account = [
        [
            ['text' => '№1', 'callback_data' => 'question 1'],
            ['text' => '№2', 'callback_data' => 'question 2'],
            ['text' => '№3', 'callback_data' => 'question 3']
        ],
        [
            ['text' => '№4', 'callback_data' => 'question 4'],
            ['text' => '№5', 'callback_data' => 'question 5']
        ]
    ];
    Ответ написан
    Комментировать
  • Почему Telegram bot API метод answerCallbackQuery не показывает алерт?

    nastya97core
    @nastya97core
    Начинающий программист
    попробуй вот это:
    $tg = json_decode(file_get_contents('php://input'), true);
    function tlgrm($method, $data, $client) {
      $data["chat_id"] = $client;
      $data["parse_mode"] = "html";
      $ch = curl_init("https://api.telegram.org/---токен---/$method");
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
      curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
      $r = json_decode(curl_exec($ch), true);
      curl_close($ch);
      return $r;
    }
     
    $client = $tg['callback_query']['from']['id'];
    $cb_id = $tg['callback_query']['id'];
    tlgrm('answerCallbackQuery', ['callback_query_id'=> $cb_id, 'text' => 'СООБЩЕНИЕ', 'show_alert' => true],$client);

    создай php файл, засунь туда этот код и установи на него webhook.
    Ответ написан
    4 комментария
  • Почему миллиардные компании используют электрон, а не создают нативные приложения?

    nastya97core
    @nastya97core
    Начинающий программист
    Потому что мир капиталистический и они, выбирая между: заплатить 300к за хорошее приложение или 5к за плохое приложение, а 295к оставить в кармане - выбирают второе. Часто это делают нарочно, чтобы продавать новое оборудование, потому что старое не хочет работать на неоптимизированном софте. Android на 99% сделан индусами за четверть ставки(в крайне плохом смысле слова, далее используется как оскорбление). Европейцы там только маркетологи (и то не всегда). Я не говорю, что капитализм плохо, просто антимонопольная служба вообще не работает: или потому что не умеет, или потому что в доле. По хорошему нам не хватает закона, в котором были бы прописаны минимальные системные требования для ПО и игр. Вот тогда бы мы и зажили. А те, кто считает, что дело действительно в железе: пожалуйста, смотрите. Почему-то во времена PS1 у одних удалось сделать игру, а сейчас другие cyberpunk сделать не могут

    Можно десяток вопросов/ответов накидать:
    А почему игры не оптимизируют?
    игры делают тоже индусы (пример GTA 5)
    А зачем intel выпускает одни и те же процессоры каждый год, меняя только название
    Чтобы продавать новые комплектующие
    А почему Apple замедляет свои телефоны?
    Чтобы народ покупал новые айфоны

    И очень важный момент - сроки. Я вот сижу тыкаю по клавишам, программирую для себя и у меня есть время попробовать несколько вариантов кода, протестировать, оптимизировать. Я знаю, что за мной никто не гонится, поэтому я ищу наиболее эффективные решения, но делаю я тут одного бота уже больше двух месяцев. При том что я прекрасно понимаю, что если бы не маялась бы я этим, то сделала бы его уже через 2 недели.

    Да и Дуров не такой уж и молодец со своим телеграммом. В новых брауезрных версиях не работает кнопка с параметром "one_time_keyboard". Также в телеге при работе с ботом отправитель находится в разных местах. При нажатии на кнопку - нажиматель будет по адресу: $client = $tg['callback_query']['from']['id']; а при отправке сообщения - отправитель по адресу: $client = $tg['message']['from']['id'];. Но ведь можно было сделать отдельное поле type и там хранить тип действия, а отправителя всегда хранить по адресу: $tg['from']['id'];. Почему-то я, дура такая, знаю об этом, а супер разработчики телеги - нет.
    Ответ написан
    2 комментария
  • Почему regex101 и php возвращают разный результат?

    nastya97core
    @nastya97core Автор вопроса
    Начинающий программист
    explode("\n", $z, 2)[1]
    либо регулярка:
    preg_match("/(?<=\n).*/s", $z, $user_info);
    но она медленнее
    Ответ написан
    Комментировать
  • Как получают API?

    nastya97core
    @nastya97core
    Начинающий программист
    d9a5c7a5629a4580bdf07dbe4882ca2a
    Я приведу самый простой пример с получением данных. По сути, у API возможности неограниченны. Всё что хочешь - то и можно. Просто чаще всего API используют, чтобы получить какие-то данные.

    Принцип такой:
    Есть сайт с погодой. Чтобы получить температуру в условном Питере, которую они замерили - тебе нужно зайти к ним на сайт, вбить в параметрах поиска СПБ и глазами посмотреть.
    И вот, чтобы обеспечить потребность "знать погоду" - тебе достаточно просто заходить к ним на сайт. Но если ты хочешь, чтобы на твоём сайте/приложении/в игре - была погода, то тут возникнут проблемы

    - По сути ты мог бы просто каждые 10 минут заходить на сайт погоды, брать от туда данные и загружать себе на сайт. Согласись - неудобно.
    - Либо ты мог бы настроить бота, который бы заходил на сайт, симулируя пользователя и доставал бы из нужного блока температуру, а потом вставлял результаты тебе на сайт. По сути, так и делают, когда нет API, но это не совсем стабильный канал: а) тебя могут забанить по ip за странные запросы; б) если изменится вёрстка сайта (порядок блоков), то разумеется достать температуру ты уже не сможешь и придётся переписывать бота
    - И тут на помощь приходит API. Принцип таков: ты можешь договориться с поставщиком температуры о том, что ты будешь брать у них данные. Это может быть как платная услуга, так и бесплатная (обычно зависит от кол-ва запросов). В итоге тебе дают ссылку, в которой указаны уже все параметры, которые тебе нужны и ты просто настраиваешь своего бота на то, чтобы получить эти данные по ссылке и вставить на свой сайт.

    Чтобы посмотреть температуру в Санкт-Петербурге тебе нужно открыть ссылку:
    http://api.openweathermap.org/data/2.5/weather?q=Санкт-Петербург&units=metric
    нихрена работать не будет, потому что тут не указан ключ API.

    А зачем нужен ключ API?
    Как я уже сказала: API бывают платные и бесплатные и их платность зависит обычно от кол-ва запросов, которые ты делаешь. Но как поставщик узнает, кто делает запрос: я, ты или тот парень? Чтобы регулировать это - они присваивают тебе твой личный номер (айди), по которому они будут отслеживать, сколько запросов ты уже сделал. Также в твоём айди закладываются твои права. Может быть посмотреть погоду в Питере - бесплатно, но вот если ты хочешь узнать точную температуру в условном Кудрово, то будь добр - доплати и тогда они предоставят по твоему айди доступ к этой температуре. Кратко: API-ключ - пароль от твоего аккаунта.

    И вот тебе верная ссылка:
    http://api.openweathermap.org/data/2.5/weather?q=Санкт-Петербург&units=metric&appid=0f47096f1eb155f8b277692876fb963e
    Ответ написан
    Комментировать
  • Почему, когда я ввожу формат даты MM в acf выводит два коротких названия месяца?

    nastya97core
    @nastya97core
    Начинающий программист
    используй j для длинного названия месяца
    Ответ написан
  • Как через regex достать все слова обособленные \n?

    nastya97core
    @nastya97core Автор вопроса
    Начинающий программист
    /\\n(.*)\\n/isU
    Ответ написан
    Комментировать
  • Как в вставить два действия в одну ячейку?

    nastya97core
    @nastya97core Автор вопроса
    Начинающий программист
    =ЕСЛИ(И(ЕПУСТО(C3);ЕПУСТО(D3));;E2+C3-D3)
    Если 2 и 3 столбец пустой, то ничего не пишем, а если не пустой, то прибавляем 2 и вычитаем 3
    Ответ написан
    Комментировать
  • Под какие разрешения делать адаптив?

    nastya97core
    @nastya97core
    Начинающий программист
    Лучше делать не адаптивный, а отзывчивый дизайн. Мне самой не нравятся эти формулировки и под адаптивным я всегда буду подразумевать отзывчивый, но, увы, многие считают это разными видами вёрстки.

    Отзывчивый, когда ты делаешь не под размеры, а просто под все экраны, постепенно уменьшая окно браузера и дописывая стили для тех блоков, которые слетели. В этом случае сайт у тебя будет отображаться на всех устройствах
    Ответ написан
    Комментировать
  • Как на развернуть весь сайт в index.php?

    nastya97core
    @nastya97core Автор вопроса
    Начинающий программист
    В папке сайта нужно создать файл .htaccess
    вот с таким содержимым
    Options -Indexes
    <IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule .* index.php [L]
    </IfModule>


    а потом уже в нужном месте, в нужное время делать
    match ($_SERVER['REDIRECT_URL']) {
        	"/index.php" => include "main.html",
        	"/cart" => include "cart.html",
        	"/admin" => include "admin.html",
        	default => include "main.html",
    };

    ну или через if, если у вам не php8
    Ответ написан
  • Как в return получить несколько значений?

    nastya97core
    @nastya97core Автор вопроса
    Начинающий программист
    Много ответов. По-сути все правильные, но самый главный ответ в комментах, поэтому я продублирую его сюда.

    Действительно, я не получала ответ, так как делала return внутри другой функции. Решение - уход от HttpRequest в сторону fetch и использование async/await
    async function toCart(e){
    let response = await fetch('tocart.php', {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json;charset=utf-8'
      },
      body: JSON.stringify(e)
    });
    
    return response.json();
    }
    
    async function btnClick(e) {
    ...
      let res = await toCart([name, size]);
      console.log(res);
    }


    Отдельное спасибо Mellorn WbICHA и vdem
    Ответ написан
    Комментировать
  • Как работать с entities в telegram?

    nastya97core
    @nastya97core Автор вопроса
    Начинающий программист
    фальшстарт. parse_mode html был прописан в самой функции. убрала его - всё заработало
    Ответ написан
    Комментировать
  • Как узнать по какому адресу у меня webhook?

    nastya97core
    @nastya97core Автор вопроса
    Начинающий программист
    1. у @BotFather получаем API token
    2. делаем запрос по адресу https://api.telegram.org/botXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXX/getWebhookInfo
    Ответ написан
    1 комментарий