Discordボットからオーディオファイルをどのように再生しますか?ローカルファイルを再生し、JSである必要があり、特定のメッセージが送信されると、メッセージを入力したユーザーに参加し、そのチャネルでファイルを再生します。
GitHubプロジェクト: [〜#〜] link [〜#〜]
これを行うには、最初に確認しなければならないことがいくつかあります。
そこから手順は非常に簡単です。プロジェクトを作成したら_index.js
_いくつかのコードを入力し始めます。手順は次のとおりです。
Discord.js依存関係をプロジェクトに追加します。
var Discord = require('discord.js');
botというクライアント変数を作成します。
var bot = new Discord.Client();
ブール変数を作成して、システムがリクエストを過負荷にしないようにします。
_var isReady = true;
_
次に、正しいメッセージをインターセプトする関数を作成します。
bot.on('message', message =>{ENTER CODE HERE});
ifステートメントを作成して、メッセージが正しいかどうか、ボットの準備ができているかどうかを確認します。
if (isReady && message.content === 'MESSAGE'){ENTER CODE HERE}
終了するまでイベントを処理できないように、ボットを準備完了に設定します。
_isReady = false;
_
メッセージ送信者が現在いるチャネルの変数を作成します。
_var voiceChannel = message.member.voiceChannel;
_
そのチャネルに参加して、すべてのエラーを追跡します。
voiceChannel.join().then(connection =>{ENTER CODE HERE}).catch(err => console.log(err));
オーディオファイルへの参照を作成して再生します。
const dispatcher = connection.playFile('./audiofile.mp3');
オーディオファイルの再生が完了するまで待機するスロット。
dispatcher.on("end", end => {ENTER CODE HERE});
オーディオの再生が完了したらチャンネルを離れます。
voiceChannel.leave();
アプリケーションにログインします。
bot.login('CLIENT TOKEN HERE');
すべての作業が終了したら、閉じていない括弧または括弧を確認してください。最終的に良い解決策を見つけるまでに何時間もかかったので、これを作ったので、このようなものを探している誰とでも共有したかったのです。
Visual Studioの肥大化の必要はありません..やり過ぎです.npmを介してnode.jsと依存関係が必要なだけです。
本当にありがとう!
他の誰かを助けるために私が言うことの1つは、ステップ10でコードを入力するというようなものです、ステップ11 IEからコードを入れます:
dispatcher.on("end", end => voiceChannel.leave());
完全な例として、これはメッセージコマンドのIFブロックで使用した方法です。
if (command === "COMMAND") {
var VC = message.member.voiceChannel;
if (!VC)
return message.reply("MESSAGE IF NOT IN A VOICE CHANNEL")
VC.join()
.then(connection => {
const dispatcher = connection.playFile('c:/PAtH/TO/MP3/FILE.MP3');
dispatcher.on("end", end => {VC.leave()});
})
.catch(console.error);
};
付属のNicholas Johnsonの Githubボットコード を進めましたが、少し変更を加えました。
LockableClient
を拡張するClient
を作成しました。{
"token" : "your-token-here"
}
const { Client } = require('discord.js')
/**
* A lockable client that can interact with the Discord API.
* @extends {Client}
*/
class LockableClient extends Client {
constructor(options) {
super(options)
this.locked = false
}
lock() {
this.setLocked(true)
}
unlock() {
this.setLocked(false)
}
setLocked(locked) {
return this.locked = locked
}
isLocked {
return this.locked
}
}
module.exports = LockableClient;
const auth = require('./auth.js')
const { LockableClient } = require('./lockable-client.js')
const bot = new LockableClient()
bot.on('message', message => {
if (!bot.isLocked() && message.content === 'Gotcha Bitch') {
bot.lock()
var voiceChannel = message.member.voiceChannel
voiceChannel.join().then(connection => {
const dispatcher = connection.playFile('./assets/audio/gab.mp3')
dispatcher.on('end', end => voiceChannel.leave());
}).catch(err => console.log(err))
bot.unlock()
}
})
bot.login(auth.token)