{"id":29744674,"url":"https://github.com/2naive/slack-ai-bot","last_synced_at":"2025-07-26T05:33:24.056Z","repository":{"id":299821710,"uuid":"1004292472","full_name":"2naive/slack-ai-bot","owner":"2naive","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-18T13:04:39.000Z","size":59,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-06-18T13:49:30.649Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/2naive.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-18T12:03:20.000Z","updated_at":"2025-06-18T13:04:42.000Z","dependencies_parsed_at":"2025-06-18T13:49:35.721Z","dependency_job_id":"d6e394e5-68c3-4b52-ad1b-1ce3ec09d30e","html_url":"https://github.com/2naive/slack-ai-bot","commit_stats":null,"previous_names":["2naive/slack-ai-bot"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/2naive/slack-ai-bot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2naive%2Fslack-ai-bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2naive%2Fslack-ai-bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2naive%2Fslack-ai-bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2naive%2Fslack-ai-bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/2naive","download_url":"https://codeload.github.com/2naive/slack-ai-bot/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/2naive%2Fslack-ai-bot/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267123457,"owners_count":24039456,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-26T02:00:08.937Z","response_time":62,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-07-26T05:31:38.827Z","updated_at":"2025-07-26T05:33:24.048Z","avatar_url":"https://github.com/2naive.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Slack AI Bot для диагностики сайтов\r\n\r\nИнтеллектуальный Slack-бот для автоматической диагностики неработающих сайтов с использованием AI и глобальных сетевых проверок.\r\n\r\n## ✨ Возможности\r\n\r\n- 🤖 **AI-диагностика** с GPT-4o для анализа проблем\r\n- 🌍 **Globalping REST API** для проверки из разных регионов\r\n- 🔧 **Автоматические сетевые тесты** (ping, traceroute, nslookup, curl)\r\n- ⚡ **Система восстановления** после ошибок с автоматическими повторами\r\n- 💬 **Удобный Slack интерфейс** с результатами в threads\r\n- 📊 **Итоговые отчеты** с рекомендациями по устранению\r\n\r\n## 🚀 Быстрый старт\r\n\r\n### 1. Установка зависимостей\r\n\r\n```bash\r\npip install -r requirements.txt\r\n```\r\n\r\n### 2. Настройка переменных окружения\r\n\r\n**Скопируйте файл-пример:**\r\n```bash\r\ncp .env.example .env\r\n```\r\n\r\n**Отредактируйте `.env` файл с вашими токенами:**\r\n\r\n```env\r\nSLACK_APP_TOKEN=xapp-your-real-app-token\r\nSLACK_BOT_TOKEN=xoxb-your-real-bot-token  \r\nOPENAI_API_KEY=sk-your-real-openai-key\r\nGLOBALPING_API_TOKEN=your-real-globalping-token  # ОПЦИОНАЛЬНО\r\n```\r\n\r\n### 🔑 Получение токенов:\r\n\r\n**Slack:**\r\n1. Создайте приложение: https://api.slack.com/apps\r\n2. Включите Socket Mode \r\n3. Добавьте Bot Token Scopes: `app_mentions:read`, `channels:read`, `chat:write`, `im:read`, `im:write`\r\n4. Установите в workspace\r\n5. Скопируйте App-Level Token и Bot User OAuth Token\r\n\r\n**OpenAI:**\r\n1. Аккаунт: https://platform.openai.com/\r\n2. API Keys: https://platform.openai.com/api-keys\r\n3. Создайте Secret Key\r\n\r\n**Globalping (рекомендуется):**\r\n1. Бесплатный аккаунт: https://www.globalping.io/\r\n2. Dashboard → API Tokens\r\n3. Создайте токен\r\n\r\n### 🔑 Globalping API Token (Рекомендуется)\r\n\r\nДля наиболее надежной работы рекомендуется получить **бесплатный** API токен из панели Globalping:\r\n\r\n1. Зайдите на https://www.globalping.io/\r\n2. Создайте бесплатный аккаунт\r\n3. Перейдите в Dashboard → API Tokens  \r\n4. Создайте новый токен и добавьте его в `.env` как `GLOBALPING_API_TOKEN`\r\n\r\n**Преимущества использования токена:**\r\n- ✅ Более высокий лимит запросов\r\n- ✅ Более стабильная работа\r\n- ✅ Доступ ко всем типам тестов (ping, http, traceroute, dns, mtr)\r\n- ✅ Приоритетная обработка запросов\r\n\r\n**Без токена:** бот все равно будет работать через публичный REST API.\r\n\r\n### 3. Запуск бота\r\n\r\n```bash\r\npython slack_ai_bot.py\r\n```\r\n\r\n## 🔧 Безопасность и Git\r\n\r\n**⚠️ ВАЖНО:** Файл `.env` содержит секретные токены и **НЕ ДОЛЖЕН** попадать в Git!\r\n\r\n- ✅ `.env.example` — **коммитится** (примеры без секретов)\r\n- ❌ `.env` — **в .gitignore** (реальные токены)\r\n- ✅ `.gitignore` — **настроен** для безопасности\r\n\r\n### 4. Тестирование интеграции\r\n\r\n```bash\r\n# Основной тест\r\npython slack_ai_bot.py\r\n\r\n# Тест токена (если настроен)\r\npython -c \"from globalping_with_token import comprehensive_token_test; print(comprehensive_token_test('YOUR_TOKEN', 'google.com'))\"\r\n```\r\n\r\n## 📝 Использование\r\n\r\nПросто отправьте в Slack сообщение с URL или IP-адресом:\r\n\r\n```\r\nexample.com не работает\r\nhttps://mysite.com/api падает\r\nПроверьте 192.168.1.1\r\n```\r\n\r\nБот автоматически:\r\n1. 🔍 Извлечет цель из сообщения\r\n2. 🌐 Проведет глобальные тесты через Globalping API\r\n3. 💻 Выполнит локальные сетевые команды\r\n4. 🧠 Сгенерирует анализ с помощью AI\r\n5. 📋 Предоставит итоговый отчет с рекомендациями\r\n\r\n## 🏗️ Архитектура с системой восстановления\r\n\r\n```mermaid\r\ngraph TD\r\n    A[\"👤 Slack User\u003cbr/\u003egoogle.com не работает\"] --\u003e B[\"📱 Slack Bot\"]\r\n    B --\u003e C[\"🧠 OpenAI GPT-4o\u003cbr/\u003eAI Анализ\"]\r\n    C --\u003e D[\"💻 Local Commands\u003cbr/\u003eping, nslookup, curl\"]\r\n    C --\u003e E[\"🌐 Globalping Client\"]\r\n    \r\n    E --\u003e F{\"🔑 API Token?\"}\r\n    F --\u003e|\"✅ Есть токен\"| G[\"🚀 Direct REST API\u003cbr/\u003e(Приоритет #1)\"]\r\n    F --\u003e|\"❌ Нет токена\"| H[\"🌍 Public REST API\u003cbr/\u003e(Приоритет #2)\"]\r\n    \r\n    G --\u003e I[\"📡 Global Probes\u003cbr/\u003eRU, EU, US, GB\"]\r\n    H --\u003e I\r\n    \r\n    I --\u003e J[\"⚡ Error Recovery System\"]\r\n    J --\u003e K{\"❌ Ошибка?\"}\r\n    K --\u003e|\"🔄 Retry\"| L[\"🔁 Автоповтор\u003cbr/\u003e(до 3 попыток)\"]\r\n    K --\u003e|\"✅ Success\"| M[\"📊 Test Results\u003cbr/\u003e✅ PING: 15ms\u003cbr/\u003e✅ HTTP: 200 OK\"]\r\n    \r\n    L --\u003e I\r\n    \r\n    D --\u003e N[\"💻 Windows/Linux Results\u003cbr/\u003eping, nslookup, curl\"]\r\n    \r\n    M --\u003e O[\"🤖 AI Summary\u003cbr/\u003e+ Recommendations\"]\r\n    N --\u003e O\r\n    \r\n    O --\u003e P[\"💬 Slack Response\u003cbr/\u003ewith diagnostics\"]\r\n    P --\u003e A\r\n    \r\n    style E fill:#e1f5fe\r\n    style G fill:#4caf50\r\n    style H fill:#ff9800\r\n    style J fill:#f44336\r\n    style L fill:#ff5722\r\n    style M fill:#4caf50\r\n    style O fill:#fff3e0\r\n```\r\n\r\n**Компоненты:**\r\n- **AI Engine**: OpenAI GPT-4o для анализа и рекомендаций\r\n- **REST API Client**: Прямое подключение к Globalping API\r\n- **Error Recovery**: Система восстановления с автоматическими повторами\r\n- **Global Testing**: ping, http, traceroute, dns, mtr из 4 регионов\r\n- **Local Testing**: Windows/Linux network commands\r\n- **Slack Integration**: Bolt framework с Socket Mode\r\n\r\n## ⚡ Система восстановления после ошибок\r\n\r\n### Конфигурация\r\n\r\n```python\r\nERROR_RECOVERY_CONFIG = {\r\n    \"max_retries\": 3,              # Максимум попыток\r\n    \"retry_delay\": 2,              # Задержка между попытками (сек)\r\n    \"timeout_increase_factor\": 1.5, # Увеличение таймаута\r\n    \"fallback_locations\": [\"EU\", \"NA\", \"AS\"], # Резервные локации\r\n    \"emergency_fallback\": True     # Экстренный fallback\r\n}\r\n```\r\n\r\n### Механизмы восстановления\r\n\r\n**🔄 Автоматические повторы:**\r\n- До 3 попыток для каждого теста\r\n- Увеличивающиеся таймауты\r\n- Интеллектуальные задержки\r\n\r\n**🌍 Fallback стратегии:**\r\n- API Token → Public API\r\n- Расширенные локации → Базовые локации\r\n- Полные тесты → Упрощенные тесты\r\n\r\n**💻 Локальные команды:**\r\n- Автоматические повторы с увеличенными таймаутами\r\n- Восстановление после таймаутов\r\n- Обработка недоступных команд\r\n\r\n**🧠 AI анализ:**\r\n- Fallback при недоступности OpenAI\r\n- Показ сырых результатов при ошибках AI\r\n- Graceful degradation\r\n\r\n## 🔧 Конфигурация\r\n\r\n### Globalping REST API тесты\r\n- **ping**: Проверка доступности и задержки из разных регионов\r\n- **http**: HTTP статус и время ответа\r\n- **traceroute**: **Полный анализ маршрутизации** - все хопы с IP и задержками\r\n- **dns**: DNS резолюция и проверка серверов\r\n- **mtr**: **Детальный MTR анализ** - каждый хоп с потерями пакетов и статистикой\r\n\r\n### Локации тестирования\r\n- **RU**: Россия (при наличии токена)\r\n- **EU**: Европа\r\n- **US**: США\r\n- **GB**: Великобритания\r\n\r\n### Локальные команды\r\n- `ping` - проверка связи\r\n- `nslookup` - DNS резолюция\r\n- `curl` - HTTP запросы\r\n\r\n### 📊 Интерпретация результатов\r\n\r\n**MTR (My Traceroute):**\r\n```\r\n📍 Moscow, Russia MTR:\r\n   1. 192.168.1.1 - 1.2ms\r\n   2. 10.0.0.1 - 5.4ms\r\n   3. isp-gateway.com - 15.3ms (2% loss)\r\n   4. core-router.net - 25.7ms\r\n   5. target-server.com - 45.2ms\r\n```\r\n- Каждая строка = один сетевой узел (хоп)\r\n- Время отклика и потери пакетов для каждого хопа\r\n- Высокие потери или времена указывают на проблемные участки\r\n\r\n**TRACEROUTE:**\r\n```\r\n📍 London, UK TRACEROUTE:\r\n   1. router.local - 1.1ms\r\n   2. * * * (timeout)\r\n   3. uk-backbone.net - 12.4ms\r\n   4. target.com - 35.6ms\r\n```\r\n- Показывает путь пакетов до цели\r\n- `* * * (timeout)` = узел не отвечает (но пропускает трафик)\r\n- Резкие скачки времени = потенциальные узкие места\r\n\r\n## 🐛 Устранение проблем\r\n\r\n**Сетевые ошибки**: Автоматические повторы до 3 раз\r\n\r\n**Таймауты команд**: Увеличивающиеся таймауты с каждой попыткой\r\n\r\n**Ошибки Globalping**: Автоматический fallback к публичному API\r\n\r\n**Проблемы AI**: Показ сырых результатов при недоступности OpenAI\r\n\r\n**Проблемы Slack**: Уведомления об ошибках в чате\r\n\r\n### 🎯 Преимущества новой архитектуры\r\n\r\n**✅ УПРОЩЕННАЯ АРХИТЕКТУРА:**\r\n- Убрана сложность MCP\r\n- Только REST API интеграция\r\n- Чистый и понятный код\r\n\r\n**✅ НАДЕЖНОСТЬ:**\r\n- Система восстановления после ошибок\r\n- Автоматические fallback механизмы\r\n- Intelligent retry с экспоненциальной задержкой\r\n\r\n**✅ ПРОИЗВОДИТЕЛЬНОСТЬ:**\r\n- Прямые REST API вызовы\r\n- Оптимизированные таймауты\r\n- Параллельные запросы\r\n\r\n**Готов к продакшену!** 🚀\r\n\r\n## 📁 Структура проекта\r\n\r\n### Основные файлы:\r\n- `slack_ai_bot.py` - Главный Slack бот с системой восстановления\r\n- `globalping_with_token.py` - REST API клиент для Globalping\r\n- `requirements.txt` - Зависимости Python\r\n- `.env.example` - **Пример файла конфигурации** (коммитится в Git)\r\n- `.gitignore` - **Правила исключения Git** (токены, cache, logs)\r\n- `README.md` - Документация\r\n\r\n## 📦 Зависимости\r\n\r\n- `slack-bolt` - Slack интеграция\r\n- `openai` - AI анализ\r\n- `requests` - HTTP клиент\r\n- `python-dotenv` - Переменные окружения\r\n\r\n## 🔒 Безопасность\r\n\r\n- Используйте переменные окружения для API ключей\r\n- Ограничьте права Slack бота минимально необходимыми\r\n- Регулярно обновляйте зависимости\r\n- Мониторьте использование API лимитов ","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2naive%2Fslack-ai-bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F2naive%2Fslack-ai-bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F2naive%2Fslack-ai-bot/lists"}