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

Рецепт Счастья

Казуальные, Головоломки, Новеллы

Играть

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

  • cristall75 cristall75 6 постов
  • 1506DyDyKa 1506DyDyKa 2 поста
  • Animalrescueed Animalrescueed 35 постов
Посмотреть весь топ

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

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

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

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

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Пятерочка Промокоды Aroma Butik Промокоды Яндекс Путешествия Промокоды Яндекс Еда Постила Футбол сегодня
0 просмотренных постов скрыто
11
ProgTime
ProgTime
Лига программистов

Обновления Telegram-бота для технической поддержки: API для внешних источников и новые возможности⁠⁠

4 месяца назад

Всем привет! Вы просили - я сделал! Я выпустил релиз №3 для бота технической поддержки на GitHub.

Прошло уже несколько месяцев с последнего обновления, и бот за это время получил вдвое больше звёзд на GitHub, что очень мотивирует продолжать развитие и поддержку проекта.

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

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

Предисловие

Для тех, кто не знаком с проектом: TG Support Bot — это бот на Laravel, который объединяет клиентов и менеджеров через Telegram и ВКонтакте, скрывая личные аккаунты и маршрутизируя общение через темы в Telegram-группе.

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

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

Буду благодарен, если вы поддержите мой проект ⭐ на GitHub!

Руководство по установки

Я записал видео-инструкцию для установки данного решения на VPS с предустановленным Docker Compose.

Youtube - https://youtu.be/yNiNtFWOF2w

Rutube - https://rutube.ru/video/bdd0cc5ab4e13530fd7e0c2413931211/

ВК Видео - https://vkvideo.ru/video-141526561_456239132

Обратная связь

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

https://t.me/pt_tg_support

Также сюда будут публиковаться новости по выпуску обновлений.

API — не альтернатива мессенджерам, а универсальный инструмент

Хочу сразу уточнить: разработка API не заменяет расширение списка поддерживаемых мессенджеров и соцсетей. Я продолжаю работать над интеграциями с ними и буду добавлять новые источники трафика.

Однако API необходим для подключения кастомных источников — живых чатов, CRM-систем, форм на сайте и других нестандартных каналов.

Что входит в первую версию API?

В API реализованы базовые маршруты для работы с сообщениями:

  • GET api/external/messages — получение списка сообщений с возможностью фильтрации

  • GET api/external/messages/{id_message} — получение конкретного сообщения по ID

  • POST api/external/messages — отправка нового сообщения

  • PUT api/external/messages — изменение существующего сообщения

  • DELETE api/external/messages — удаление сообщения

Для работы с API необходимо создать пользователя и сгенерировать для него API-токен. Рекомендую создавать отдельного пользователя под каждый источник.

Создать пользователя и токен можно командой:

php artisan app:generate-token {название_источника}

Также нужно прикрепить к источнику ресурс, куда будут поступать сообщения от обработчика.

Как это работает?

Процесс довольно простой:

  1. На вашей стороне генерируется уникальный ID пользователя — это может быть хэш ключ или любой уникальный идентификатор.

  2. При отправке сообщения в тело запроса передаются: ID пользователя, код источника, текст сообщения и, при необходимости, файлы.

  3. Система идентифицирует пользователя или создаёт новую запись, если это первое сообщение от него.

  4. Сообщение из вашего источника направляется в Telegram-группу поддержки.

Менеджеры в группе, как и раньше, могут отвечать любыми типами сообщений. Текст отправляется как текст, остальные — конвертируются в файлы. В названии темы указывается ID клиента и источник сообщения.

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

Подробная инструкция по работе с API уже есть в разделе wiki на GitHub.

Добавлены новые консольные команды

Я добавил несколько полезных консольных команд.

php artisan telegram:set-webhook

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

php artisan app:generate-token

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

Swagger для API

Для API был разработан генератор swagger документа.

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

Принцип прост! Вы описываете документацию по частям в resources/swagger. Важно граматно подходить к именованию файлов и компонентов.

После создания структуры, вы запускаете artisan команду и документация собирается в единый документ.

php artisan swagger:generate

На выходе вы получаете 2 версии документации

  1. В формате json, которую можно использовать для нейросетей или программ

  2. В формате Swagger-ui для просмотра в браузере

Мелкие доработки

  • Улучшено логирование ошибок — все логи теперь доступны в Grafana;

  • Исправил баги, о которых вы писали в Issues;

  • Добавил контейнер redisinsight для просмотра Redis данных через WEB интерфейс;

  • Переписал инструкции для подключения и настройки бота;

Спасибо всем за поддержку и обратную связь! Продолжаю работать над улучшениями и буду рад новым предложениям и вопросам.

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

Показать полностью 2
[моё] Программирование Чат-бот Стартап PHP Laravel Docker IT Open Source Telegram Длиннопост
0
6
zwuck

Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть тре⁠⁠

8 месяцев назад

Штош, продолжаем эпопею.

В предыдущих частях Telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть уно  и Разработка telegram мини-приложения в 2025 или как я дошел до жизни такой. Часть до  я поведал вам, мои дорогие читатели и подписчики, о выборе направления разработки и инструментах для решения поставленных задач.

Что у нас теперь есть?

Приложение запускается на моем собственном компьютере и я могу писать сам себе какой я бесподобный. Но в этом ли смысл моего приложения, так ли я его хотел использовать? Хмм…

Хмм...

Хмм...

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

Что для этого необходимо сделать? Правильно, приложение должно быть доступно через интернет, чтобы каждый владелец приложения telegram мог спокойно запустить его в любой точке мира и наслаждаться общением. Есть два варианта решения:

  • Обеспечить доступ к приложению на моем компьютере из внешней сети (есть несколько интересных способов решения данной задачи, если будет интересно, напишу и о них);

  • Арендовать VPS (Virtual Private Server ака виртуальный приватный сервер) у любого хостинг провайдера.

Я выбрал второй вариант. Что такое VPS? Если совсем кратко это просто тупо компьютер, доступный из интернета и обеспечением которого занимается хостинг провайдер. Управление VPS у меня реализовано через консоль и выглядит следующим образом.

Я кулхацкер так та

Я кулхацкер так та

Вы видите все составные части моего приложения:

  • В папке backend находятся все данные и файлы, связанные с «основным» бэкендом;

  • Файл docker-compose.yml отвечает за обеспечение взаимодействия между докер контейнерами, о которых я расскажу далее;

  • В папке frontend находятся все данные и файлы, связанные с фронтендом;

  • В папке nginx находятся все данные и файлы, связанные с инструментом nginx, который реализует веб-сервер и почтовый прокси-сервер;

  • В папке tgbot находятся все данные и файлы, реализующие функционал взаимодействия с ботом в тг.


    Как эти папки с файлами оказались на VPS? Есть три способа, о которых я знаю:

  • Через консоль по SFTP (это транспортный протокол такой) просто тупо копировать все данные;

  • Через инструмент FileZilla, который реализует SFTP, но с удобным графическим интерфейсом;

  • Через git – когда вы заливаете весь ваш код на github или gitlab и уже оттуда скачиваете все на VPS.

Я использую 2 и 3 варианты, так как уже не могу жить без git (это как Ватсон, который без трубки заснуть уже не мог) и некоторые файлы с паролями/секретами, docker-compose, dockerfile копирую через FileZilla.

Теперь все необходимые файлы находятся на VPS и нам необходимо все это вместе запустить. Настало время рассказать про докер, великий и ужасный.

Кхм…примерно так все у меня и происходит

Кхм…примерно так все у меня и происходит

Не буду сильно углубляться в особенности докер и docker-compose, потому как на ютубе полно видео, в которых достаточно доходчиво объясняется что это и для чего это. Я лишь расскажу вам о том, какие проблемы позволил мне решить докер.

  • Установка базы данных в пару строчек в docker-compose.yml;

  • Установка nginx в пару строчек в dockerfile и docker-compose.yml;

  • Запуск программ и поддержка их в запущенном состоянии. Если руками через консоль запускать программы, то при закрытии консоли, они (программы) тоже закроются (не все).

После правильной сборки и запуска всех контейнеров, через docker-compose.yml, вы можете увидеть такую картинку и обрадоваться, что ничего не отвалилось и все контейнеры запущены и работают. Если совсем тезисно, то каждая строчка это контейнер, в котором запущена всего лишь одна составная часть приложения (nginx для фронтенда, основной бэкенд, база данных и бэкенд для бота).

Докер запущен и готов служить

Докер запущен и готов служить

Теперь ваше приложение доступно по ip адресу в браузере, который получил VPS. И тут у вас может возникнуть справедливый вопрос «А где здесь telegram, если приложение запускается в браузере?». Абсолютно верное замечание и ответ достаточно прост - telegram мини-приложение это сайт, который просто открывается в отдельном окне самого telegram и никакой магии. О том, как реализуется эта процедура и о дальнейших настройках доменного имени и ssl, без чего не возможен запуск именно мини-приложения, я расскажу в последующих частях.

А, ну и конечно, как я уже ранее писал, мини-приложение уже готово и ждет своих пользователей, как говорится welcome t.me/Socionyx_Bot/socionyx.

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

P.S. я не забыл про твой вопрос мой дорогой nikita17cm и об особенностях «микросерверности», и о разделе бота и основного бэкенда, я обязательно расскажу в следующей части.

Показать полностью 4
[моё] Telegram Веб-разработка Программирование IT Docker VPS Длиннопост
1
1
anetto1502
anetto1502
Лига программистов

Анализируем размер проекта⁠⁠

8 месяцев назад

Среди метрик качества проекта теоретики выделяют число LOC == lines of code, измеряемое обычно в тысячах.

Для измерения размера проекта в строках кода есть интересный проект cloc, запускаемый в том числе в docker (зачем docker?).

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

Пример для одного легаси проекта

Пример для одного легаси проекта

А теперь интересное. LOC является очень противоречивой метрикой для контроля. С одной стороны, чем меньше проект, тем лучше. С другой — сокращение размера кода может вредить его читаемости.

Пост из канала DevFM.

Показать полностью 1
[моё] IT Программирование Docker
26
6
MajorLettuce
MajorLettuce
Лига программистов

Я перенес среду для разработки в облако и значительно упростил себе процесс работы⁠⁠

8 месяцев назад

Последнее время я решил попробовать новый подход к организации среды разработки. Обычно я активно использую Docker 🐳 — он удобен, когда проект состоит из нескольких сервисов, например, базы данных (PostgreSQL, Redis) и других инструментов.

Языки вроде Python предлагают решение "виртуального окружения", но на мой взгляд — это все равно костыли. С другой стороны есть Docker.

Docker позволяет быстро развернуть изолированное окружение, и что самое крутое — сделать это можно где угодно, без лишних настроек. Но есть проблема: на Windows он работает не так стабильно, как хотелось бы. Иногда настолько, что проще снести систему и поставить заново.

Я перенес среду для разработки в облако и значительно упростил себе процесс работы

Поэтому я решил попробовать другое решение:

  • Арендовал облачный сервер

  • Настроил всю среду разработки прямо там

  • Теперь подключаюсь к нему по SSH через VS Code (на самом деле Cursor, но суть та же)

В итоге вся работа идёт на сервере, независимо от мощности моего устройства. Я ожидал лагов и сетевых тормозов, но всё работает удивительно плавно. Теперь мне не важно, с какого устройства заходить — главное, чтобы был интернет и возможность запустить VS Code или Cursor.

Закинул RSA ключ и работаешь как на локальной машине.

Еще одна классная фича конкретно VS Code - подобных редакторов: они могут пробросить порты на локальный хост. Поэтому можно поднять базу данных на сервере на порту 5432, а подключаться к нему через клиент под Windows по адресу 127.0.0.1:5432.

Получается, что даже слабый ноутбук теперь может быть удобным инструментом для разработки. Если Docker на Windows вас тоже достал, возможно, вам зайдет такой подход

Показать полностью 1
Программирование IT Разработка Linux Docker
37
3
anetto1502
anetto1502
Лига программистов

Docker в каждый дом⁠⁠

9 месяцев назад

Стрим FastAPI+Docker породил бурное обсуждение, а нужен ли докер в таком небольшом проекте. Наш ответ — обязательно! В современном мире разработки docker является такой же неотъемлемой частью разработки, как и git. Есть некоторые области без докера, например, разработка GUI, операционных систем или микроконтроллеров. Но весь backend, frontend и data science без докера вообще не живут. Давайте посмотрим, какие прямые выгоды даёт докер:

1. Всегда понятно, как запустить код. Dockerfile является однозначной инструкцией по сборке проекта. Bus-factor не мешает жить.

2. Легко включать новых людей в разработку. Инструкция в ридми сводится к docker build & docker run, что понятно даже junior-разработчикам.

3. Деплой можно производить где угодно. В пару команд можно запуститься на компе разработчика, на test или prod сервере, у заказчика на ноутбуке – и везде всё будет одинаково, нужен только сам Docker.

4. Проект одинаково себя ведёт везде. Это упрощает воспроизведение проблемы и сокращает время на багфикс.

5. Нет проблем с конфликтом зависимостей-библиотек. Вы можете на одной машине запустить проекты с условным django 3 и django 4, они никак друг другу не помешают.

6. Легко поднимать зависимости-компоненты. Для любой базы данных берётся готовый докер-образ, меняется конфиг и в одну команду запускается. С выходом на docker compose можно одной командой поднимать сборную солянку из backend, frontend, базы данных, nginx и Let's Encrypt.

7. Просто откатываться к старой версии. Версионирование докер-образов позволяет запустить новую версию, и, если что-то пошло не так, откатиться назад за десятки секунд.

8. Понятные внешние эффекты проекта. В команде docker run указаны проброшенные в контейнер каталоги и порты. Всё остальное изолированно.

В общем, со всех сторон одна польза. Минусы? Требуется изучить новый инструмент и best practices. Кажется, на этом всё. Даже дополнительных накладных расходов на виртуализацию нет. И помните – если docker вам мешает, скорее всего, вы что-то делаете неправильно.

Для запуска нескольких связанных контейнеров пользуйтесь compose, гайд тут. Если ещё нужно управлять множеством серверов, то посмотрите на kubernetes.

Показать полностью
[моё] Программирование IT Docker Linux Текст
35
werwolfshtein
Лига программистов

Титан веб разработки⁠⁠

11 месяцев назад

Я счас одному чуваку сайт-визитку запихал в докер, добавил к нему nginx, прикрутил сверху эластиксёрч с мемкэчем и залил всё это дело на vps.

А потому что могу!

[моё] Web-программирование Web Программист Python IT юмор IT Программирование Docker Текст
19
JoeAnalytics
JoeAnalytics
Лига программистов

Инструкция по установке Docker и Docker Compose на сервере Ubuntu⁠⁠

1 год назад

1. Обновите систему

Убедитесь, что ваша система обновлена до последних версий пакетов.

sudo apt update && sudo apt upgrade -y


2. Установите необходимые зависимости

Установите пакеты, которые потребуются для добавления Docker-репозитория.

sudo apt install -y apt-transport-https ca-certificates curl software-properties-common


3. Добавьте GPG-ключ Docker

Добавьте официальный GPG-ключ Docker:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg


4. Добавьте Docker-репозиторий

Добавьте Docker-репозиторий в список источников:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null


5. Установите Docker

Обновите список пакетов и установите Docker Engine.

sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io

Проверьте установку Docker:

sudo docker --version


6. Убедитесь, что Docker работает

Запустите Docker и добавьте текущего пользователя в группу Docker для выполнения команд без sudo.

sudo systemctl start docker sudo systemctl enable docker sudo usermod -aG docker $USER

Для применения изменений перезагрузите сессию или выполните:

newgrp docker


7. Установите Docker Compose

Загрузите последнюю версию Docker Compose с официального сайта.

7.1 Узнайте последнюю версию Docker Compose:

curl -s https://api.github.com/repos/docker/compose/releases/latest | grep "tag_name" | cut -d '"' -f 4

Например, это может быть v2.26.0.

7.2 Замените <version> на полученную версию и выполните установку:

sudo curl -L "https://github.com/docker/compose/releases/download/&lt;vers... -s)-$(uname -m)" -o /usr/local/bin/docker-compose

7.3 Сделайте файл исполняемым:

sudo chmod +x /usr/local/bin/docker-compose

7.4 Проверьте установку:

docker-compose --version


8. (Опционально) Настройте автозапуск Docker

Если требуется, чтобы Docker автоматически запускался при старте системы:

sudo systemctl enable docker


Теперь Docker и Docker Compose успешно установлены и готовы к использованию.

Показать полностью
[моё] Linux VPN Программирование IT Программист VPS Docker Разработка
8
9
awfun
Лига программистов

Использование Docker для локального тестирования⁠⁠

1 год назад

Всем привет, работаю java программистом больше 10 лет, в этом посте хотел бы показать, как использовать Docker для локального тестирования приложения.

Средний корпоративный код содержит не очень много логики, но множество интеграций с другими сервисами, несколько баз данных (postgres, кеш в redis, поиск в elastic), очередь (kafka), хранилище документов (s3) итд. Хотелось бы иметь возможность тестировать приложение на локальной машине, без необходимости доставки каждого изменения до общего dev стенда.

Чтобы не разворачивать весь стек технологий на рабочем ноуте, используют Docker контейнеры. Часто образ контейнера содержит минимальную сборку linux (alpine) и сам сервис, например postgres. Внутри контейнера сервис доступен по своему стандартному порту (5432 для postgres), но обратиться напрямую к нему нельзя - на время работы контейнера Docker будет предоставлять внешний порт

Postgres поднят, но порт 5432 доступен только внутри контейнера

Postgres поднят, но порт 5432 доступен только внутри контейнера

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

Для запуска Docker на рабочей машине можно установить Docker desktop. Для поддержки Docker в CI может потребоваться конфигурация dind (docker in docker). При разработке в компании также потребуется указывать корпоративный репозиторий образов. Версия в образе должна соответствовать используемой на продакшене версии сервиса.

Для автоматизации работы с Docker из java тестов я использую библиотеку testcontainers:

@Container
@ServiceConnection
static PostgreSQLContainer<?> postgreSQLContainer = new PostgreSQLContainer<>("postgres");

Здесь postgres - имя контейнера без указания версии. Аннотация Container указывает на необходимость запустить Docker до старта теста. Аннотация ServiceConnection позволяет java узнать внешний порт сервиса и подставить в свой конфиг.

Использование контейнеров позволяет упростить локальное тестирование приложения и является мастхев инструментом. Буду рад ответить на вопросы.

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