Foodsharing-Bot

В данном прототипе реализованы оповещение пользователя о релевантных постах и возможность публиковать свои объявления о передаче еды в едином формате.

Ссылка на бота: https://vk.com/foodsharing_bot

Стек решения: python, vk_api, mysql, geopy, spacy.

Данный проект состоит из двух программ:

  • Программа-интерфейс, реагирующая на сообщения пользователей
  • Программа-ретранслятор, отслеживающая новые посты и рассылающая оповещения о новых постах

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

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

Файлы проекта:

  • main.py - точка входа для программы-интерфейса
  • notifications_main.py - точка входа для программы-ретранслятора
  • join_foodsharing_groups.py - автоматическая подписка на сообщества
  • newsfeed_posts.py - считывание ленты, функция fetch_new_posts(time_begin, time_end, *, vk)
  • cities.py - работа с городами, определение города по посту
  • censor.py - частичная защита от спама
  • extend_vk_method.py - расширение стандартного метода ВК, получающего лишь определённый кусок данных, до метода, считывающего все данные