Skip to content

Перехват удаленных/измененных сообщений

License

Notifications You must be signed in to change notification settings

yukkerike/vklml

Repository files navigation

vklml (ex. vkMessageActionLogger)

Перехват удаленных/измененных сообщений вконтакте

Особенности/фичи:

  • Формирование отчётов об изменении сообщений.
  • Конфигурация с помощью конфиг-файла.
  • Поиск удалённых фотографий по таймеру во всех сообщениях, в том числе в пересланных (по умолчанию - раз в сутки).
  • Встроенный веб-сервер, формирующий каталог отчётов и отдающий их, с возможностью входа по логину и паролю (можно запускать как в составе бота, так и gunicorn'ом).
  • При использовании другого веб-сервера для раздачи статических страниц отчёта, можно запускать генератор списка отчётов по расписанию, либо включить его запуск самим ботом в конфиге.
  • Возможность дописывать свои обработчики событий (можно отключить основной функционал бота по записи сообщений в базу и использовать его только для выполнения своих обработчиков).

Начало

python 3.4 или новее

git clone https://github.com/yukkerike/vklml.git
cd vklml
pip3 install -r requirements.txt

Либо скачайте всё в архиве и распакуйте (Clone or download > Download ZIP).

Зависимости лучше устанавливать от имени администратора. В случае с windows стоит писать не pip3, а py -m pip, и не python3, а py.

Запуск

Укажите токен в config.json и запустите скрипт:

python3 main.py

Либо передайте токен в качестве аргумента к скрипту, он будет помещен в конфиг:

python3 main.py ACCESS_TOKEN

Получить токен можно тут: https://oauth.vk.com/authorize?client_id=2685278&scope=69632&redirect_uri=https://oauth.vk.com/blank.html&display=page&response_type=token&revoke=1

Советы по настройке

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

  • Если вы хотите, чтобы к файлам отчёта генерировался index.html с ссылками на отчёты по дням за текущий месяц (излишне в случае использования встроенного веб-сервера), добавьте правило для запуска updateIndex.py раз в месяц в crontab, либо измените значение false на true ключа createIndex в config.json.

  • Когда вы захотите обновить кэш названий чатов, запустите updateNames.py.

  • Если вы не хотите использовать встроенный веб-сервер, flask можно не устанавливать.

  • Если хотите использовать встроенный веб-сервер, измените значение ключа enableFlaskWebServer на true. Использование простой http аутентификации настраивается ключом useAuth, список пользователей представлен словарём в ключе users, измените стандартный пароль перед использованием.

Помимо прямого назначения, бота можно использовать для выполнения своих действий в ответ на события:

  1. Измените значение false на true ключа customActions в config.json.
  2. Добавьте свои обработчики действий в файле customActions.py.

Либо использовать исключительно для выполнения своих действий, отключив запись удалений/изменений сообщений переведением ключа disableMessagesLogging в true.

В папке autostart приложены примеры сервисов для автозапуска программы, в них требуется подкорректировать пути до main.py.

  • SysV init – vkCacheBot -> /etc/init.d
  • systemd– vkCacheBot.service -> /lib/systemd/system (~/.local/share/systemd/user/ для запуска от имени пользователя)
  • Windows – vkCacheBot.vbs -> C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup

Обновление

Сверьте, не изменился ли список зависимостей в requirements.txt. Если нужно, установите их. Замените файлы новыми версиями. Допустимо сохранить свой config.json, он будет автоматически обновлён, если в новой версии список поддерживаемых настроек отличается.