Skip to content

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

Notifications You must be signed in to change notification settings

VMSTR8/DiscordMusicBot

Repository files navigation

Мультифункциональный чат-бот для Discord

This project is being developed in Russian language without English or any other language localization. If you are interested in adding English or other language localization, please contact me through the contacts provided in the profile.

Чат-бот, который умеет воспроизводить музыку, а так же работает с пользователями при входе участника на сервер. Умеет "регистрировать" на сервере, выдвая права в заданные голосовые каналы. Так как бот создается "тем еще виабушником" для использования на довольно небольшом сервере дискорда, поэтому основной функционал работы с пользователями построен на аниме-тематике.

Стэк: Python 3.10.8, Discord.py 2.4.0, Wavelink 3.4.0, Tortoise ORM 0.19.3 (tutel!), Lavalink 4.0.8

Важная информация

  • Бот не предназначен для добавления более чем на одном сервер дискорда, ибо я писал его исключительно под свой единственный серер. Разворачиваете бота у себя? Помните: один развернутый бот на один сервер.
  • Допустим, вам нужен просто музыкальный чат-бот. Ненужные команды можно отключить прямиком у вас на сервере в разделе Настройки сервера->Интеграция->выбрать бота и нажать "Управление".
  • Вопросы и предложения по боту можно направлять сюда: https://discord.gg/hk4QRyVXEY

Как развернуть бота у себя

Создайте docker-compose.yml со следующим содержимым (не забудьте заменить переменные).

Пример файла можете посмотреть тут:

services:
    lavalink:
        image: fredboat/lavalink:4.0.8
        container_name: lavalink
        restart: unless-stopped
        environment:
            - _JAVA_OPTIONS=-Xmx6G
            - SERVER_PORT=2333
            - SERVER_ADDRESS=0.0.0.0
            - LAVALINK_SERVER_PASSWORD=<придуманный_вами_пароль>
            - LAVALINK_SERVER_SOURCES_HTTP=true
        volumes:
        - ./application.yml:/opt/Lavalink/application.yml
        networks:
            - lavalink
        expose:
            - 2333
        ports:
            - 2333:2333

    discordbot:
        image: vmstr8/discord-music-bot:<версия_бота>
        container_name: discordbot
        restart: unless-stopped
        depends_on:
            - lavalink
        networks:
        - lavalink
        volumes:
        - ./data/:/discordbot/data/
        - ./entrypoint.sh:/discordbot/entrypoint.sh
        environment:
            - BOT_TOKEN=<токен_дискорд_бота>
            - WAVELINK_URI=http://lavalink:2333
            - WAVELINK_PASSWORD=<придуманный_вами_пароль_из_блока_lavalink>
            - DATABASE_URL=sqlite://data/db.sqlite3
            - DISCORD_TEXT_CATEGORIES_ID=<каким_текстовым_категориям_выдавать_разрешение_через_запятую>
            - MESSAGE_NOT_ALLOWED_TEXT_CHANNELS_ID=<в_каких_каналах_удалять_собщения_пользователей>
            - GREETINGS_CHANNEL=<канал_для_приветственных_сообщеий_бота>
            - DISCORD_VOICE_CATEGORIES_ID=<каким_голосовым_категориям_выдавать_разрешение_через_запятую>

networks:
    lavalink:
        name: lavalink

Теперь создайте файл application.yml, он необходим для настроек Lavalink плагинов. Пример файла так же можете посмотреть тут.

server:
  port: 2333
  address: localhost
lavalink:
  plugins:
  - dependency: "dev.lavalink.youtube:youtube-plugin:1.8.3"
    snapshot: false 
    youtube:
      enable: true
      allowSearch: true
      allowDirectVideoIds: true
      allowDirectPlaylistIds: true
      clients:
        - WEB
        - MUSIC
        - TVHTML5EMBEDDED
        - ANDROID_MUSIC
        - WEBEMBEDDED
        - ANDROID
        - ANDROID_LITE
        - MEDIA_CONNECT
        - IOS
  server:
    password: "тут_пишите_пароль_от_лавалинка"
    sources:
      youtube: false
      soundcloud: true
      bandcamp: true
      twitch: false
      vimeo: false
      mixer: false
      http: true
  pluginsPath: ./plugins

Начиная с 3.0 версии wavelink использует другой метод поиска музыки на youtube. Для этого скачивается плагин (автоматически, в Dockerfile уже все прописано) и настраивается в application.yml. Настройки указаны выше в примере файла. Репозиторий плагина можете найти по ссылке.

Пример DISCORD_TEXT_CATEGORIES_ID и DISCORD_VOICE_CATEGORIES_ID: 01234567890123456789,9876543210987654321

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

Версии чат-бота можно найти по ссылке (tags это и есть версии).

После создания файлов пропишите в консоле команду docker-compose up -d. Бот должен запуститься. Смотрите Docker Compose Up.

About

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

Topics

Resources

Stars

Watchers

Forks