Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Игра рыбалка представляет собой полноценный симулятор рыбалки и дает возможность порыбачить в реально существующих местах из жизни и поймать рыбу, которая там обитает.

Рыбный дождь

Спорт, Симуляторы, Рыбалка

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • Animalrescueed Animalrescueed 36 постов
  • Oskanov Oskanov 7 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
3
rostexlive
rostexlive
9 дней назад

Не нашел карманный достойный Health Checker – написал свой⁠⁠

Не нашел карманный достойный Health Checker – написал свой Разработка, Telegram, Бот, API, Java, Telegram (ссылка), Длиннопост

Недавно с товарищем разрабатывали один внутренний ресурс и понадобился удобный Alert. Нужно было получать уведомления, если система вдруг перестанет отвечать. Подумал, что телеграм в этом плане подойдет идеально: ничего дополнительно ставить не нужно, все под рукой.

Я пробовал поискать готового бота, пообщался с коллегами — давали разные варианты. Но либо функциональность не та, либо интерфейс неудобный. В итоге решил: «А почему бы не написать своего?»

И написал.

Бот по расписанию пингует API эндпоинты (в общем то любую страницу) и присылает уведомление в телеграм, если что-то пошло не так: нет соединения, долгий отклик или отрицательный код ответа. Звучит просто, но внутри все немного интереснее.

Писал на Java 21. Да, знаю, не супер прагматично для телеграм-бота, но я джавист — привычнее и спокойнее.

Начал с проектирования структуры и сущностей. Получились User (потом масштабировал в Chat), Api и HistoryApi. Первоначально бот управлялся через команды, но по мере роста модели управления пришлось перейти на inline-меню, чтобы UI был удобнее.

Проверку эндпоинтов реализовал конкурентно: выгрузку списка API из базы распределяю по виртуальным потокам (Java 21). В каждом потоке выполняются задачи проверки и асинхронного ожидания ответа (с учётом таймаутов). Такой подход позволил без лишних накладных расходов параллельно обрабатывать тысячи проверок.

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

Кстати, сервер, через который бот выполняет проверки, находится в Санкт-Петербурге (пока). Это значит, что время отклика измеряется именно из этого региона, и результаты могут немного отличаться от того, что вы видите со своего компьютера.

Сейчас бот работает так:

  • добавляем эндпоинт — встали в очереди на проверку;

  • дефолтный интервал проверки — 15 минут;

  • максимальное время отклика до уведомления — 2000 мс;

  • интервал обхода очереди всех API раз в минуту.

Не нашел карманный достойный Health Checker – написал свой Разработка, Telegram, Бот, API, Java, Telegram (ссылка), Длиннопост

Меню управления

В меню управления можно изменить название, URL, интервал проверки, время отклика, приостановить проверку, отключить уведомления для конкретного API или удалить его.

Если во время проверки больше 10 раз не удается получить положительный ответ, проверка ставится на паузу. Пользователь после решения проблемы с ресурсом может возобновить её вручную.

Не нашел карманный достойный Health Checker – написал свой Разработка, Telegram, Бот, API, Java, Telegram (ссылка), Длиннопост

Авто-остановка проверок при многократных ошибках

Бот бесплатный, но есть разные планы для удобства и справедливого распределения ресурсов.

  • Бесплатный — для обычных пользователей: до 2 API, проверка не чаще чем раз в 15 минут, простой порог отклика 1000 мс, статистика только последней проверки. Для большинства это более чем достаточно.

  • Персональный — для тех, кто хочет больше контроля: до 5 API, проверка каждую минуту, порог отклика до 250 мс, статистика последних 5 проверок и выгрузка CSV до 14 дней.

  • Групповой — для команд и групп: работа в чатах, до 20 API.

Эти тарифы сделаны не для того, чтобы кого-то заставлять платить, а чтобы покрывать расходы на активных пользователей, которые используют ресурсоёмкие функции. Если вы просто хотите получать уведомления о своих парах API, бесплатного плана хватит с головой.

Из проблем, с которыми пришлось разбираться вручную, — работа с часовыми поясами. Сервер в UTC, пользователи в разных часовых поясах. Добавил ручной ввод смещения от UTC, теперь статистика и история отображаются в локальном времени.

В перспективе хочу добавить поддержку Мini app — чтобы UI стал еще удобнее и можно было управлять проверками прямо в Telegram без многоступенчатых меню.

Бот доступен по ссылке - @APIHealthCheckerBot

Показать полностью 2
Разработка Telegram Бот API Java Telegram (ссылка) Длиннопост
4
14
ProgTime
ProgTime
3 месяца назад
ИТ-проекты пикабушников

Мой бот для техподдержки подрос: теперь он имеет связь с ВКонтакте и живёт в Docker⁠⁠

Привет, Пикабу!

Месяц назад я выложил на GitHub своего бота для технической поддержки. Он собирает сообщения от пользователей и помогает обрабатывать их в одном месте. Неожиданно для себя, за месяц я получил больше 100 клонирований и 40+ звёзд — как для моего проекта, это прям успех!

Github - https://github.com/prog-time/tg-support-bot

А ещё мне начали писать в Issues с идеями по улучшению, и я решил — пора выкатить большое обновление.

Смотрите предыдущий пост!

📥 Подключил ВКонтакте

Раньше бот работал только с Telegram. Теперь можно подключить ещё и сообщество ВКонтакте — и объединить все сообщения в одну Telegram-группу. Все, кто пишет в ВК, будут "видны" в Telegram.

Работают все основные форматы сообщений: текст, файлы, картинки, голосовушки и даже контакты. Правда, некоторые штуки пришлось адаптировать — например, контакт из Telegram теперь приходит как обычный текст: имя + телефон.

Мой бот для техподдержки подрос: теперь он имеет связь с ВКонтакте и живёт в Docker Программирование, Чат-бот, Telegram, Социальные сети, Бот, Laravel, PHP, API

🐳 Добавил docker-compose

Теперь бот можно легко запустить через Docker. Просто собрал нужные контейнеры, запустил — и всё работает.

Что внутри:

  • nginx + php + PostgreSQL

  • веб-интерфейс для работы с базой — PgAdmin

  • и даже Grafana + Loki — чтобы отслеживать логи, ошибки, запросы и всё такое

В будущем хочу ещё добавить метрики, алерты и всякие полезности для мониторинга.

Мой бот для техподдержки подрос: теперь он имеет связь с ВКонтакте и живёт в Docker Программирование, Чат-бот, Telegram, Социальные сети, Бот, Laravel, PHP, API

Что дальше?

Все эти фичи — это не просто "что бы было". Их реально просили пользователи. Спасибо каждому, кто не поленился написать Issue ❤️

Как только наберём 80 звёзд на GitHub, начну работу над подключением нового источника сообщений.

Если интересно — вот тут лежит проект на GitHub
Буду рад, если зацените, поставите ⭐ и напишете, что бы вы хотели видеть дальше.

Показать полностью 2
[моё] Программирование Чат-бот Telegram Социальные сети Бот Laravel PHP API
0
7
dendymc
dendymc
1 год назад

Telegram-бот PLAY365: меняем розыгрыши призов в чатах⁠⁠

Привет, Пикабу!

Сегодня я хочу рассказать вам о проекте, над которым я и мой друг работали последние 6 месяцев. Называется он PLAY365 – и это игровой бот для групповых чатов Telegram.

Telegram-бот PLAY365: меняем розыгрыши призов в чатах Бот, Telegram, Игры, Розыгрыш, Интерактив, API, Проект, Развлечения, Креатив, Длиннопост

Логотип PLAY365

Почему мы решили его создать? Все очень просто: розыгрыши всяких призов в больших чатах обычно проходят очень скучно. Все записываются в один большой список/группу/бота, а после окончания записи – админ запускает рандомайзер (рандстафф.ру, рандомус.ру, боты рандома, просто пальцем в небо сам и т.д.), который и выбирает номер победителя из списка. В качестве подтверждения результатов админ либо выкладывает скрин/видео итогов рандомайзера, либо дает ссылку на страничку с розыгрышем. И на наш взгляд, такой подход – мало того, что скучный, так еще и не всегда честный - рандомайзер можно бесконечно перекручивать под нужное число. К тому же, от участника не требуется вообще никакой активности: запишись в список и мониторь результаты.
Даже вышедший недавно официальный метод розыгрышей в Telegram использует такой же подход, разве что теперь можно для записи в список установить обязательные для подписки каналы, а честность рандома обеспечена самим Telegram:

Telegram-бот PLAY365: меняем розыгрыши призов в чатах Бот, Telegram, Игры, Розыгрыш, Интерактив, API, Проект, Развлечения, Креатив, Длиннопост

Самый главный его минус - необходимость приобретать Telegram Premium для выставления в качестве приза! Хоть опцию добавить свой приз к подписке предусмотрели, и на том спасибо...

Поэтому пришла идея: сделать что-то интересное, честное, интерактивное, требующее участия участника, и обязательно – в самом Telegram, чтобы не переходить на сторонние платформы и сайты.

После обсуждения общей концепции, самой первой была придумана игра «Баскетбол». Если в Telegram отправить в чат эмодзи баскетбольного мяча (🏀), то будет отыграна анимация броска мяча в кольцо, у которой есть 5 вариаций: 3 из них покажут, что мяч промахнулся, 2 – что попал, т. е. шансы на попадание – 40%, причем случайность определяется самим Telegram и на нее никак нельзя повлиять. Мы решили использовать это и сделали скрипт, который проводит игру в три раунда: в первом раунде игрок должен забить хотя бы 1 раз из 3 бросков чтобы пройти дальше, во втором – 2 из 3, в третьем – 3 из 3. Если игрок не попадает нужное количество раз – он выбывает. Чей сейчас ход, сколько кто набрал очков и так далее - все считает бот самостоятельно.

Telegram-бот PLAY365: меняем розыгрыши призов в чатах Бот, Telegram, Игры, Розыгрыш, Интерактив, API, Проект, Развлечения, Креатив, Длиннопост

Вот так "Баскетбол" выглядит в чате

Потом мы начали думать, как реализовать запись на игру, и вспомнили об inline-клавиатуре в Telegram API, которая позволяет создавать кнопки в сообщениях от бота. После серии экспериментов, сделали такой порядок:

  1. Админ запускает игру, например Баскетбол, командой /basket

  2. Бот объявляет старт записи на игру сообщением в чат, под сообщением есть три кнопки:

    1. «Присоединиться» - добавит игрока в список участников, при повторном нажатии – удалит его из списка;

    2. «Статус» - сообщит игроку, есть ли он в списке или нет;

    3. «Как играть» - выведет краткие правила текущей игры во всплывающем окне.

Telegram-бот PLAY365: меняем розыгрыши призов в чатах Бот, Telegram, Игры, Розыгрыш, Интерактив, API, Проект, Развлечения, Креатив, Длиннопост

Запись на игру

Telegram-бот PLAY365: меняем розыгрыши призов в чатах Бот, Telegram, Игры, Розыгрыш, Интерактив, API, Проект, Развлечения, Креатив, Длиннопост

Всплывающее окно "Как играть"

После того, как нужное админу количество участников записалось на игру – он стартует ее командой /next, и дальше бот все делает сам – бросает мяч за игроков, считает очки, сообщает о вылетевших и победителе:

Telegram-бот PLAY365: меняем розыгрыши призов в чатах Бот, Telegram, Игры, Розыгрыш, Интерактив, API, Проект, Развлечения, Креатив, Длиннопост

Объявление победителя по результатам бросков

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

После реализации ключевых функций дело пошло как по маслу, и мы добавили еще 7 игр:

  1. Киллер (/killer) - каждый раунд бот выбирает случайного киллера из списка игроков и даёт ему список из 10 потенциальных жертв. Киллер пишет в чат номер жертвы для "убийства", если не успел - сам выбывает. Побеждает последний оставшийся в живых. Кстати, иногда киллер может промахнуться!

  2. Бинго (/bingo) - игроки загадывают числа из заданного интервала, а потом бот постепенно оглашает случайные числа из него. Задача – отследить совпадение всех своих чисел со случайными и успеть написать "Бинго". Кто ошибся – выбывает.

  3. Рулетка (/roulette) - бот выбирает случайного игрока, и тот должен успеть написать что угодно в чат. Кто промедлил - выбывает. Побеждает последний оставшийся или ответивший в свою очередь.

  4. Заряд (/charge) - игроки как можно быстрее "заряжают батарейку" своими сообщениями в чате. Кто первый наберёт нужное количество - победил.

  5. Больше-меньше (/updown) - Игроки отгадывают число из числового интервала. Каждый раунд бот пишет текущий интервал и даёт случайному игроку возможность написать число из него. После ответа игрока бот говорит - больше загаданное число написанного или меньше, и скорректирует интервал. Игра продолжается, пока кто-то не назовёт точное число.

  6. Пандора (/pandora) - игроки по очереди выбирают ключи, чтобы открывать ящики. В ящиках - разные бонусы или штрафы. Задача - найти Грааль, кто нашёл – сразу побеждает.

  7. Кинг-Конг (/kong) - В каждом раунде один игрок выбирается в качестве мишени Кинг-Конга. Цель может спрятаться или рискнуть подразнить Кинг-Конга, чтобы уменьшить или увеличить шанс поимки следующего игрока (и себя самого). Побеждает последний оставшийся непойманный игрок.

Также, для каждой игры добавили настройки – сколько длится ожидание ответа игрока, сколько раундов будет в игре, может ли промахиваться киллер и так далее:

Telegram-бот PLAY365: меняем розыгрыши призов в чатах Бот, Telegram, Игры, Розыгрыш, Интерактив, API, Проект, Развлечения, Креатив, Длиннопост

Настройки игры "Бинго"

Потом у нас появились мини-игры, одна из них – классическая «Ферма»: нужно выращивать растения разной редкости, поливать и удобрять их, а после того, как они вырастут – собирать и продавать за Респекты (внутриигровую валюту). Более редкие растения приносят больше Респектов.

Telegram-бот PLAY365: меняем розыгрыши призов в чатах Бот, Telegram, Игры, Розыгрыш, Интерактив, API, Проект, Развлечения, Креатив, Длиннопост

Ферма - теперь и в Telegram!

Респектами можно делиться, покупать на них новые растения, а также менять их на токены, которые, в свою очередь, можно потратить на покупку уникальности – например, сделать так, что в списке игроков твое имя будет отображаться не как @username, а как заданный тобой текст (например, ПоБеДиТеЛь777).

Telegram-бот PLAY365: меняем розыгрыши призов в чатах Бот, Telegram, Игры, Розыгрыш, Интерактив, API, Проект, Развлечения, Креатив, Длиннопост

Токены также можно приумножить (или потерять) в премиум-рулетке

Чтобы админы могли модерировать игры – добавили /ban (запретит игроку записываться на игры в течение определенного срока), /mute (запретит игроку писать сообщения в чат), /kick (удалит игрока из текущей игры). Каждую функцию можно отменить:

Telegram-бот PLAY365: меняем розыгрыши призов в чатах Бот, Telegram, Игры, Розыгрыш, Интерактив, API, Проект, Развлечения, Креатив, Длиннопост

Если просто ввести /ban, без указания длительности - срок будет расти динамически

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

Это позволяет проводить игры только для старожилов или активных участников чата:

Telegram-бот PLAY365: меняем розыгрыши призов в чатах Бот, Telegram, Игры, Розыгрыш, Интерактив, API, Проект, Развлечения, Креатив, Длиннопост

Такое окно появится, если попробовать присоединиться к игре с лимитом

И в итоге, когда все было сделано и мы начали тестировать бота – неожиданно для себя мы уперлись в ограничения Telegram API по количеству отправляемых ботом сообщений: бот «падал» даже при нескольких, запущенных одновременно, играх. Чтобы это обойти и дать возможность всем играть нормально, сначала мы хотели создать много ботов, чтобы в чате мог быть только какой-то один, но это показалось слишком сложным и плохо масштабируемым при большом спросе на бота. Поэтому был придуман другой подход – сперва админ создает своего бота через @BotFather, получает его API-Token (пример такого токена - 1234567890:abcdefghijABCDEfghiJKLMNopqrSTUVwxyz), и потом связывает своего бота с системой PLAY365, отправив API-Token нашему основному боту, @play365_bot:

Telegram-бот PLAY365: меняем розыгрыши призов в чатах Бот, Telegram, Игры, Розыгрыш, Интерактив, API, Проект, Развлечения, Креатив, Длиннопост

Главное меню основного бота

После этого админу становится доступен весь функционал PLAY365 в созданном им боте, который он и добавит в свой чат. Такой подход позволяет нам (и админу) вообще не беспокоиться об ограничениях Telegram.

Чтобы окупать сервера и дальнейшее создание игр и фич – мы прикрутили к боту монетизацию посредством подписки:

Telegram-бот PLAY365: меняем розыгрыши призов в чатах Бот, Telegram, Игры, Розыгрыш, Интерактив, API, Проект, Развлечения, Креатив, Длиннопост

Еще мы добавили себе возможность применять промокоды, которые планируем иногда публиковать. Для Пикабу, например, это PIKABU365, который бесплатно применит тариф NEWBIE на 1 месяц к вашему боту.

В целом, проект получился очень насыщенный, с действительно большим количеством функционала: например, я не описал тут возможность добавления игроков-ботов в игры, логи игр, статистику игроков, добавление модераторов, плейсхолдеры для текстовой рекламы в сообщении с записью на игру и в объявлении победителя, призыв участников чата на игру... Всё это мы постарались описать на сайте-инструкции проекта, ссылка в самом конце поста. Если же есть любые вопросы/предложения/идеи - не стесняйтесь писать их тут, в комментариях, или напрямую к нам в саппорт, ссылка также в самом конце.

Отдельно хочу ответить на один из самых частых вопросов (пусть и задаваемый в разных вариациях) - это НЕ СКАМ, НЕ РУЛЕТКА, тут НЕЛЬЗЯ ВЫВОДИТЬ ДЕНЬГИ, это НЕ АЗАРТНАЯ ИГРА, НЕ СТАВКИ!
Это просто игровой бот, который делает общение в чатах чуточку интереснее и веселее.

Ссылки:
Официальный сайт проекта: play365.super.site
Основной бот в Telegram: t.me/play365_bot
Техподдержка и вопросы: t.me/play365_support

Спасибо за внимание и хороших игр!

Показать полностью 13
[моё] Бот Telegram Игры Розыгрыш Интерактив API Проект Развлечения Креатив Длиннопост
6
11
mrven
mrven
1 год назад
Лига Геймеров

Как я сделал паблик со случайными играми из Steam⁠⁠

В очередной раз, когда я бессмысленно бродил по Steam, меня посетила идея - сделать (в первую очередь для себя) паблик, который периодически будет выбирать случайную игру и постить в ВК пост с кратким описанием, рейтингом, скриншотами и трейлерами. Таким образом, можно не отрываясь от обычного браузинга соц.сетей получать идеи "на поиграть", да и в целом подтянуть свою эрудицию в мире игр.

Как я сделал паблик со случайными играми из Steam Игры, Steam, ВКонтакте, Telegram, API, Новости игрового мира, Игровые обзоры, Длиннопост

И так. Идея есть, а как реализовать? Первое, что приходит на ум - взять Steam API и с помощью него получать списки "Лидеров продаж", "Новинок" и всей библиотеки Steam, затем случайно выбирать игру из этих списков и постить.

Получение информации от Steam

Уже на этапе изучения API возникли сложности:

  • Steam умеет отдавать только список всех игр в магазине

  • Нельзя получить рейтинг игры

  • Нельзя получить теги игры

Ну что ж. В целом выглядит неприятно, но вполне решаемо. У Steam есть отдельные страницы для "Лидеров продаж" и "Новинок", что позволяет парсингом страницы получить все ссылки на игры с этих страниц. Так решаем первую проблему.

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

Хотелось бы ещё получать информацию о совместимости со Steam Deck, но они не дают эту информацию ни в API ни на странице игры. Очень странно.

Выбор игры

Как же выбирать игру из списка? Если мы будем роллить рандомно игры (особенно из всей библиотеки), то будет попадаться один шлак. Поэтому надо задать какие-то рамки, но и сильно зарезать выбор не хотелось. Поэтому фильтров для выбора всего 3:

  1. У игры есть отзывы

  2. Эти отзывы положительные

  3. Игра не была ещё опубликована в паблике

Постинг по таймеру

Т.к. в первую очередь паблик делал для себя, то тут должен быть элемент неожиданности "А что же запоститься в этот раз??". Поэтому вариант запуска скрипта руками отпадает.

СОбственно был арендован дешёвый VPS, на котором по таймеру запускается скрипт.

Ну и раз уже всё сделано для ВК, то и Telegram грех не добавить. Тем более из-за того, что это родственные продукты,то и API у них схожие и особых проблем добавление кросспостинга не создаёт.

Как я сделал паблик со случайными играми из Steam Игры, Steam, ВКонтакте, Telegram, API, Новости игрового мира, Игровые обзоры, Длиннопост

Немного технических подробностей

Для написания скрипта использовал Python с голыми requests, Beautiful Soap для парсинга страниц и wget для скачивания скриншотов и трейлеров. На сервере скрипт запускается по времени через Crontab.

Спасибо за внимание. Если тема паблика/канала вам показалась интересной - добро пожаловать!

Показать полностью 2
[моё] Игры Steam ВКонтакте Telegram API Новости игрового мира Игровые обзоры Длиннопост
6
13
user7286853
user7286853
2 года назад
Программирование на python
Серия Как я разрабатывал @lifestyle_tracker_bot

Как я разрабатывал чат-бот для Telegram, отслеживающий питание и тренировки. Часть 2 — Вы хотите кушац?⁠⁠

Ссылка на 1 часть, где мы говорили о тренировках:

Как я разрабатывал чат-бот для Telegram, отслеживающий питание и тренировки

Как я разрабатывал чат-бот для Telegram, отслеживающий питание и тренировки. Часть 2 — Вы хотите кушац? IT, Python, Telegram, Чат-бот, Программирование, Telegram бот, API, Длиннопост

Теперь настало время поговорить о второй составляющей чат-бота - дневник питания (он же калькулятор калорий).

Что по БД?

В отличие от БД с физическими упражнениями здесь есть из чего выбрать. Существует куча баз продуктов питания с доступом по API, к примеру:

  • Open Food Facts

  • Fatsecret

  • FoodData Central от Министерства сельского хозяйства США + можно скачать саму БД

  • Nutritionix

Остановиться было решено на... Nutritionix, так как она обладает одной интересной фишкой - распознавание всех продуктов из одного запроса. То есть, мы можем просто послать на сервис строку вида "3 вареных яйца и банка пива", а сервис выудит все перечисленные продукты их количество/вес/объем и отправит в ответе информацию по каждой позиции. Например:

Как я разрабатывал чат-бот для Telegram, отслеживающий питание и тренировки. Часть 2 — Вы хотите кушац? IT, Python, Telegram, Чат-бот, Программирование, Telegram бот, API, Длиннопост

При этом если мы не укажем конкретный вес/объем продукта, то сервис просто возьмет стандартное значение: 1 вареное яйцо - 50 грамм или 1 кусочек хлеба - 29 грамм. Кому интересно - можете затестить данный функционал сервиса по ссылке ниже:

https://www.nutritionix.com/natural-demo

Кстати, подобный функционал у Nutritionix есть и для тренировок - ввел объем выполненного упражнения (например, пробежал 30 минут) и получил количество потраченных калорий, но, сейчас не об этом.

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

Но, как вы заметили, сервис принимает запросы только на английском языке. Как это нас остановит? Никак. Что же тогда делать? Переводить...

Трудности (нет) перевода

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

Шаг 1. Устанавливаем библиотеку

pip install googletrans

Шаг 2. Переводим

from googletrans import Translator

def translate_from_rus_to_eng(text):

translator = Translator()

translated = translator.translate(text, src='ru', dest='en')

return translated.text

Ключи к успеху

Итак, пользователь что-то ввел, мы это перевели, а теперь настало время отправить запрос к Nutritionix. Однако, для начала нам нужно получить парочку ключей для взаимодействия с сервисом. Для этого переходим по данной ссылке, регистрируемся и копируем Application ID и Application Key.

Как я разрабатывал чат-бот для Telegram, отслеживающий питание и тренировки. Часть 2 — Вы хотите кушац? IT, Python, Telegram, Чат-бот, Программирование, Telegram бот, API, Длиннопост

Код крутится - бот мутится

У нас есть д̶в̶а̶ ̶п̶а̶к̶е̶т̶и̶к̶а̶ ̶т̶р̶а̶в̶ы̶,̶ ̶с̶е̶м̶ь̶д̶е̶с̶я̶т̶ ̶п̶я̶т̶ь̶ ̶а̶м̶п̶у̶л̶ ̶м̶е̶с̶к̶а̶л̶и̶н̶а̶,̶ ̶5̶ ̶п̶а̶к̶е̶т̶и̶к̶о̶в̶ ̶д̶и̶э̶т̶и̶л̶а̶м̶и̶д̶а̶ ̶л̶и̶з̶е̶р̶г̶и̶н̶о̶в̶о̶й̶ ̶к̶и̶с̶л̶о̶т̶ы̶ ̶и̶л̶и̶ ̶Л̶С̶Д̶,̶ ̶с̶о̶л̶о̶н̶к̶а̶,̶ ̶н̶а̶п̶о̶л̶о̶в̶и̶н̶у̶ ̶н̶а̶п̶о̶л̶н̶е̶н̶н̶а̶я̶ ̶к̶о̶к̶а̶и̶н̶о̶м̶,̶ ̶и̶ ̶ц̶е̶л̶о̶е̶ ̶м̶о̶р̶е̶ ̶р̶а̶з̶н̶о̶ц̶в̶е̶т̶н̶ы̶х̶ ̶а̶м̶ф̶е̶т̶а̶м̶и̶н̶о̶в̶,̶ ̶б̶а̶р̶б̶и̶т̶у̶р̶а̶т̶о̶в̶ ̶и̶ ̶т̶р̶а̶н̶к̶в̶и̶л̶и̶з̶а̶т̶о̶р̶о̶в̶,̶ ̶а̶ ̶т̶а̶к̶ ̶ж̶е̶ ̶л̶и̶т̶р̶ ̶т̶е̶к̶и̶л̶ы̶,̶ ̶л̶и̶т̶р̶ ̶р̶о̶м̶а̶,̶ ̶я̶щ̶и̶к̶ ̶«̶Б̶а̶д̶в̶а̶й̶з̶е̶р̶а̶»̶,̶ ̶п̶и̶н̶т̶а̶ ̶ч̶и̶с̶т̶о̶г̶о̶ ̶э̶ф̶и̶р̶а̶,̶ ̶и̶ ̶1̶2̶ ̶п̶у̶з̶ы̶р̶ь̶к̶о̶в̶ ̶а̶м̶и̶л̶н̶и̶т̶р̶и̶т̶а̶ 2 ключа для API и переведенный запрос, так что - давайте кодить.

Все запросы (POST) будем посылать на следующий URL, сохранив его в переменную:

natural_url = https://trackapi.nutritionix.com/v2/natural/nutrients

  1. В начале подключаем библиотеку requests и собираем заголовки из Content-Type, Application ID и Application Key:

    import requests

    # Заголовки

    headers = { "Content-Type": "application/json",

    "x-app-id": '672c6c24',

    "x-app-key": '6f4ba779b23cefe6adf151de7860fc87' }

  2. Собираем тело запроса, который включает переведенный запрос и параметра timezone (оставим по дефолту US/Eastern, пока это неважно):

# Тело запроса

body = { "query": query,

"timezone": "US/Eastern" }

3. Отсылаем POST-запрос на сервер Nutritionix, куда включаем URL, заголовки и тело запроса, а его ответ сохраняем в переменную response:

# Выполнение POST-запроса

response = requests.post(natural_url, json=body, headers=headers)

4. Проверяем что запрос удался и вернул код 200 (OK), переводим его в JSON и получаем значение по ключу 'foods', где как раз и лежит список словарей с информацией по каждому продукту:

if response.status_code == 200:

data = response.json() foods = data["foods"]

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

class NutritionixFood: def __init__(self, food:dict) -> None:

self.food_name = food.get('food_name')

self.brand_name = food.get('brand_name') self.serving_qty = food.get('serving_qty')

self.serving_weight_grams = food.get('serving_weight_grams')

self.nf_calories = food.get('nf_calories')

self.nf_total_fat = food.get('nf_total_fat')

self.nf_saturated_fat = food.get('nf_saturated_fat')

self.nf_cholesterol = food.get('nf_cholesterol')

self.nf_total_carbohydrate = food.get('nf_total_carbohydrate')

self.nf_dietary_fiber = food.get('nf_dietary_fiber')

self.nf_sugars = food.get('nf_sugars')

self.nf_protein = food.get('nf_protein')

self.nf_potassium = food.get('nf_potassium')

self.nf_p = food.get('nf_p')

self.full_nutrients = food.get('full_nutrients')

self.photo_url = food.get('photo', {}).get('highres')

self.barcode = food.get('upc')

5. Осталось только воспользоваться генератором списка и передать каждый словарь из списка словарей в конструктор класса NutritionixFood. В итоге мы получим список объектов данного класса.

result = [NutritionixFood(food) for food in foods]

Готово! Весь код можете просмотреть на гитхаб:

https://github.com/Molot999/Nutritionix

Теперь осталось только объединить это с библиотекой telebot:

  1. Запросить ввод текста с перечислением съеденного

  2. Перевести текст на английский

  3. Отправить текст через API Nutritionix

  4. Получить ответ сервера

  5. "Конвертировать" ответ сервера в список объектов класса NutritionixFood

  6. Вывести список продуктов пользователю, переведя названия продуктов с английского на русский:

Как я разрабатывал чат-бот для Telegram, отслеживающий питание и тренировки. Часть 2 — Вы хотите кушац? IT, Python, Telegram, Чат-бот, Программирование, Telegram бот, API, Длиннопост

Дьявол кроется в деталях

Как я говорил выше, кроме основных составляющих пищи, которые в основном нас и интересуют (КБЖУ), данный сервис предоставляет еще кучу других. Некоторые из них, например сахар или калий, хранятся в атрибутах класса в готовом виде (nf_sugars и nf_potassium соответственно), но основная часть содержится в атрибуте full_nutrients со списком словарей, каждый из которых имеет следующие ключи:

  • ID нутриента

  • Его количество

Например, для запроса "3 boiled eggs" мы получим следующее:

[ {"attr_id": 203, "value": 18.87}, {"attr_id": 204, "value": 15.915}, {"attr_id": 205, "value": 1.68}, {"attr_id": 207, "value": 1.62}, {"attr_id": 208, "value": 232.5}, {"attr_id": 221, "value": 0}, {"attr_id": 255, "value": 111.93}, {"attr_id": 262, "value": 0}, {"attr_id": 263, "value": 0}, {"attr_id": 268, "value": 973.5}, {"attr_id": 269, "value": 1.68}, {"attr_id": 291, "value": 0}, {"attr_id": 301, "value": 75}, {"attr_id": 303, "value": 1.785}, {"attr_id": 304, "value": 15}, {"attr_id": 305, "value": 258}, {"attr_id": 306, "value": 189}, {"attr_id": 307, "value": 186}, {"attr_id": 309, "value": 1.575}, {"attr_id": 312, "value": 0.0195}, {"attr_id": 313, "value": 7.2}, {"attr_id": 315, "value": 0.039}, {"attr_id": 317, "value": 46.2}, {"attr_id": 318, "value": 780}, {"attr_id": 319, "value": 222}, {"attr_id": 320, "value": 223.5}, {"attr_id": 321, "value": 16.5}, {"attr_id": 322, "value": 0}, {"attr_id": 323, "value": 1.545}, {"attr_id": 324, "value": 130.5}, {"attr_id": 326, "value": 3.3}, {"attr_id": 328, "value": 3.3}, {"attr_id": 334, "value": 15}, {"attr_id": 337, "value": 0}, {"attr_id": 338, "value": 529.5}, {"attr_id": 401, "value": 0}, {"attr_id": 404, "value": 0.099}, {"attr_id": 405, "value": 0.7695}, {"attr_id": 406, "value": 0.096}, {"attr_id": 410, "value": 2.097}, {"attr_id": 415, "value": 0.1815}, {"attr_id": 417, "value": 66}, {"attr_id": 418, "value": 1.665}, {"attr_id": 421, "value": 440.7}, {"attr_id": 430, "value": 0.45}, {"attr_id": 431, "value": 0}, {"attr_id": 432, "value": 66}, {"attr_id": 435, "value": 66}, {"attr_id": 454, "value": 0.9}, {"attr_id": 501, "value": 0.2295}, {"attr_id": 502, "value": 0.906}, {"attr_id": 503, "value": 1.029}, {"attr_id": 504, "value": 1.6125}, {"attr_id": 505, "value": 1.356}, {"attr_id": 506, "value": 0.588}, {"attr_id": 507, "value": 0.438}, {"attr_id": 508, "value": 1.002}, {"attr_id": 509, "value": 0.7695}, {"attr_id": 510, "value": 1.1505}, {"attr_id": 511, "value": 1.1325}, {"attr_id": 512, "value": 0.447}, {"attr_id": 513, "value": 1.05}, {"attr_id": 514, "value": 1.896}, {"attr_id": 515, "value": 2.466}, {"attr_id": 516, "value": 0.6345}, {"attr_id": 517, "value": 0.7515}, {"attr_id": 518, "value": 1.404}, {"attr_id": 601, "value": 559.5}, {"attr_id": 606, "value": 4.9005}, {"attr_id": 607, "value": 0}, {"attr_id": 608, "value": 0}, {"attr_id": 609, "value": 0.0045}, {"attr_id": 610, "value": 0.0045}, {"attr_id": 611, "value": 0.0045}, {"attr_id": 612, "value": 0.0525}, {"attr_id": 613, "value": 3.5235}, {"attr_id": 614, "value": 1.242}, {"attr_id": 617, "value": 5.5875}, {"attr_id": 618, "value": 1.782}, {"attr_id": 619, "value": 0.0525}, {"attr_id": 620, "value": 0.2235}, {"attr_id": 621, "value": 0.057}, {"attr_id": 626, "value": 0.465}, {"attr_id": 627, "value": 0}, {"attr_id": 628, "value": 0.045}, {"attr_id": 629, "value": 0.0075}, {"attr_id": 630, "value": 0.0045}, {"attr_id": 631, "value": 0}, {"attr_id": 645, "value": 6.1155}, {"attr_id": 646, "value": 2.121}, ]

Чтобы сопоставить attr_id с реальным "веществом" необходимо обратиться к справочной таблице:

Как я разрабатывал чат-бот для Telegram, отслеживающий питание и тренировки. Часть 2 — Вы хотите кушац? IT, Python, Telegram, Чат-бот, Программирование, Telegram бот, API, Длиннопост

Здесь нас интересуют лишь самые основные колонки: A (ID), D (Название) и E (единица измерения). Для простоты взаимодействия можно скопировать данную таблицу в Excel, а уже из него спарсить все это дело в таблицу БД. На всякий случай оставил тег USDA (может когда-то пригодится) и добавил колонку ru_name, в которую потом можно будет "запихнуть" русское название нутриента, прогнав колонку name, к примеру, через тот же самый googletrans.

Как я разрабатывал чат-бот для Telegram, отслеживающий питание и тренировки. Часть 2 — Вы хотите кушац? IT, Python, Telegram, Чат-бот, Программирование, Telegram бот, API, Длиннопост

Кстати, в этой же справочной таблице на 2 листе есть ссылка на документ от FDA (Агентство Министерства здравоохранения и социальных служб США), где прописаны нормы потребления нутриентов. Здесь в основном нас интересует колонка 3 (взрослые и дети >= 4 лет),ну а кого-то 6 (беременные и кормящие женщины).

Как я разрабатывал чат-бот для Telegram, отслеживающий питание и тренировки. Часть 2 — Вы хотите кушац? IT, Python, Telegram, Чат-бот, Программирование, Telegram бот, API, Длиннопост

Вернемся к коду и создадим класс, представляющий каждый нутриент:

class NutritionixNutrient: def __init__(self, usda_tag, name, unit, ru_name) -> None:

self.usda_tag = usda_tag

self.name = name

self.ru_name = ru_name

self.unit = unit self.value = None

И начинаем проходиться по тому самому списку словарей

[ {"attr_id": 203, "value": 18.87}, {"attr_id": 204, "value": 15.915}, {"attr_id": 205, "value": 1.68}, {"attr_id": 207, "value": 1.62}, {"attr_id": 208, "value": 232.5}, ... ]

Подобным образом:

# Получаем список словарей из объекта NutritionixFood

full_nutrients = food.get('full_nutrients')

# Создаем пустой список для объектов NutritionixNutrient

food_nutrients = []

# Проходимся по каждому словарю из списка словарей

for nutrient in full_nutrients:

# Получаем из БД инфо о нутриенте по attr_id и пихаем ее в конструктор класса #NutritionixNutrient food_nutrient=NutritionixNutrient(db.get_nutritionix_nutrient_info(nutrient_info.get('attr_id')))

# Отдельно устанавливаем количество нутриента

food_nutrient.value = nutrient_info.get('value')

# Добавляем объект класса NutritionixNutrient в список

food_nutrients.append(food_nutrient)

# А тут проводим какие-либо манипуляции с food_nutrients

Как я разрабатывал чат-бот для Telegram, отслеживающий питание и тренировки. Часть 2 — Вы хотите кушац? IT, Python, Telegram, Чат-бот, Программирование, Telegram бот, API, Длиннопост

В итоге получим список объектов класса NutritionixNutrient, каждый из которых содержит информацию о конкретном нутриенте из продукта. А имея информацию обо всех нутриентах, потребленных в течение определенного периода уже можно сделать выводы о его диете (много соли, мало витамина B и т.д.) и дать соответствующие рекомендации, опираясь на вышеописанные нормы FDA или национальные.

Затестить функционал по добавлению продуктов питания можете в данном чат-боте совершенно бесплатно.

Кстати, а почему бы не облегчить жизнь пользователю и дать ему возможность просто записать голосовое сообщение со всем съеденным? Поговорим об это в части №3...

Показать полностью 7
[моё] IT Python Telegram Чат-бот Программирование Telegram бот API Длиннопост
5
NEDoK
2 года назад

Как мы ChatGPT-3 бота учили контекст запоминать⁠⁠

Привет, это NED, сейчас я расскажу вам о разработке нашего нового бота под названием projectND(Nastya Dyatlova) ,данный бот работает только в телеграм и находится в закрытом тестировании, чтобы туда попасть вам необходимо вступить в паблик ChatGPT Артемий (vk.com) и войти в беседу ,находящуюся в закрепленном посте , да-да, там тоже живет бот и работает 24/7 на моем сервере абсолютно бесплатно !

Так вот, в прошлых статьях я писал о том ,как поднимал сервер , запускал паблик ВК и то как ChatGPT 3.5 написал мне код и я его доработал без опыта в программировании !

Сейчас же после наплыва аудитории возникла потребность в том, чтобы бот смог поддержать разговор ,так как это основная претензия (ну и еще жалуются на вылеты, ну тут сорян openAI часто вылетает с разрывом соединения) прочитав пару гайдов в интернете ,как сделать так ,чтобы PythonBot мог понимать контекст ,а также спросив об этом ChatGPT бота у меня с горем пополам получилось сделать ,так ,чтобы ботик мог запоминать контекст...

НО ТУТ

Оказалось, что у меня возникла другая проблема, бот начал запоминать контекст, но контекст он запоминал глобальный , то есть то что написал каждый пользователь использовавший бота и вот ,что из этого вышло

Как мы ChatGPT-3 бота учили контекст запоминать Telegram, Искусственный интеллект, Переписка, IT юмор, ChatGPT, Gpt, Машинное обучение, Нейронные сети, Python, Программирование, Юмор, Девушки, Диалог, Программист, IT, API, Интернет, ВКонтакте, Бот, Чат-бот, Длиннопост
Как мы ChatGPT-3 бота учили контекст запоминать Telegram, Искусственный интеллект, Переписка, IT юмор, ChatGPT, Gpt, Машинное обучение, Нейронные сети, Python, Программирование, Юмор, Девушки, Диалог, Программист, IT, API, Интернет, ВКонтакте, Бот, Чат-бот, Длиннопост
Как мы ChatGPT-3 бота учили контекст запоминать Telegram, Искусственный интеллект, Переписка, IT юмор, ChatGPT, Gpt, Машинное обучение, Нейронные сети, Python, Программирование, Юмор, Девушки, Диалог, Программист, IT, API, Интернет, ВКонтакте, Бот, Чат-бот, Длиннопост

ЭТО БЫЛИ МОИ ЗАПРОСЫ, А ВОТ ЧТО НАЧАЛИ ТВОРИТЬ РЕБЯТА ИЗ ЧАТИКА

Как мы ChatGPT-3 бота учили контекст запоминать Telegram, Искусственный интеллект, Переписка, IT юмор, ChatGPT, Gpt, Машинное обучение, Нейронные сети, Python, Программирование, Юмор, Девушки, Диалог, Программист, IT, API, Интернет, ВКонтакте, Бот, Чат-бот, Длиннопост
Как мы ChatGPT-3 бота учили контекст запоминать Telegram, Искусственный интеллект, Переписка, IT юмор, ChatGPT, Gpt, Машинное обучение, Нейронные сети, Python, Программирование, Юмор, Девушки, Диалог, Программист, IT, API, Интернет, ВКонтакте, Бот, Чат-бот, Длиннопост
Как мы ChatGPT-3 бота учили контекст запоминать Telegram, Искусственный интеллект, Переписка, IT юмор, ChatGPT, Gpt, Машинное обучение, Нейронные сети, Python, Программирование, Юмор, Девушки, Диалог, Программист, IT, API, Интернет, ВКонтакте, Бот, Чат-бот, Длиннопост
Как мы ChatGPT-3 бота учили контекст запоминать Telegram, Искусственный интеллект, Переписка, IT юмор, ChatGPT, Gpt, Машинное обучение, Нейронные сети, Python, Программирование, Юмор, Девушки, Диалог, Программист, IT, API, Интернет, ВКонтакте, Бот, Чат-бот, Длиннопост
Как мы ChatGPT-3 бота учили контекст запоминать Telegram, Искусственный интеллект, Переписка, IT юмор, ChatGPT, Gpt, Машинное обучение, Нейронные сети, Python, Программирование, Юмор, Девушки, Диалог, Программист, IT, API, Интернет, ВКонтакте, Бот, Чат-бот, Длиннопост

Как мы видим запрос связанный с тюрьмой наложился на запрос пользователя, который пытался обучить ее ведением баз данных ! Да ,я знаю что глобальный контекст это бред и именно из-за такого наплыва пользователей и возникали ошибки и вылеты бота, поэтому уже есть переписанный код, который ограничивает работу Анастасии в пределах одного диалога, но в бота он еще не внедрен !

Спасибо за внимание, это была больше развлекательная статья нежели познавательная, однако обученная модель с пониманием контекста вскоре будет внедрена, как в телеграм, так и ВК ботов

-----------------------------

Ссылки на ботов : ВК ChatGPT Артемий (vk.com)

Бот Телеграм : https://t.me/GPT_RUSSIA_BOT

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

-----------------------------

Показать полностью 8
[моё] Telegram Искусственный интеллект Переписка IT юмор ChatGPT Gpt Машинное обучение Нейронные сети Python Программирование Юмор Девушки Диалог Программист IT API Интернет ВКонтакте Бот Чат-бот Длиннопост
6
11
eaborovkov
eaborovkov
3 года назад
IT News

Война Meta* против поставщиков серого API WhatsApp. Или что делать, если вы хотели перехитрить корпорацию⁠⁠

Спустя три года после выхода WABA (WhatsApp Business Api), разработчикам серых API начали прилетать иски и угрозы. Разбираемся что делать, если у вас есть действующий WhatsApp бот или вы поставщик серого API для WhatsApp. Инсайдерская информация, советы и прогнозы на будущее.

Война Meta* против поставщиков серого API WhatsApp. Или что делать, если вы хотели перехитрить корпорацию WhatsApp, API, Чат-бот, Бизнес, Интеграция, Viber, Telegram, Facebook, ВКонтакте, Meta, Длиннопост

Предыстория


WhatsApp появился в 2009 году. Белое официальное API (WABA) для него вышло только в 2018. И очевидно, что почти 10 лет миллионная аудитория мессенджера не могла оставаться без внимания. Предприниматели хотели взаимодействовать со своими клиентами в том мессенджере, который всем привычен.


Так появились поставщики серого API для WhatsApp.


Не смотря на то, что они хорошо работали (и зарабатывали) вплоть до 2022 года, в Facebook* (ныне Meta*) не сильно переживали про их существование. Иногда, со стороны Meta* были какие-то письма и попытки запугать серых разработчиков. Но, в большинстве своем, эти угрозы ничем не заканчивались. До суда не доходило.


В 2019 году, с выходом белого API, в сторону WhatsApp посмотрели и крупные компании, которые до этого неохотно шли на сотрудничество с серыми решениями. Meta* брала деньги за каждое отправленное сообщение и по началу продавала только крупным покупателям с большими чеками. К 2022 году цены снизились, условия упростились, появилось больше партнеров и, наконец, даже небольшие компании могут себе позволить подключиться к WABA.

Рынок поменялся, но не полностью


В какой-то момент, в 2022 году, Meta* наконец решила давить серых поставщиков. То ли пришло осознание, что серое API до сих пор дешевле (там нет оплаты за каждое сообщение), то ли просто решили остаться единственными на этом поприще — не известно.


Факт остается фактом. В начале 2022 года, компаниям поставщикам серого API опять начали приходить письма от Meta*. Там были не абстрактные обещания обратиться в суд, а уже весьма конкретные повестки. Многие даже выходили на диалог с юристами Meta*, где объяснялось, что-то в стиле “мы все равно вас задавим, поэтому лучше по-хорошему отползите в сторону”.


Мы, в Botcreators занимаемся разработкой чат-ботов уже более 4 лет. И, в какой-то момент, к нам обратился клиент, который хотел чат-бота для WhatsApp. В поисках способов закрыть ему задачу, мы познакомились с Никитой К. Именно он и поделился своим взглядом на эти события.

Никита на тот момент был одним из сооснователей одного из крупнейших поставщиков серого API для WhatsApp. Полностью его имя и компанию мы не называем по просьбе самого Никиты.

Далее слова Никиты:


Мы начали делать наше API в 2015 году, когда про WABA (WhatsApp Business Api) и близко не было речи. Ее (WABA) презентовали в 2018 году. А более-менее доступной она стала в 2020.
Долгое время мы держались среди лидеров подобных решений благодаря широкой функциональности нашей реализации. С Facebook* мы долго не пересекались.
Далее, в 2021 году, мы получили письмо с претензиями от юристов головного офиса уже компании Meta*. После общения с юристами, мы поняли, нам нужно переходить на WABA, а в самом плохом случае за вменяемый нам Copyright Infringement в США даже может грозить реальный срок до 5 лет.
Мы любили наш продукт, но выбора нам не оставили. Никакие условия и детали переговоров я не могу озвучивать. Но обернуться могло все сильно хуже. Нам оставили единственный выход: переход на WABA.
Какие выводы я могу сделать сейчас? Во-первых, Meta* основательно берется за этот растущий рынок. И сейчас все серые игроки на мушке. Нам точно известно, что списки серых провайдеров у них есть. Во-вторых, есть компании, которые за лояльность Meta* готовы приносить им информацию о неофициальных провайдерах. В-третьих, советую всем читать все обновления правил пользования WhatsApp и законодательство в области Copyright infringement, потому что многим кажется, что они ничего не нарушают.
Технически, неофициальное API может существовать дальше, но только в условии реально серого бизнеса, но Meta* будет давить юридически и технически. И я не уверен, что игра с такой корпорацией стоит свеч.

Конец цитаты.

Почему выбирали и выбирают WhatsApp, а не Telegram, VK или Viber?


Все просто: в WhatsApp можно чтобы бот “писал первым”. С этим есть куча нюансов в виде блокировок номера, ограничение на количество отправляемых сообщений и т.д. Но “ключевая особенность” именно в холодной рассылке.


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


В Telegram такая возможность появилась сравнительно недавно. И то, совсем “в холодную” чат-боты писать по прежнему не могут (надеюсь и не смогут). Чтобы бот написал якобы первым, надо, чтобы пользователь подписался на канал и как бы одновременно фоном стартанул бота (а то и не одного). А бот сразу удалил сообщение о старте и пропал в списке чатов, чтобы у пользователя в будущем сложилось ощущение, что бот ему пишет “в холодную”. И я сейчас не говорю про холодную рассылку с помощью Telegram API. Я про Telegram Bot API. Кому интересно подробнее, у нас была статья на эту тему.


Про VK, думаю, пояснять не надо. Чтобы бот мог тебе что-либо прислать, ты должен или на группу подписаться или сам начать с ним диалог. Исключение, разве что, только всякие hh.ru или Cdek, которые шлют уведомление в VK даже если ты на них не подписывался. У них договоры с VK.


Вот и получается, что когда вы сходили в салон красоты, то просьба об оценке визита вам приходит именно в WhatsApp. А не в Viber или Telegram или VK. При том, что записывались вы не через WhatsApp.

Будущее Meta* и WhatsApp Business API


В период с 2009 по 2022 год многие себе успели заказать чат-ботов для WhatsApp, либо слепить их на конструкторах. Если вы из их числа, то вот, что вам надо понять или выяснить:


- Как работает ваша интеграция? Через серое API или через белое? Спросите вашего поставщика услуг или коллег, кто этим занимался.


- WABA и серые решения устроены принципиально по разному. Если у Meta* интеграция сделана понятно где (в ядре), то серые поставщики API делают интеграцию в обход, часто через жуткие костыли. Поэтому переехать по щелчку пальцев с серого решения на белое, скорее всего, не получится.


- Скоро не останется серых поставщиков. Даже в условиях нашего рынка. Хотя бы потому, что им закроют техническую возможность поддерживать свои продукты. Ну или потому, что в Meta* очень плотно следят за всеми, кто пытается создать что-либо на базе их продуктов. И это инсайд, а не конспирология. Думать, что именно про вас в Meta* еще не слышали — большое заблуждение. Бояться их? Решать вам.


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


Если вам предлагают сделать бота на WABA, то просите документы, подтверждающие, что они действительно используют WABA, а не делают вид, что используют.


Кстати, за 2021 и 2022 год цены на WABA снижаются. Рынок уплотняется и сама Meta* тоже снижает планку для провайдеров. Глядишь, к 2024 году цены будут адекватными и для микро бизнеса.

*Meta (ранее Facebook) запрещенная в РФ организация.

А еще у нас есть канал про чат-ботов https://t.me/botcreatorsru

Показать полностью 1
[моё] WhatsApp API Чат-бот Бизнес Интеграция Viber Telegram Facebook ВКонтакте Meta Длиннопост
3
37
YouZ63
3 года назад
Исследователи космоса

Исторические данные от NASA⁠⁠

Я ранее писал статью А вы знали что у NASA есть API?


В ней я описал как реализовал автоматическое наполнение телеграм канала https://t.me/daily_nasa "астрономической картинкой дня от NASA" с описанием на русском а также со ссылкой на загрузку картинки в HD, позже я реализовал добавление в этот канал статей на тему астрономии из http://hubblesite.org/ и тоже на русском, все круто но меня парило то, что каналу моему меньше года, а NASA публикует данные уже очень много лет, по этому я решил взяться в реализацию отображения исторических данных за выбранный период в телеграм, как? смотрите ниже.


Идея была такой, есть телеграм бот, после нажатия старт в нем отображается красивый календарь, где можно выбрать год, месяц, и день, после выбора мы получаем за этот день картинку / видео и описание (APOD в общем)


Сейчас это выглядит так:

Поклацать можете тут - https://t.me/DailyNasaCalendarbot


Реализовал все опять же таки на Python, так вот:


Те кто читал мои статьи ранее знают, что я не такой уж и фанат "изобретать велосипеды" (разве что иногда) по этому я подумал что писать красивый календарь самому будет долговато, выход? я решил поискать его на GitHub, и я нашел - https://github.com/artembakhanov/python-telegram-bot-calenda...


Отличная библиотека, которая ставится одной командой:

python3 -m pip install python-telegram-bot-calendar

Вопрос, как прикрутить это к NASA API ?


1 - Заходим в примеры (examples) и смотрим скрипт simple_pytelegrambotapi.py

Исторические данные от NASA Космос, Apod, NASA, Астрономия, Телескоп Хаббл, Наука, Python, API, Telegram, Разработка, Программирование, IT, Научпоп, Планета, Telegram бот, Видео, Без звука, Вертикальное видео, Длиннопост

Тут есть блок:

Исторические данные от NASA Космос, Apod, NASA, Астрономия, Телескоп Хаббл, Наука, Python, API, Telegram, Разработка, Программирование, IT, Научпоп, Планета, Telegram бот, Видео, Без звука, Вертикальное видео, Длиннопост

В result в конечном счете приходит год, месяц и день который вы выбрали на календаре, в примерно таком формате 2022-03-04


и это отлично, ибо все что нам остается, это записать этот result в запрос к NASA API, а именно:

Исторические данные от NASA Космос, Apod, NASA, Астрономия, Телескоп Хаббл, Наука, Python, API, Telegram, Разработка, Программирование, IT, Научпоп, Планета, Telegram бот, Видео, Без звука, Вертикальное видео, Длиннопост

В итоге остается только распарсить data, сформировать сообщение и отправить в телеграм, чуть более подробней про это тут:

А вы знали что у NASA есть API?

Продолжение поста «А вы знали что у NASA есть API?»

Особенности API от NASA


Ссылка на бот - https://t.me/DailyNasaCalendarbot

Ссылка на канал - https://t.me/daily_nasa

UPD:


Сейчас данные можно получать с Июля 1995 года по сегодня. В боте еще есть некоторые недоработки, но я ими займусь как только отловлю все баги, если вы случайно нарветесь на какой-то баг, или у вас будут какие-то предложения пишите их в комментарии, все приму во внимание😁

Показать полностью 3
[моё] Космос Apod NASA Астрономия Телескоп Хаббл Наука Python API Telegram Разработка Программирование IT Научпоп Планета Telegram бот Видео Без звука Вертикальное видео Длиннопост
1
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии