Skip to content

Latest commit

 

History

15 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Slack AFK Status Bot

Бот для Slack, который устанавливает статус отсутствия (AFK) на указанное время, анализируя сообщения в каналах.

Возможности

Бот анализирует сообщения в каналах и устанавливает статус :zzz: (или можно предварительно добавить кастомный и назвать его :afk:) на указанное время при обнаружении различных форматов упоминания AFK:

  • Диапазоны: "афк 1-1.5", "афк 30-60" (берет максимальное значение)
  • Дробные числа: "афк 0,5" как 30 минут, "афк 1,5" как полтора часа
  • Указание единиц измерения: "афк 1h", "афк 40m"
  • Текстовое время: "афк час", "AFK полчаса"
  • Различные форматы минут: "афк 30 мин", "афк 40 минут"
  • Смешанные форматы: "Еще 30 мин афк", "Плохо себя чувствую. АФК минут 40"
  • Время до указанного часа: "АФК по семейным до 12"
  • Распознает опечатки в слове "афк"/"afk"

Настройка

  1. Создайте новое приложение Slack на api.slack.com/apps
  2. В разделе "OAuth & Permissions" добавьте следующие scopes:
    • users.profile:write (для изменения статуса пользователя)
    • channels:history (для чтения сообщений в публичных каналах)
    • groups:history (для чтения сообщений в приватных каналах)
    • im:history (для чтения сообщений в личных сообщениях)
    • mpim:history (для чтения сообщений в групповых личных сообщениях)
  3. Включите Socket Mode в разделе "Socket Mode" (Если вы планируете публиковать бота в Slack Marketplace, нужно использовать Request URLs)
  4. Включите Event Subscriptions в разделе "Event Subscriptions"
  5. В "Event Subscriptions" → "Subscribe to bot events" добавьте событие message.channels, message.groups, message.im и message.mpim
  6. Создайте App-Level Token в разделе "Basic Information" → "App-Level Tokens" с scope connections:write
  7. Скопируйте токены в файл .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

Особенности работы

  1. Бот не отправляет сообщения в каналы
  2. Отслеживает только новые сообщения (игнорирует отредактированные и ответы в тредах)
  3. Устанавливает новый статус, если текущий еще не истек
  4. По истечении срока автоматически очищает статус
  5. Поддерживает как русский, так и английский язык для команд

Примеры использования

  • афк 30 - АФК на 30 минут
  • AFK 2h - АФК на 2 часа
  • афк 1.5 часа - АФК на 1.5 часа
  • афк полчаса - АФК на 30 минут
  • Нужно отойти, афк 20 минут - АФК на 20 минут
  • афк до 15:30 - АФК до 15:30

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages