Discord.js 禁忌リスト
なんでこれを書こうと思った?
初心者のときバカなことばっかりやってたからです
client.on("messageCreate")の濫用
//長いのでカット!
client.on('messageCreate', async msg => {
if(msg.content === "hello") {
msg.reply("HELLO!");
}
});
client.on('messageCreate', async msg => {
if(msg.content === "good morning") {
msg.reply("GM");
}
});
client.on('messageCreate', async msg => {
if(msg.content === "good afternoon") {
msg.reply("Good afternoon!");
}
});
client.on('messageCreate', async msg => {
if(msg.content === "night") {
msg.reply("Night");
}
});
client.on('messageCreate', async msg => {
if(msg.content === "apple") {
msg.reply("Orange");
}
});
バカみたいに重くなります。絶対にやめてください。
こうしてください
client.on('messageCreate', async msg => {
if(msg.content === "hello") {
msg.reply("Hello!");
}
if(msg.content === "good morning") {
msg.reply("Good morning!");
}
//以下同様
});
else if使わない人です、はい
Node.jsやってる人なら当たり前のことですが私は馬鹿でした
client(v14)のmessageCreateイベントにはメッセージ編集イベントは飛んでこない
いつから変わったんでしたっけ。
clientのmessageCreateのmessageの内容を取得したい場合はmessage.contentを使う
client.on('messageCreate', async msg => {
if(msg === "hello") {
msg.reply("Hello!");
}
});
これだと実行されません
messageオブジェクトの中身はJSONだったはずなので
なおreplyとかは生のmessageオブジェクトじゃないとダメです
var濫用禁止
var option = "";
//...
{
const option = "";
}
//...
どこでも禁止。
地獄絵図になります
改変されちゃこまるclientとかplayerはconstが定石。
audioPlayerはMaxListenerの設定必須(必須じゃありません)
setMaxListenersはイベントのリスナーの数制限です…一切関係ないです…
本当は何もせずにも動いてくれるはずなんですが私の環境ではなぜか聞こえなかったので…。
もし同じようなことに遭遇された方がいたときのために一応。
const player = createAudioPlayer({
behaviors: {
noSubscriber: NoSubscriberBehavior.Pause,
},
});
//ここ
player.setMaxListeners(100);
100にしてるのは気まぐれのはずです
もちろんもっと下げてもOK
YouTubeのサムネイルの取得
YouTubeのサムネイルの構成は以下のようになっています
https://img.youtube.com/vi/id/hqdefault.jpg
hqdefault.jpgに関してはクオリティです
オプションは何個かありますがDiscordで使うならhqdefaultで十分
idは
https://youtube.com/watch?v=//ここ
https://www.youtube.com/watch?v=//ここ
です
覚えておくと便利かも
messageCreateにbotかどうか判断させる
if(msg.author.bot) {return;}
をつけてください。でないとBot自身が送信したメッセージにBotが応答しつづける、みたいな事が起きてしまいます。
repl.itで音楽Botを作る方法
npm install tweetnacl prism-media
本来sodiumやsodium-nativeなどの暗号化パッケージを入れるのですがrepl.itの場合はなぜかフリーズしてしまったためtweetnaclを使います。
prism-mediaを入れるのは@discordjs/voiceを入れたときに入らないからです。音楽再生用のパッケージのため、入れないとエラーが走ります。
現状はこれで動いてますね。
repl.itでパッケージがインストールできなくなった場合
rm -r node_modules
でnode_modulesを削除します。
そのあと
npm install
を実行すれば治るはずです。
追記について
やる気が出次第どんどん追加します