Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/raiksler/lora-the-dog

Chat bot for VK
https://github.com/raiksler/lora-the-dog

docker postgresql python python3 vk vk-api vk-bot vkontakte

Last synced: about 1 month ago
JSON representation

Chat bot for VK

Awesome Lists containing this project

README

        

"Lora the dog", чат бот для VK бесед, имитирующий поведение моего лабрадора =)
Бот разработан с использованием VK API, и предполагает наличие у вас соответствующего токена.

Code by A. Goryachev
______________________________________________________________________________________________

Текущие возможности:

1) Базовые ответы на запросы. Лора будет отвечать на приветствия и прощания. Для разговора с Лорой, в беседе к ней нужно обращаться через @. Лора понимает запросы в разной
формулировке, например о ее настроении можно узнать множеством способов: 'Как ты?, 'Как твое настроение?' и т.д. При разработке не ставилась цель по прохождению теста Тьюринга, поэтому количество таких команд ограничено разумными пределами, но все-же, их число достаточно обширно, чтобы в диалоге с Лорой не пришлось выбирать слова.
2) Настроение. В зависимости от настроения, реакция Лоры на те или иные команды меняется. Настроение Лоры меняется от некоторых действий. Узнать текущее настроение можно спросив у нее напрямую: "Как дела?", "Как настроение?" и т.д. Параметр настроения независим для разных чатов.
3) Возможность влиять на настроение Лоры при помощи игр или угощений. Подробнее о командах взаимодействия можно узнать, спросив у Лоры о ее настроении при низком уровне настроения.
4) Лора привязана к серверам open-meteo и может давать прогноз погоды на сегодня\завтра при соответствующих запросах, например: 'Погода на завтра', 'Погода сегодня'. При достаточно высоком уровне настроения, Лора будет автоматически давать ежедневный утренний прогноз погоды в 8:00 по МСК.

Добавить бота в беседу можно по ссылке:
https://vk.com/lora_the_dog

Самостоятельный хост бота:

Необходимо произвести следующие настройки паблика:
1) В настройках API, включить функцию Long Poll и разрешить следующие типы событий: Входящие сообщения, исходящие сообщения. Бот тестировался на версии API 5.131.
2) В настройках для бота, включить "возможности ботов" и разрешить добавлять сообщество в чаты.

Развертывание бота силами docker:
Для начала, необходимо внести свой вк токен в переменную соответствующую переменную файла lora_the_dog/env.py. Образ бота может быть создан из корневой директории проекта, командой . Будут созданы образы двух связанных контейнеров. В первом контейнере расположен бэкэнд бота, все зависимости установятся самостоятельно. Во втором контейнере будет поднята бд postgresSQL со всеми необходимыми настройками и таблицами. Бот автоматически запустится при поднятии контейнеров командой . С этого момента, можно добавлять бота в беседы из своего паблика.

Хост на обычной машине без контейнеризации:
При каждом запуске, бот будет запрашивать ваш токен. Для того, чтобы этого избежать, можно добавить его в соответствующую переменную окружения файла lora_the_dog/env.py, в этом случае, бот перестанет запрашивать токен при запуске и будет использовать заданный по умолчанию. Ключ можно сгенерировать в настройках паблика.
Для хранения и оперирования данными чатов, бот использует базу данных PostgreSQL. Для корректной работы бота необходимо создать на локальной машине базу данных и пользователя со следующими параметрами: (user='postgres', password='pgadminpass', host='localhost', database='lora_the_dog'). Все взаимодействие с бд находится в классе Db_manager модуля main.py, вы можете самостоятельно настроить параметры пользователя и бд в дандер ините этого класса. Бд lora_the_dog содержит всего одну таблицу. Для ее создания используйте следующий SQL запрос: CREATE TABLE chats (id bigint PRIMARY KEY, mood bigint);
После этого, можно запустить модуль main.py и добавить бота в любую беседу. (Естественно, не забыв установить зависимости через poetry).