Как создать музыкального бота без FFmpeg на discord.py?
Всем доброй ночи! Как создать музыкального бота на discord.py без ffmpeg?
- Вопрос задан более трёх лет назад
- 8891 просмотр
2 комментария
Средний 2 комментария
Сергей Карбивничий @hottabxp Куратор тега Python
Или сами пойте в микрофон, или уточните вопрос.
ratratrat @ratratrat Автор вопроса
Сергей Карбивничий, уточнил, см. ответ к вопросу
Решения вопроса 1

Александр @Alexandre888 Куратор тега Боты
Javascript-разработчик
Ответ написан более трёх лет назад
Нравится 1 6 комментариев
ratratrat @ratratrat Автор вопроса
там есть FFmpeg, толку?

Александр @Alexandre888 Куратор тега Боты
ratratrat, а что вы хотели без ffmpeg’а? других вариантов нету.
чем он вам не угодил-то?
ratratrat @ratratrat Автор вопроса
Александр, не ставится на хостинг repl.it 🙂
обидно, причём очень. В библиотеках он есть, но его вырезали из использования по причине спама в гс-каналы, насколько мне известно.

Александр @Alexandre888 Куратор тега Боты
Как создать музыкального бота в discord
Если вы хотите установить готового музыкального бота, без лишних проблем и траты времени, то этот гайд специально для вас. Мы объясним на конкретном примере, как поставить на ваш сервер Discord музыкального бота, который будет работать круглые сутки. Разделим наш гайд на этапы, чтобы вам было немного удобнее ориентироваться в тексте.
1 этап – Выбор
На этом этапе нам необходимо выбрать бота на сервер.
Для этого заходим по ссылке: https://www.carbonitex.net/Discord/bots
Во вкладке Info можно узнать полезную информацию о боте, его функционал, возможности и т. д.
Во вкладке Features вы можете посмотреть основные особенности бота, его отличие от остальных.
Во вкладке Usage обычно пишут способ применения бота, его основные команды и подсказки.
Обратите внимание, что нам необходимо выбрать бота с музыкальным функционалом.
Для примера мы выбрали бота под названием WildBot, но вы можете выбрать другого.
2 этап – Установка
После того, как вы выбрали подходящего бота, нажмите на зелёную кнопку Add Bot To Server.
Затем, нам необходимо выбрать сервер на который мы хотим установить бота.
Для примера мы выбрали Тестовый сервер.
Рекомендуем вам создать аналогичный, пустой сервер, для пробной попытки.
Желательно не снимать галочки с разрешений (если они есть), для успешного функционирования бота.
Нажимаем кнопку Авторизовать.
Переходим в программу Discord, на тестовый сервер.
3 этап – Настройка и запуск музыкального бота
В сети мы можем увидеть нашего музыкального бота.
Обычно боты автоматически задают себе роль и права после авторизации, но в нашем случае необходимо выдать права и роль в ручную. Пишем название роли для бота, мы для примера взяли Бот и выставляем галочки в правах.
Внимание: У каждого бота есть свои текстовые команды и префикс, условия для работы, но они они могут повторятся.
Например: у одного бота, команда воспроизведение музыки может быть следующая $Music[пробел]название трека, а другого !Play[пробел]название трека
У выбранного нами бота WildBot имеются свои команды и префикс (++) для ввода.
Вводим в текстовой чат на сервере команду ++help и получаем в личные сообщения от нашего бота список основных команд для работы.
Далее мы вводим команду ++voice, чтобы добавить бота в голосовой чат.
(Очень важно, если вы хотите слышать музыку)
Далее мы видим в текстовом чате следующее.
- ++request – Добавление музыки в плейлист (Ссылка на видео из Youtube или Soundcloud).
- ++music pause – Поставить музыку на паузу.
- ++music play – Воспроизводить музыку.
- ++volumе – Изменять громкость музыки.
- ++playlist – Посмотреть плейлист.
- ++Shuffle – Перемешать треки в плейлисте.
- ++voteskip – Голосование за пропуск трека.
- ++skip – Пропустить трек.
- ++leave-voice – Убрать бота из голосового чата.
Если бот не начал играть музыку после ввода команды ++voice, добавляем свои треки при помощи команды ++request и затем жмём ++music play.
Наслаждаемся музыкальным ботом на своём сервере.
4 этап – Конец
В данном гайде мы рассмотрели один из вариантов установки музыкального бота на ваш сервер. Этот вариант подойдет тем, кто не хочет мудрить с настройками и установкой бота на свой ПК (сервер). Минус в том, что вы не сможете контролировать работоспособность такого бота, но вы всегда можете его поменять на другого.
Музыкальные боты для Дискорда

Пользователи мессенджера часто спрашивают, как в Дискорде добавить бота с музыкой, и в чем особенности таких программ. Ниже рассмотрим несколько вариантов, поговорим о том, как их установить на сервер Discord, и как пользоваться.
Виды и особенности
Музыкальный бот для Discord — специальное дополнение, которое устанавливается на один из серверов Дискорд и открывает доступ к прослушиванию музыки с разных ресурсов. Сегодня в распоряжении пользователей несколько вариантов помощников, которые можно добавить на сервер. Для удобства сведем их функции, плюсы и минусы в таблицу.
Поиск результатов на YouTube.
Возможность изменения серверного префикса.
Поддержка плейлистов на Ютуб.
Отображение текста песни.
Черный и белый списки.
Отсутствие премиум версии.
Быстрое перемешивание плейлиста.
Обновление списка воспроизведения.
Создание разрешений на больших серверах.
Поиск Ютуб из чата.
Не нужно настраивать. Можно сразу добавить и пользоваться.
Минимальные потери качества.
Открытый исходный код.
Нет дополнительных функций (кроме музыки).
Больше подходит для небольших серверов Дискорд.
Аудио-эффекты с контролем басов и режима работы.
Большой объем сервера.
Поддержка многих сайтов
Добавление аудио-эффектов, контроля громкости и сохранения очереди только после оплаты.
Просмотр Ютуб в прямом эфире.
Быстрая установка на Дискорд.
Возможность трансляции звука в течение всего дня.
Высокое качество звука.
Кроме рассмотренных выше, можно добавить и других помощников — Tony Bamanaboni, ErisBot, ZandrCraft и другие. Много вопросов касается того, какие бывают боты на русском языке. Большинство из них имеют англоязычный интерфейс, но это не создает трудностей с управлением, ведь для этого используются специальные команды.
Как установить
Много вопросов касается того, как добавить бота с музыкой в Дискорде. Вне зависимости от типа помощника его можно пригласить по следующему алгоритму:
- Перейдите на официальный сайт бота с музыкой для Дискорд.

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

- Задайте опции, которые будут доступны Дискорд-боту.
- Жмите на кнопку Авторизовать.

После этого можно настроить бота Дискорд для прослушивания музыки, если эта опция предусмотрена.
Как пользоваться
Многие после установки не могут разобраться, как включить музыку через бота, и как вообще пользоваться такими утилитами. Во всех случаях управление осуществляется с помощью команд, которые вбиваются в чат. К примеру, в Groovy для использования можно использовать следующие сообщения:
- -play [link or search query] — играть музыку, добавить в плейлист;
- -queue — информация о списке;
- -next — переход к следующей песне;
- -play file — играть файл из сообщения;
- -join — фиксация бота на голосовом канале;
- -clear — очистка трека из списка и т. д.
Точная информация о боте с музыкой в Дискорд (как добавить, команды, функции, стоимость) описаны на официальных сайтах. Именно с них необходимо начинать изучение.
Итоги
Теперь вы знаете, как добавить помощника с музыкой на Дискорд, и какому варианту отдать предпочтение. Сегодня существует десятки таких Discord-ботов, поэтому перед установкой изучите их возможности, а уже после принимайте решение.
Как сделать музыкального бота в Discord?
Сразу извиняюсь, если вопрос глупый, но я не могу понять из-за чего эта ошибка. Сам бот заходит в голосовой канал и подсвечивает, т.е. работает, но ничего не слышно.

import asyncio import discord import youtube_dl from discord.ext import commands # Suppress noise about console usage from errors youtube_dl.utils.bug_reports_message = lambda: '' ytdl_format_options = < 'format': 'bestaudio/best', 'outtmpl': '%(extractor)s-%(id)s-%(title)s.%(ext)s', 'restrictfilenames': True, 'noplaylist': True, 'nocheckcertificate': True, 'ignoreerrors': False, 'logtostderr': False, 'quiet': True, 'no_warnings': True, 'default_search': 'auto', 'source_address': '0.0.0.0' # bind to ipv4 since ipv6 addresses cause issues sometimes >ffmpeg_options = < 'options': '-vn' >ytdl = youtube_dl.YoutubeDL(ytdl_format_options) class YTDLSource(discord.PCMVolumeTransformer): def __init__(self, source, *, data, volume=0.5): super().__init__(source, volume) self.data = data self.title = data.get('title') self.url = data.get('url') @classmethod async def from_url(cls, url, *, loop=None, stream=False): loop = loop or asyncio.get_event_loop() data = await loop.run_in_executor(None, lambda: ytdl.extract_info(url, download=not stream)) if 'entries' in data: # take first item from a playlist data = data['entries'][0] filename = data['url'] if stream else ytdl.prepare_filename(data) return cls(discord.FFmpegPCMAudio(filename, **ffmpeg_options), data=data) class Music(commands.Cog): def __init__(self, bot): self.bot = bot @commands.command() async def join(self, ctx, *, channel: discord.VoiceChannel): """Joins a voice channel""" if ctx.voice_client is not None: return await ctx.voice_client.move_to(channel) await channel.connect() @commands.command() async def play(self, ctx, *, query): """Plays a file from the local filesystem""" source = discord.PCMVolumeTransformer(discord.FFmpegPCMAudio(query)) ctx.voice_client.play(source, after=lambda e: print('Player error: %s' % e) if e else None) await ctx.send('Now playing: <>'.format(query)) @commands.command() async def yt(self, ctx, *, url): """Plays from a url (almost anything youtube_dl supports)""" async with ctx.typing(): player = await YTDLSource.from_url(url, loop=self.bot.loop, stream=True) ctx.voice_client.play(player, after=lambda e: print('Player error: %s' % e) if e else None) await ctx.send('Now playing: <>'.format(player.title)) @commands.command() async def stream(self, ctx, *, url): """Streams from a url (same as yt, but doesn't predownload)""" async with ctx.typing(): player = await YTDLSource.from_url(url, loop=self.bot.loop, stream=True) ctx.voice_client.play(player, after=lambda e: print('Player error: %s' % e) if e else None) await ctx.send('Now playing: <>'.format(player.title)) @commands.command() async def volume(self, ctx, volume: int): """Changes the player's volume""" if ctx.voice_client is None: return await ctx.send("Not connected to a voice channel.") ctx.voice_client.source.volume = volume / 100 await ctx.send("Changed volume to <>%".format(volume)) @commands.command() async def stop(self, ctx): """Stops and disconnects the bot from voice""" await ctx.voice_client.disconnect() @play.before_invoke @yt.before_invoke @stream.before_invoke async def ensure_voice(self, ctx): if ctx.voice_client is None: if ctx.author.voice: await ctx.author.voice.channel.connect() else: await ctx.send("You are not connected to a voice channel.") raise commands.CommandError("Author not connected to a voice channel.") elif ctx.voice_client.is_playing(): ctx.voice_client.stop() def setup(client): client.add_cog(Music(client)) print('Music: activated')
Ignoring exception in command yt: Traceback (most recent call last): File "C:\Users\volva\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\core.py", line 85, in wrapped ret = await coro(*args, **kwargs) File "C:\Users\volva\Desktop\botTest\cogs\music.py", line 82, in yt player = await YTDLSource.from_url(url, loop=self.bot.loop, stream=True) File "C:\Users\volva\Desktop\botTest\cogs\music.py", line 52, in from_url return cls(discord.FFmpegPCMAudio(filename, **ffmpeg_options), data=data) File "C:\Users\volva\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\player.py", line 225, in __init__ super().__init__(source, executable=executable, args=args, **subprocess_kwargs) File "C:\Users\volva\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\player.py", line 138, in __init__ self._process = self._spawn_process(args, **kwargs) File "C:\Users\volva\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\player.py", line 147, in _spawn_process raise ClientException(executable + ' was not found.') from None discord.errors.ClientException: ffmpeg was not found. The above exception was the direct cause of the following exception: Traceback (most recent call last): File "C:\Users\volva\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\bot.py", line 939, in invoke await ctx.command.invoke(ctx) File "C:\Users\volva\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\core.py", line 863, in invoke await injected(*ctx.args, **ctx.kwargs) File "C:\Users\volva\AppData\Local\Programs\Python\Python39\lib\site-packages\discord\ext\commands\core.py", line 94, in wrapped raise CommandInvokeError(exc) from exc discord.ext.commands.errors.CommandInvokeError: Command raised an exception: ClientException: ffmpeg was not found.
- Вопрос задан более двух лет назад
- 9237 просмотров
