Skip to content
/ VBot Public
forked from ekonda/sketal

Чат-бот для ВКонтакте на Python 3

License

Notifications You must be signed in to change notification settings

SKYnv/VBot

 
 

Repository files navigation

VBot

Для работы бота необходим Python 3.6+ или PyPy3.5, с версиями ниже бот не работает.

Настройка

  1. Перейдите в папку с ботом
  2. Установить зависимости из файла requirements.txt.
    Например, выполнив команду pip3 install -r requirements.txt. Это автоматически установит все нужные модули.
  3. Запустите бота, чтобы он создал файл settings.py(после чего он выключится)
    Например, выполнив команду python3 vbot.py(или python, или python3.6)
  4. В settings.py замените TOKEN на access_token группы или LOGIN и PASSWORD на логин и пароль аккаунта ВК соответственно. И уберите # перед введёнными данными
    Если ввести и то и другое - бот будет работать как группа, но сможет использовать медоты VK API пользователя.
    Можно вводить несколько аккаунтов, но отвечать бот будет со всех без разбора, так что реккомендуется вводить только 1 группу и 1 пользователя.
  5. Там же в settings.py вы можете ввести PROXY в указанном формате, но не гарантированно, что ВК пустит вас без подтвержения телефонного номера с этого PROXY, что бот автоматически не делает.
  6. Укажите данные базы данных PostgreSQL в DATABASE_SETTINGS в указанном формате. Если оставить DATABASE_SETTINGS = (), то не будут работать плагины, которым нужна БД. Создать свою БД можно, например, на Heroku
  7. Запустите python3 vbot.py(или python, или python3.6).
  8. Бота можно бесплатно захостить на Heroku. Гайд, Еще один гайд.

Смена префиксов

По умолчанию бот отзывается на префикс: !. Сменить их можно в settings.py на 35 строке.

Плагины

  • Приветствие (Плагин приветствия)
  • Список плагинов (Список загруженных плагинов)
  • Музыка (Список музыки из ваших рекомендаций в ВК)
  • Случайное число (Случайное число в разных диапазонах)
  • Случайные мемы (Берутся из паблика, указанного в плагине memes.py)
  • Ближайшие дни рождения в группе (Берутся из паблика, указанного в плагине birthday.py)
  • Курс валют (Отображение основных курсов валют)
  • Список команд (Список всех команд бота с описанием, как их использовать)
  • Шар восьмерка (Решает за вас)
  • Время (Показывает текущую дату и время)
  • Статистика бота (Показывает данные о счетчиках аккаунта)
  • Послать сообщение (Посылает сообщение другому пользователю, в том числе анонимное)
  • Блокнот (Может запоминать и вспоминать строки)
  • Рассказать шутку (рассказывает случайный анекдот)
  • Выключение (Выключает бота, если команду послал администратор)
  • Поиск видео (Ищет видео в ВК по запросу пользователя)
  • Скриншот сайта (делает скриншот сайта)
  • Погода (показывает погоду в Москве или указанном городе)
  • Перечеркиватель (перечеркивает строку)
  • Автоматическое добавление друзей (принимает входящие заявки в друзья раз в 10 секунд)
  • Новости (показывает последние новости из Yandex)

Примечание

Для того, чтобы узнать ID пользователя или группы, используйте https://vk.com/linkapp

Создание плагинов

В папке plugins есть пример плагина в файле example.py, отвечающий на команду !тест. В нём подробно расписана структура плагина. Для примера работы plugin.data или plugin.temp_data вы можете посмотреть memo.py, weather.py. Для примера цикличных зачад friends.py.
Там есть и другие плагины, код которых можно просмотреть для понимания того, что можно сделать с помощью бота.

Каждый плагин должен иметь экземпляр класса Plugin (из plugin_system) под именем (обязательно) plugin. Все команды, на которые подписывается плагин, должны быть в нижнем регистре.

Вот пример простого плагина:

# Импортируем класс Plugin
from plugin_system import Plugin
# Создаём объект класса, через него мы будем "подписываться" на команды
plugin = Plugin('Плагин для еды')

# Использование async и await обязательно, т.к. бот асинхронный
@plugin.on_command('еда')
async def test(msg, args):
    # Отвечаем пользователю
    await msg.answer('Где еда?!')

Для хранения данных используется peewee-async.
После импорта всего из database(именно таким образом)

from database import *

Вы можете использовать db, который является экземпляром peewee_async.Manager. В database.py хранятся модели бд.
Если данные для БД не введены, то бот будет использовать словарь для базовых функций. Подробнее: database.py, fake_database.py.

Плагины размещаются в папке plugins. Если два плагина имеют одинаковые команды - они обрабатываются в обоих плагинах.
Плагины могут работать со всеми методами API ВКонтакте.

Помощь и вклад

Проект открыт, любой может отправить свой Pull request на рассмотрение! Мы обязательно изучим, обсудим и, возможно, примем изменения.

Связь с нами

Разработчиков этого бота можно найти в вк:

About

Чат-бот для ВКонтакте на Python 3

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%