Как подключить бота к голосовому каналу дискорд discord py

Обновлено: 07.07.2024

Hi guys, I'm wondering if the library has capability to read audio bytes from the voice channels? I'm building a Bot that will read the voice and try to convert it to text commands.

Can anyone enlighten me?

The text was updated successfully, but these errors were encountered:

Seems to be already reading/polling from the voice channel though?

Fuyukai commented Jan 5, 2017

Sure, just design the API, document it fully and submit a pull request.

ghost commented Jan 30, 2017

Just to settle this, this has been tried and tried again, and everyone has mostly failed. Danny wants it one in a nice way, but really, it isn't worth the time and effort, so this will not be coming anytime soon.

whos danny? and why is it hard? isn't it just connecting whatever the socket for the audio and reading that data

ghost commented Jan 31, 2017

Danny made this library (Danny = Rapptz). Next, it is very easy to read the data from the websocket, but presenting data that is usable, in a decent manner, is hard. In essence, you have to chunk streamed data, and I dont think anybody wants to go into the trouble of doing that, yet. The hard part is designing the API in a way that is useful and useable, not a quick throw-together solution.

ghost commented Jan 31, 2017

Just to let you know, Danny has planned voice recieve for the rewrite

Mercurial commented Jan 31, 2017

oh ok thanks for the information!

Ruuttu commented Mar 7, 2017

I wanted my bot to play a 15 second replay on-demand, just for laughs basically, so I needed basic recording capability to start with.

I built a setup that mixes together all incoming audio and makes available a single stream of

50 packets a second. There's no fancy synchronization or stretching, it's just in-out as fast as possible with a latency of a few frames so there's time to get everything in order. You need to call a function to fetch a new frame 50 times a second. Each speaker can be "re-synchronized" when they don't speak, so the stream remains live and stable on the long term even if there's minor drifting. Otherwise you could drop or duplicate packets I'm sure.

The code is shit, but if I could make it a little less shit, would that kind of basic "just feed me data" API be worthy if only as a starting point?

ghost commented Mar 11, 2017

You can always pull request, but keep in mind, there have been more than a few failed attempts, since Danny is very strict when it comes to pull requests.

Rapptz moved this from Implemented to TODO in Rewrite May 21, 2017

rawrzors commented Jun 25, 2017

@Ruuttu Would you be able to share that code? Curious because I'm trying to add some voice recording (save to file)

Ruuttu commented Jun 25, 2017

Let's see. This was all done against version 0.13.0 at the time.

In your bot (inherited from discord.Client) you need to call enable_voice_events() for your VoiceClient after joining a channel. After that you can receive opus packets in the on_speak() method which you'll add.

I wrote a "Recorder" class that takes the packets from on_speak(), converts them to PCM and maintains continuous per-speaker audio "streams" that sync together. There's a get_replay() method for retrieving the last n seconds of audio. You get lists of tuples because the audio is still separated by speaker, plus there's some extra data. Once you figure out what's what, you can mix together the speakers using python's audioop module.

You'll need to make some edits, but this should have all you need. I added a commented out example of how you might write a mixed down PCM stream to a file. Sorry some of the code is kinda silly and poorly commented.
recording_example.zip

@Ruuttu Thanks for this! This is very helpful. However, doing these modifications against the latest discord.py version, the decoder doesn't seem to be working, it raises an access violation error.

Only thing that has been changed between these versions (of discord.py) in opus.py is it setting the signal type to auto when encoding:

I just recently started with Python so I don't have any idea how this could be fixed. I already got decoding working before using python-opus(with some editing), but it would be nice to get this working since it doesn't need another library.

Для начала вам нужно создать новый сервер в Discord (или получить права администратора на уже существующем). Откройте страницу вашей учетной записи Discord в браузере — так будет удобнее перемещаться между страницами настроек.

1. Нажмите на «+» на левой панели.

2. Выберите шаблон сервера в зависимости от вашей сферы или создайте собственный.

3. Укажите, для каких целей хотите его использовать.

4. Выберите изображение будущего сервера и укажите его название (1), затем нажмите Create. (2).

5. Сервер создан. По умолчанию в него уже добавлены два канала — текстовый и голосовой (1). Чтобы изменить настройки канала, нажмите значок шестеренки (2). Добавить новый канал можно, нажав на «+» рядом с названием раздела. Мы не будем создавать новый канал и для подключения нашего бота используем уже существующий канал general.

6. Теперь нужно получить ID выбранного канала. Для этого нужно сначала включить режим разработчика в настройках вашего профиля. Нажмите на значок шестеренки рядом с вашим никнеймом и фотографией.

7. Перейдите в раздел APP SETTINGS, на вкладку Advanced (1) и переместите селектор Developer mode — режим разработчика активируется (2).

8. Вернитесь из меню настроек и кликните по нужному каналу правой клавишей мыши (1), во всплывающем меню выберите Copy ID — идентификатор вашего канала будет скопирован (2). Сохраните его в любом текстовом документе, чтобы не возвращаться к этому шагу.

Создать бота и добавить его на сервер, скопировать токен бота

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

1. На вкладке Applications выберите New Application.

2. Введите название будущего приложения (1) и нажмите Create (2).

3. Приложение создано. Перейдите не вкладку Bot (1) и нажмите Add Bot, чтобы добавить нового бота.

4. Согласитесь добавить бота в ваше приложение.

5. Бот создан. На вкладке Bot отобразится вся информация о нем. Тут можно изменить его имя, добавить изображение и скопировать токен бота (1). Этот токен понадобится вам для настройки модуля Discord на платформе Appmaster.i. Каждый раз при внесении изменений портал разработчика будет предлагать вам сохранить их (2).

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

7. Вставьте скопированную ссылку в адресную строку браузера и перейдите по ней — откроется окошко вашего приложения. Выберите ваш сервер в раскрывающемся списке (1) и нажмите Continue (2).

8. Убедитесь, что приложению (а значит, и созданному в нем боту) даны только необходимые разрешения, после чего добавьте его на ваш сервер.

Через AppMaster.io Studio подключить бота в приложение

Подробнее о том, что такое модули и как их настраивать — в обучающем видеокурсе AppMaster.io 101.

Что делать если мне написали вот это:

как сделать так что бы он был в сети

Лучше скачай BDFD там запусти его за просмотр рекламы

Реклама = 2 часа
Капча = 30 минут

я вроде сделал все как надо, как узнать на какую команду, скажем так "откликается" бот?

Я сделал всё что было задано создал новый сервер вставил сыллку на приглашение вставлял айди канала ничего не даёт

Как ЛитРес с помощью Solar Staff подключил сотни веб-мастеров и рассказал о книгах миллиону читателей по всей России.

Как административное планирование победило демократию в нашем агентстве

История про то, как шипастый кнут оказался эффективнее нежных слов в дрессировке дедлайнов и людей, да вот только пряник в этом деле подействовал куда лучше

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

Производители дешёвых «умных» телевизоров зарабатывают больше на торговле данными, чем на продаже техники Статьи редакции

Разработчики сохраняют информацию о том, что покупают, ищут и смотрят пользователи, и передают её Google, Facebook, Netflix и Spotify.

Полезные в быту. Топ домашних аксессуаров для снижения экоследа

Многие вещи, которые мы привыкли использовать в быту один раз, а после этого выбрасывать в урну, в природе разлагаются сотни лет. Рассказываем, как подобрать более экологичные альтернативы.

Путин подписал закон об электронном документообороте — заключить трудовой договор можно будет в интернете Статьи редакции

Подписывать трудовые документы электронной подписью можно будет с 1 сентября 2022 года.

Чем нам так нравятся Lottie-анимации, и почему вам тоже стоит о них узнать

Всем привет, меня зовут Артем Сафаров, я — дизайнер из веб-студии Pyrobyte. Мы используем Lottie-анимации на проектах студии, эта технология нам очень нравится, поэтому сегодня и вас с ней познакомим :)

Новый способ развода от OZON! Как недобросоветсные продавцы обходят защиту покупателей!

Цель статьи убечь пользователей от новой схемы развода/мошенничества на площадке OZON. Для модераторов, вся информация в материале взята из открытых источников и доступна в сети интернет. Все, что написано далее сделано во благо общества и общественных интересов.
29 октября номер заказа 23097800-0021 приобрел туалетную воду на OZON в магазине

Из этого туториала Вы узнаете, как полностью создать собственного бота Discord в облаке.

Вам не нужно ничего устанавливать на свой компьютер, и вам не нужно ничего платить за размещение своего бота.

Мы будем использовать целый ряд инструментов, в том числе Discord API, библиотеки Python, и платформы облачных вычислений под названием Repl.it.

Как создать учетную запись Discord Bot

Чтобы работать с библиотекой Python и API Discord, мы должны сначала создать учетную запись Discord Bot.

Вот шаг к созданию учетной записи Discord Bot.

1. Убедитесь, что вы вошли на сайт Discord.

3. Щелкните кнопку «Новое приложение».


4. Дайте приложению имя и нажмите «Создать».


5. Перейдите на вкладку «Бот» и нажмите «Добавить бота». Вам нужно будет подтвердить действие, нажав «Yes, do it!»


Оставьте настройки по умолчанию для Public Bot и Require OAuth2 Code Grant.

Ваш бот создан. Следующим шагом будет копирование токена.


Этот токен является паролем вашего бота, поэтому не сообщайте его никому. Это может позволить кому-то войти в ваш бот и делать разные плохие вещи.

Вы можете регенерировать токен, если он случайно станет доступен.

Как пригласить вашего бота присоединиться к серверу

Теперь вам нужно подключить своего пользователя-бота к серверу. Для этого вы должны создать для него URL-адрес приглашения.

Перейдите на вкладку «OAuth2». Затем выберите «бот» в разделе «scopes».



После выбора соответствующих разрешений нажмите кнопку «Copy» над разрешениями. Это скопирует URL-адрес, который можно использовать для добавления бота на сервер.

Вставьте URL-адрес в свой браузер, выберите сервер, на который будет приглашен бот, и нажмите «Авторизовать».

Чтобы добавить бота, вашей учетной записи необходимы разрешения «Управление сервером».

Теперь, когда вы создали пользователя-бота, мы начнем писать код Python для бота.

Как написать код для базового бота Discord с помощью библиотеки discord.py

Мы будем использовать библиотеку Python discord.py, чтобы написать код для бота. discord.py - это оболочка API для Discord, которая упрощает создание бота Discord на Python.

Как создать реплику и установить disocrd.py

Вы можете разработать бота на своем локальном компьютере с помощью любого редактора кода. Однако в этом уроке мы будем использовать Repl.it, потому что это упростит всем пользователям следовать его указаниям. Repl.it - ​​это онлайн-среда IDE, которую вы можете использовать в своем веб-браузере.

Создайте новый Repl и выберите «Python» в качестве языка.

Чтобы использовать библиотеку discord.py, просто напишите import discord вверху main.py . Repl.it автоматически установит эту зависимость, когда вы нажмете кнопку «Run».

Если вы предпочитаете кодировать бота локально, вы можете использовать эту команду в MacOS для установки discord.py:

Возможно, вам придется использовать pip3 вместо pip .

Если вы используете Windows, вы должны вместо этого использовать следующую строку:

Как настроить события Discord для вашего бота

Добавьте этот код в main.py. (Вы можете назвать файл как-нибудь иначе, только не discord.py.) Я вскоре объясню, что делает весь этот код.

Когда вы создали своего пользователя-бота в Discord, вы скопировали токен. Теперь мы собираемся создать файл .env для хранения токена. Если вы запускаете свой код локально, вам не нужен файл .env . Просто замените os.getenv('TOKEN') токеном.

.env файлы используются для объявления переменных среды. На Repl.it большинство создаваемых вами файлов видны всем, но .env файлы видны только вам. Другие люди, просматривающие публичный ответ, не смогут увидеть содержимое файла .env .

Поэтому, если вы разрабатываете на Repl.it, включайте в файл .env только личную информацию, такую ​​как токены или ключи.


Внутри файла добавьте следующую строку, включая ваш фактический токен, который вы скопировали ранее:

Теперь давайте рассмотрим, что делает каждая строка в коде вашего бота Discord.

У нас есть код для бота, поэтому теперь нам просто нужно его запустить.

Как запустить бота

Теперь нажмите кнопку запуска вверху, чтобы запустить своего бота в repl.it.

Если вы пишете бота локально, вы можете использовать эти команды в терминале для запуска бота:

В других системах:

Теперь перейдите в свою комнату в Discord и введите «$hello». Ваш бот должен ответить «Hello!».


Как улучшить бота

Теперь, когда у нас есть базовый бот, мы его улучшим. Не зря он называется «Encourage Bot».

Мы начнем с добавления функции «$inspire».

Как добавить в бота вдохновляющие цитаты

Мы будем получать вдохновляющие цитаты из API под названием zenquotes.io. Нам нужно импортировать еще пару модулей Python, добавить функцию get_quote() и обновить код нашего бота, чтобы вызвать функцию.

Вот обновленный код. После кода я объясню новые части.

Функция get_quote() очень проста. Во-первых, она использует модуль запросов для запроса данных из URL-адреса API. API возвращает случайную вдохновляющую цитату. Эту функцию можно легко переписать для получения котировок из другого API, если текущий перестанет работать.

Затем внутри функции мы используем json.loads() для преобразования ответа API в JSON. Методом проб и ошибок я понял, как перевести цитату из JSON в нужный строковый формат. Цитата возвращается из функции в виде строки.

На этом этапе вы можете запустить свой код и попробовать его.

Как добавить грустные слова в бота

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

Добавьте следующую строку после создания переменной client :

Не стесняйтесь добавлять в список больше слов.

Добавьте следующий список после созданного вами списка sad_words :

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

Вот обновленный код:

Это хорошее время для тестирования бота. Теперь вы знаете достаточно, чтобы создать собственного бота.

Создание простого Discord бота с помощью библиотеки discord.py

Асинхронная библиотека discord.py содержит все что нужно для бота, с помощью нее даже можно работать с голосовыми каналами сервера. В этой статье я расскажу как создать простенького бота для вашего discord сервера.

Получение токена и Client ID для вашего бота

Для получения токена и ID бота небходимо создать свое приложение и в разделе General Information скопировать Client ID.

А в разделе настроек создать бота и скопировать его токен. Задача не сложная, думаю все с этим справятся.

Собственно пишем бота

Устанавливаем discord.py с помощью pip:

pip install discord

После успешной установки создаем файл bot.py, где будем писать бота.

Импортируем все необходимое:

import discord
from discord.ext import commands

Создаем переменную с вашим токеном, про который я писал выше:

Про токен
Создаем тело бота:

Для начала сделаем простенькую команду, аргумент которой бот будет просто пересылать:

И в конце запускаем бота с вашим токеном:

В итоге должно получится вот такое:

Код
Теперь необходимо добавить бота на сервер. Сделать это можно с помощью ссылки:

Число необходимых прав можно получить в разделе настроек бота.

Теперь можно запускать бота:

После нескольких секунд, можно заметить его в сети:

Latest commit

Git stats

Files

README.md

discordbotstut

Начнём. Ссылка на мой youtube канал.

Discord bot туториал. Туториал по созданию ботов для дискорда на node.js используя discord.js.

Creation date : 06.12.2019

Установка node.js .

Давайте начнём создание бота. Если у вас установлена node.js, то пропустите сделающие 2 строчки. Заходим на сайт node.js , скачиваем, устанавливаем. Скриншотов процесса установки нету, тк переустанавливать node.js нету желания. Но там всё интуитивно понятно.

Создание файлов, инициализация проекта, установка библиотек.

Создаём папку bot. Желательно не использовать кирилицу, юникод и т. п. в названии. Сразу же создаём файл index.js или bot.js. Это не несёт особого смысла. Можно назвать как угодно, но принятно index.js / bot.js. Это будет главный файл бота, т.е. первым запускается, в нём основной код бота. Далее открываем консоль / терминал если у вас linux. Для быстрого открытия консоли на windows можно нажать WIN + R, ввести cmd. Далее переходим в папку бота, думаю как это сделать через консоль всем понятно. Пишим : npm init - инициализация проекта. Жмём enter до конца. Если ошибка в package name, то напишите bot. npm i discord.js - установка библиотеки discord.js.

Редакторы кода.

Далее рекомендую установить один из следующих редакторов кода :

Atom .

VScode .

Если очень слабый компьюер можете поставить notepad++ , но это для постоянной основы не самый хороший вариант. Лично я использую Atom.

Аккаунт бота.

Вы можете зарегистрировать его на сайте discord developers . Жмём кнопку "New Application". Вводим название бота. Жмём "Create". Переходим во вкладку "Bot", нажимаем "Add Bot", затем "Yes, do it!" Находим строку "token", немного ниже есть кнопка "Copy", нажимаем. Теперь в вашем буфере обмена есть токен бота.

Код.

Начало.

Создадим первый код. Пишем :

const Discord = require("discord.js"); //Подключаем discord.js для дальнейшего использования.
const client = new Discord.Client();
client.login("token"); //Где token пишем токен бота.

Запуск.

Открываем консоль, переходим в папку проекта и пишем :

в зависимости от названия файла. Если у вас windows, то вы можете создать файл start.bat с текстом

Если линукс, то вы можете создать файл start.sh

Это будет запускать бота. Далее я не буду говорить про запуск. Делайте это сами.

Конфиг.

Создаем файл config.json с конфигурацией нашего бота.

В начале кода бота напишем :

const config = require("./config.json");

Еще вы можете создать конфиг прямо в коде бота.

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

Давайте залогируем тег автора.

Команда !ping

Также можно писать не

.startsWith проверят начинается ли строка с символов в аргументах.

Eval.

Также даже начинающим программистам будет очень полезна в боте команда !eval для выполнения кода не пиша его в коде бота, т.е. вы пишите !eval какой-то код и бот выполняет этот код.
Я нашёл хороший туториал по этой команде на github. Рекомендую ознакомиться и взять себе команду в код бота. Принцип её работы мы разберём позже. Тык .

RichEmbed.

Пример.

Это называется RichEmbed (Embed). Давайте отправим простой эмбед похожий на данный. (Картинка ниже)

Читайте также: