Форум программистов, компьютерный форум, киберфорум
Node.js
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 13.01.2018
Сообщений: 62

discord.js записывающий бот

05.02.2020, 16:21. Показов 1957. Ответов 4

Студворк — интернет-сервис помощи студентам
Добрый вечерочек .

Пытаюсь создать дискорд-бота для своей гильдии. От бота требуеться слушать что говорят другие и воспроизводить это. Небольшими мучениями получился такой код:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
const receiver = voiceConnection.createReceiver();
voiceConnection.on('speaking', (user, speaking) => {
    if (speaking) { 
        const audioStream = receiver.createOpusStream(client.user);
    const outputStream = fs.createWriteStream('test.opus');
        audioStream.pipe(outputStream); 
        console.log(user.username + " is speaking now");
 
    outputStream.on('error', function (err) {
    console.log(err);
    });
    }
});
Предполагаеться, что бот должен начать запись в файл "test.opus" как только кто-то, в голосовом канале, начинает говорить. Однако файл создается, но остается пустым (0 кб).

Как решить данную проблему? Заранее спасибо =)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.02.2020, 16:21
Ответы с готовыми решениями:

Бот на discord.js
Столкнулся с проблемой. Не могу отправить сообщение в чат при запуске бота.

Бот Discord
Здравствуйте, захотел сделать так, чтобы мой бот имел команды администратора(банить, кикать, давать роли и тд.), даже нашел коды, но все...

Бот Discord. Почему у меня не отправляет в чат что человек зашел?
MrOnlineCoder, Привет не могу понять почему у меня не отправляет в чат что человек зашел client.on('message', message => { //новый...

4
81 / 40 / 22
Регистрация: 03.05.2013
Сообщений: 722
07.02.2020, 10:33
готовите строку которую надо записать далее средства node js
добавить новую информацию к файлу
JavaScript
1
2
3
4
5
6
try {
  fs.appendFileSync('test.txt', 'data to append');
  console.log('The "data to append" was appended to file!');
} catch (err) {
  /* Handle the error */
}
в идеале вам надо проверить есть ли файл вообще
JavaScript
1
2
    const stat = await fs.lstat('test.txt');
    console.log(stat.isFile());
после проверки если есть файл - работаем, если нет
создаём файл
JavaScript
1
2
3
4
5
6
fs.writeFile("test.txt", "Hey there!", function(err) {
    if(err) {
        return console.log(err);
    }
    console.log("The file was saved!");
});
лучше всё полностью реализовать async технологией
подробнее на https://nodejs.org/api/fs.html
0
1 / 1 / 0
Регистрация: 13.01.2018
Сообщений: 62
07.02.2020, 23:16  [ТС]
zasadadada, не совсем понял как из даного примера сделать запись потока (ReadStream).

JavaScript
1
2
3
4
const audioStream = receiver.createOpusStream(client.user);//возвращает ReadStream который надо записать.
const outputStream = fs.createWriteStream('test.opus');
audioStream.pipe(outputStream); 
fs.appendFileSync('test.opus', audioStream);
Попытался так, но записан лишь объект.
0
81 / 40 / 22
Регистрация: 03.05.2013
Сообщений: 722
08.02.2020, 00:34
понял, у вас аудио формат данных c кодеком опус, странно почему не получается записать в файл, в принципе всё тоже самое должно быть
вы пробуйте сохранить ту часть в которой данные, весь объект не надо
пример тут
https://github.com/Rantanen/no... Decoder.js
должно помочь
1
1 / 1 / 0
Регистрация: 13.01.2018
Сообщений: 62
22.02.2020, 14:28  [ТС]
zasadadada, спасибо за помощь, записать файл удалось. А теперь я бы хотел повысить немного сложность. Мне нужен бот-дразнилка который бы повторял за кем-то. Я попытался сделать так...

JavaScript
1
2
3
4
5
6
7
8
9
10
const broadcast = client.createVoiceBroadcast();
for (const connection of client.voiceConnections.values()) {
  connection.playBroadcast(broadcast);
}
voiceConnection.on('speaking', (user, speaking) => {
    if (speaking) {
        const audioStream = receiver.createOpusStream(user);
        broadcast.playOpusStream(audioStream);
}
}
...но зараза молчит до последнего, как на допросе. Как его заставить говорить? =)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.02.2020, 14:28
Помогаю со студенческими работами здесь

Discord.js Чтобы бот не реагировал на условную команду "ban" отправленную от человека с ролью "участник"
Нужен код. Что бы бот не реагировал на условную команду "ban" отправленную от человека с ролью "учасник" и отсылал сообщения...

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

Отвечать при наборе сообщения определёнными пользователями
Хочу, чтобы при наборе сообщения определёнными пользователями бот им отвечал. Что-то идёт не так :/ import discord from discord...

Discord bot на Discord.Net
Вот не как не могу понять где ошибка ? using System; using System.Threading.Tasks; using Discord; using Discord.WebSocket; ...

Простейший осцилограф, записывающий сигнал 220 V AC
Посвящается всем желающим. Предлагаю к рассмотрению и возможному использованию в мирных целях простейший осциллограф записывающий сигнал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru