Бот для Slack, который устанавливает статус отсутствия (AFK) на указанное время, анализируя сообщения в каналах.
Бот анализирует сообщения в каналах и устанавливает статус :zzz: (или можно предварительно добавить кастомный и назвать его :afk:)
на указанное время при обнаружении различных форматов упоминания AFK:
- Диапазоны: "афк 1-1.5", "афк 30-60" (берет максимальное значение)
- Дробные числа: "афк 0,5" как 30 минут, "афк 1,5" как полтора часа
- Указание единиц измерения: "афк 1h", "афк 40m"
- Текстовое время: "афк час", "AFK полчаса"
- Различные форматы минут: "афк 30 мин", "афк 40 минут"
- Смешанные форматы: "Еще 30 мин афк", "Плохо себя чувствую. АФК минут 40"
- Время до указанного часа: "АФК по семейным до 12"
- Распознает опечатки в слове "афк"/"afk"
- Создайте новое приложение Slack на api.slack.com/apps
- В разделе "OAuth & Permissions" добавьте следующие scopes:
users.profile:write(для изменения статуса пользователя)channels:history(для чтения сообщений в публичных каналах)groups:history(для чтения сообщений в приватных каналах)im:history(для чтения сообщений в личных сообщениях)mpim:history(для чтения сообщений в групповых личных сообщениях)
- Включите Socket Mode в разделе "Socket Mode" (Если вы планируете публиковать бота в Slack Marketplace, нужно использовать Request URLs)
- Включите Event Subscriptions в разделе "Event Subscriptions"
- В "Event Subscriptions" → "Subscribe to bot events" добавьте событие
message.channels,message.groups,message.imиmessage.mpim - Создайте App-Level Token в разделе "Basic Information" → "App-Level Tokens" с scope
connections:write - Скопируйте токены в файл
.env:SLACK_BOT_TOKENиз "OAuth & Permissions" (начинается сxoxb-)SLACK_APP_TOKENиз "App-Level Tokens" (начинается сxapp-)SLACK_USER_TOKEN(начинается сxoxp-)
# Создание виртуального окружения
python3 -m venv venv
# Активация виртуального окружения
source venv/bin/activate
# Установка зависимостей
pip install -r requirements.txt
# Запуск бота с выводом всех сообщений об ошибках
pkill -f "python" 2>/dev/null || true && sleep 2 && source venv/bin/activate && python afk_bot.py- Бот не отправляет сообщения в каналы
- Отслеживает только новые сообщения (игнорирует отредактированные и ответы в тредах)
- Устанавливает новый статус, если текущий еще не истек
- По истечении срока автоматически очищает статус
- Поддерживает как русский, так и английский язык для команд
афк 30- АФК на 30 минутAFK 2h- АФК на 2 часаафк 1.5 часа- АФК на 1.5 часаафк полчаса- АФК на 30 минутНужно отойти, афк 20 минут- АФК на 20 минутафк до 15:30- АФК до 15:30