Skip to content

Latest commit

 

History

History
82 lines (70 loc) · 7.25 KB

README.md

File metadata and controls

82 lines (70 loc) · 7.25 KB

Maremi

Простой бот для синхронизации vk чата и discord сервера. Использует disnake, vkbottle и Tortoise ORM. Для хранения некоторых изображений используется freeimagehost.

Установка

Вам понадобится установленный Python 3.9 и git.

Склонируйте репозиторий:

$ git clone https://github.com/valeriy131100/Maremi

Создайте в этой папке виртуальное окружение:

$ cd Maremi
$ python3 -m venv venv

Активируйте виртуальное окружение и установите зависимости:

$ source venv/bin/activate
$ pip install -r requirements.txt

Настройка перед использованием

Заполните файл .env.example и переименуйте его в .env или иным образом передайте переменные среды:

  • VK_TOKEN - токен для вк-бота.
  • VK_PREFIX - префикс вк-бота, по умолчанию - /.
  • VK_ALIAS_PREFIX - префикс вк-бота для алиасов каналов, по умолчанию - #.
  • VK_GROUP_ID - id группы вконтакте в которой запущен бот.
  • VK_CHECK_MESSAGES_INTERVAL - частота проверки сообщений вк для синхронного удаления в секундах. Не ставьте слишком маленькое значение, вк апи это не любит. По умолчанию - 1 минута.
  • DISCORD_TOKEN - токен для дискорд-бота.
  • DISCORD_PREFIX - префикс дискорд-бота, по умолчанию - m..
  • DATABASE - путь до базы данных в формате строки подключения TortoiseORM, по умолчанию - sqlite://servers2.db. Из-за того, что aerich поддерживает только миграции в виде чистого SQL, гарантируется поддержка только SQLite.
  • FREEIMAGEHOST_KEY - токен FreeImageHost.

После задания переменных среды примените миграции к базе данных:

$ source venv/bin/activate
$ aerich upgrade

Использование

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

Находясь в директории Maremi исполните:

$ venv/bin/python main.py

Бот запустится.

Основные команды

Команды указаны с префиксами по умолчанию.

  • Discord
    • m.help - возвращает список команд.
    • m.connect <chat_id> - подключает сервер к чату ВК. Устанавливает текущий канал как канал по умолчанию.
    • m.nickname <nickname> - устанавливает никнейм, который будет использоваться при отправке сообщений в вк.
    • m.nickname remove - удаляет никнейм.
    • m.alias <alias> - устанавливает алиас для текущего канала. В алиасы можно отправлять сообщения через вк бота с помощью #<alias>.
    • m.alias remove <alias> - удаляет алиас <alias>.
    • m.default - устанавливает текущий канал как канал для команды /send.
    • m.art - устанавливает текущий канал как канал для команды /art.
    • m.duplex - устанавливает текущий канал как канал для дуплекса (режим когда сообщения автоматически отсылаются из ВК в Дискорд и обратно).
    • m.split <ref_message> - разделяет сообщение с вложениями на отдельные. Необходимо переслать с командой оригинальное сообщение.
    • m.gallery [ref_message|attachments] [n|noninvite] - превращает текущее или пересланное сообщение в интерактивную галерею. Если передан аргумент noninvite, то создает галерею без сообщения-приглашения.
    • m.reload - перезагружает сообщение из вк (полностью заново генерирует его содержимое)
  • VK
    • /help - возвращает список команд.
    • /nickname <nickname> - устанавливает никнейм, который будет использоваться при отправке сообщений в дискорд.
    • /removenickname - удаляет никнейм.
    • /makeonline - дает возможность подключить этот чат к серверу в дискорде. Возвращает команду для подключения.
    • /makeoffline - убирает возможность подключить этот чат к серверу.
    • /send - отсылает сообщение в канал default.
    • /art - отсылает сообщение в канал art.
    • #<alias> - отсылает сообщение в канал с указанным алиасом.
    • Любое сообщение без префикса - отсылает в канал duplex, если таковой есть.

Предостережения

  • Автор совершенно не знаком с асинхронным программированием и async и await везде понатыканы просто из-за библиотек ботов. Не пытайтесь запускать много серверов или использовать бота на крупных серверах, это может иметь непредсказуемые последствия. Также в боте сейчас нет абсолютно никакой проверки ролей, а соединение сервера и чата весьма небезопасно.
  • Код лицензирован под MIT, делайте с ним что хотите, лишь бы он не обрел сознание :)
  • Проект написан лишь для удобства общения с группой друзей и находится в глубокой альфе, так что фичи еще будут добавляться и перерабатываться.