Discord.py воспроизвести музыку от конкретного момента времени
Как можно сделать воспроизведение аудио-файла от конкретной временной точки?
Мне это нужно для реализации бегунка перемотки времени, как в обычных музыкальных программах
Пока что я сделал это через динамическое обрезание аудио-файла во временный файл:
Однако такой способ наверняка не единственный, а так же он очень затратный — если аудио-файл большой, обработка будет очень долгой
Как еще можно сделать?
Позицию надо устанавливать как опцию к CLI-инструментарию ffmpeg в параметре options или before_options , когда создаем класс FFmpegPCMAudio
Для больших файлов, конечно, подвисает, но уже гораздо лучше и быстрее
![]()
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.11.43304
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Как создать очередь проигрывания музыки для дискорд бота?

Описать такие функции как плейлист, очередь, завершение воспроизведения, переключение трека, очистка очереди, добавление в очередь.
Так же стоит использовать объектный подход, поскольку плеер должен по-разному работать при различных состояниях (пустая очередь, есть очередь и на паузе, есть очередь и играет) и работать с такой лестницей условий как в коде выше просто неудобно.
Discord ffmpegpcmaudio как получить время проигрывания
Как заставить моего бота discord.py воспроизводить mp3 в голосовом канале?
Python Discord Bot: Play Music and Send Gifs
In this tutorial, we’ll make a Python Discord bot that can play music in the voice channels and send GIFs. Discord is an instant messaging and digital distribution platform designed for creating communities. Users can easily enter chat rooms, initiate video calls, and create multiple groups for messaging friends.
We’ll skip the basics and jump straight over to the music playing. Check out this Medium article to catch up on the basics of setting up your bot. In the end, our Python Discord bot will look like the cover image of this article!
Before we dive in: remember to allow Administrator permissions for the bot.
Thanks to Rohan Krishna Ullas, who wrote this guest tutorial! Make sure to check out his Medium profile for more articles from him. If you want to write for Python Land too, please contact us.
Table of contents
Part 1: Importing all the libraries
First, create a virtual environment and install the requirements:
Next, let’s set up the .env file for our project. Create a .env file so that we can separate the environment configuration variables (these are variables whose values are set outside the program) from the main code:
Then use Python import to load all the needed modules in the main file app.py :
The module youtube_dl is an open-source download manager for video and audio content from YouTube and other video hosting websites.
Now we need to set intents for our bot. Intents allow a bot to subscribe to specific buckets of events, allowing developers to choose which events the bot listens to and to which it doesn’t. For example, sometimes we want the bot to listen to only messages and nothing else.
Part 2: Using youtube_dl to download audio
The next step in building our Python Discord bot is dealing with the part that actually downloads the audio file from the video link we provide. Please note that this bo is just a demonstration. It’s not illegal to download from YouTube for personal use according to this article, but it might be against the YouTube Terms Of Service. Please be sensible and use this for personal use only.
The from_url() method of YTDLSource class takes in the URL as a parameter and returns the filename of the audio file which gets downloaded. You can read the youtube_dl documentation at their GitHub repository.
Part 3: Adding commands to the Python Discord bot
Now let’s add the join() method to tell the bot to join the voice channel and the leave() method to tell the bot to disconnect:
Here we first check if the user who wants to play music has already joined the voice channel or not. If not, we tell the user to join first.
Awesome! Give yourself a pat on the back if you’ve reached this far! You’re doing great. In the next step, we’ll add the following methods:
- play()
- pause()
- resume()
- stop()
At this point, we need to have the ffmpeg binary in the base directory. It can be downloaded from https://ffmpeg.org/. In this case, I used the exe since I’m using a Windows machine.
Part 4: Running the Python Discord bot locally
Add the final piece of code to start the bot and it’s done:
To deploy the bot locally, activate the virtual environment and run the app.py file:
Bonus: send GIFs on start-up and print server details
In this bonus section, we will set up our bot to listen to events such as start-up. This example sends a previously downloaded GIF image to the text channel when the bot is activated:
To print server details such as owner name, the number of users, and a server id, we can add a bot command ‘where_am_i’:
This is what this will look like:
Printing server details — Image by author
You can view and clone the complete results from my Discord-Bot GitHub Repository.
That’s it! We made a Python Discord bot. Thank you for reading, and don’t hesitate to leave a reply or ask your questions in the comments section.
Related posts you might like
Python Courses
Are you enjoying this free tutorial? Please also have a look at my premium courses. They offer a superior user experience with small, easy-to-digest lessons and topics, progress tracking, quizzes to test your knowledge, and practice sessions. Each course will earn you a downloadable course certificate.
Python Fundamentals I is a course for beginners that will get you started with Python in no time. Learn all the essentials, test your progress with quizzes and assignments, and bring it all together with the final course project!
Методы трансляции музыки в Discord


- Откройте «Пуск» и перейдите в «Параметры».

- Нажмите по первой плитке с названием «Система».

- Через панель слева перейдите к разделу «Звук».

- Опуститесь к блоку «Сопутствующие параметры» и щелкните по строке «Панель управления звуком».




Шаг 3: Настройка Discord и воспроизведение музыки
- Откройте программу и перейдите в настройки учетной записи.

- В блоке «Настройки приложения» выберите раздел «Голос и видео».

- Разверните список «Устройство ввода» и найдите там пункт «Стерео микшер».

- Заранее можно отрегулировать громкость, выкрутив ее на полную, поскольку обычно ее не хватает.

- Перейдите к серверу и подключитесь к необходимому голосовому каналу.

- Сразу же можно запустить воспроизведение любого трека и проверить, появляется ли обводка вокруг аватарки, свидетельствующая о захвате звука.

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

- Снова вызовите «Параметры» и раздел «Система», выберите «Звук» и перейдите в «Панель управления звуком».

- Переместитесь на вкладку «Запись» и сделайте двойной клик по «Стерео микшеру».

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

- Откройте раздел «Голос и видео» в настройках Дискорда и используйте ползунок «Громкость микрофона» для регулировки громкости.

- Если же звук захватывается прерывисто или вообще не воспроизводится, убедитесь в том, что в качестве режима ввода выбран вариант «Активация по голосу».

- Ниже находится функция «Автоматически определять чувствительность микрофона», которую необходимо отключить.

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


Способ 3: Использование Virtual Audio Cable
Шаг 1: Загрузка и установка VAC
- Воспользуйтесь ссылкой выше для перехода на официальный сайт программы, где нажмите кнопку «Download».

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

- Подтвердите начало установки Virtual Audio Cable в Windows.

- Для перехода к следующему этапу примите условия лицензионного соглашения.

- Выберите место на компьютере для расположения файлов софта и запустите инсталляцию.

Шаг 2: Настройка виртуальных устройств VAC
- Вызовите «Пуск» и перейдите в «Параметры».

- Выберите раздел «Система».

- В нем перейдите в «Звук» и найдите строку «Панель управления звуком».

- Сразу же появится необходимая вкладка — «Воспроизведение», где найдите виртуальное устройство «Line 1», убедитесь в том, что оно включено и используется по умолчанию.

- То же самое сделайте и с микрофоном на вкладке «Запись».

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

Шаг 3: Изменение параметров Discord
- Через главное окно программы перейдите в настройки учетной записи.

- Откройте раздел «Голос и видео», который находится в блоке «Настройки приложения».

- В качестве устройства ввода выберите «Line 1».

- Сначала выкрутите громкость на полную — потом можно будет вернуться в это меню для ее регулировки.

- В качестве режима ввода обязательно используйте «Активацию по голосу».

- Отключите автоматическое определение чувствительности и переместите ползунок практически на минимальный уровень, обеспечив захват всех звуковых частот трека.

- Сразу можно выбрать один из голосовых каналов для подключения.

- Отображение вашего профиля в голосовом канале свидетельствует об успешном подключении.

- Запустите выбранный софт и откройте его меню.

- Через него перейдите в общие настройки. Обычно за это отвечает еще и стандартная горячая клавиша Ctrl + P.

- Найдите раздел «Воспроизведение» или «Параметры воспроизведения», где разверните список с доступными устройствами.

- Отыщите там добавленный динамик «Line 1» и установите его основным.

- Начните воспроизведение выбранной композиции.

- Вернитесь в Discord и убедитесь в том, что микрофон захватывает транслируемый трек.

- По необходимости громкость можно изменить прямо в плеере или настройках Дискорда.

- Нажмите по названию сервера и через выпадающее меню перейдите в его настройки.

- Откройте раздел «Роли».

- Выберите роль для редактирования или создайте новую.

- Опуститесь к блоку с правами для голосовых каналов и найдите там «Использовать режим активации по голосу». Теперь вы можете отключить или активировать его в зависимости от личных потребностей.

- Вернитесь к предыдущему меню, но на этот раз откройте раздел «Участники». Укажите пользователя для присвоения настроенной роли.

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

- Откройте свой сервер и нажмите по его названию для отображения меню.

- Перейдите в «Настройки».

- Найдите там раздел «Роли», находящийся в блоке «Управление участниками».

- Выберите роль для редактирования права на использование режима активации по голосу.

- Просмотрите список доступных прав и найдите необходимое. Снимите или активируйте галочку для внесения соответствующих изменений.

- Вернитесь к главному разделу с настройками сервера и выберите «Участники».

- Найдите пользователя для присвоения ему новой роли.

- Отметьте маркером новый статус, редактирование которого осуществлялось ранее.

- Наведите курсор на голосовой канал и кликните по появившемуся значку шестеренки.

- В окне с настройками перейдите в раздел «Права доступа».

- Добавьте участника или роль, к которой будут относиться особые права текущего канала.

- В списке разрешений найдите «Использовать режим активации по голосу». Если поставить галочку, он будет доступен. Косая черта означает синхронизацию с параметрами роли.

- Сделайте долгий тап по голосовому каналу, который хотите настроить.

- Появится окно «Параметры канала», в котором перейдите в «Права доступа».

- Добавьте роль или конкретного участника для настройки.

- В отобразившемся списке осуществите свой выбор или используйте функцию быстрого поиска.

- Найдите право «Использовать режим активации по голосу» и решите, хотите ли вы его отключить или сделать активным.

Как мне заставить моего бота Discord оставаться в голосовом канале в течение определенного времени определенного mp3-файла?
Я разрабатывал бота для своего личного сервера Discord, и до сих пор он воспроизводил mp3-файлы заданной длины, поэтому я говорю боту спать на определенное время, в зависимости от того, как долго длится mp3. Теперь, с моей новой командой, будут воспроизводиться mp3-файлы разной длины, и я не уверен, что делать дальше. Вы можете увидеть в моем коде, как я заставляю его спать, но это больше не будет работать, так как mp3 могут быть очень длинными или очень короткими. Я пытаюсь найти способ получить информацию о mp3 через python и передать ему спать на время mp3. Может ли кто-нибудь помочь мне в этом или указать в правильном направлении? Спасибо.
Раньше я пытался использовать команду типа vc.wait, но бот продолжал присоединяться, а затем сразу же уходил. Команда сна отлично работала для моих прошлых применений, поэтому я просто использовал ее.
Я ничего не жду, однако я надеюсь найти некоторую помощь или толчок в правильном направлении, чтобы определить длину mp3 на месте и соответствующим образом скорректировать время, затрачиваемое ботом на голосовой канал. Спасибо. Извините, мой код такой неаккуратный, это просто личный проект, и я никогда не ожидал, что кто-то его увидит.