まえがき
Discordでのマインクラフトのサーバーがあるのですが、そのサーバーで活動するうちにゲーマータグの共有ができたらいいなと思いました。
そのために、ゲーマータグを共有するソースを書こうと思い書かせていただきました。
動作環境
node.js v12
discord.js v12.5.1
repl.it
必要なもの
気合
マイクラ愛
ソースコード
先にソースコードを提示しておきます。
main.js
if(message.content.startsWith(prefix+"gamertag")){letakb=message.content.split("").slice(1).join("")if(!akb)returnmessage.channel.send('一言が設定されていません。')letAKB=message.content.split("").slice(2).join("")if(!AKB)returnmessage.channel.send('ゲーマータグが設定されてません。')letakb2=akb.replace(AKB,"")try{message.channel.send({embed:{timestamp:newDate(),color:"RANDOM",description:`**成功**\nゲーマータグ一覧にあなたのゲーマータグが正常に送られました。\n\n内容`+"```diff\n+ 一言:"+akb2+"\n- タグ:"+AKB+"```"}});client.channels.cache.filter(ch=>ch.name==='ゲーマータグ一覧').forEach(ch=>ch.send({embed:{author:{name:message.author.username,url:message.author.avatarURL(),icon_url:message.author.avatarURL()},thumbnail:{url:message.author.avatarURL()},timestamp:newDate(),color:"RANDOM",description:`一言:${akb2}\nタグ:${AKB}`,footer:{icon_url:client.user.avatarURL(),text:client.user.username},}} ))}catch(err){message.channel.send({embed:{timestamp:newDate(),color:"RANDOM",description:"**エラー : 実行中にエラーが発生しました。**\n```js\n"+err+"```"}});}}
このようなソースになってます。
ソースの解説
main.js
if(message.content.startsWith(prefix+"gamertag")){//反応させるメッセージtry{//errの確認用letakb=message.content.split("").slice(1).join("")//一言+タグの文を取得if(!akb)returnmessage.channel.send('一言が設定されていません。')//一言の文がなかったら送るletAKB=message.content.split("").slice(2).join("")//タグの文を取得if(!AKB)returnmessage.channel.send('ゲーマータグが設定されてません。')//タグの文がなかったら送るletakb2=akb.replace(AKB,"")//akbの文を一言のみの部分にする
let akb = message.content.split(" ").slice(1).join(" ")
だけだとタグと一言を両方取得してしまうのでlet akb2 = akb.replace(AKB, "")
で加工して一言の文のみになるように変更します。let AKB = message.content.split(" ").slice(2).join(" ")
はタグを取得します。
main.js
message.channel.send({embed:{timestamp:newDate(),//メッセージを送った時間を設定color:"RANDOM",//色を取得description:`**成功**\nゲーマータグ一覧にあなたのゲーマータグが正常に送られました。\n\n内容`+"```diff\n+ 一言:"+akb2+"\n- タグ:"+AKB+"```"//送るメッセージ}});//送信
これは設定した文を確認のために出しています。
main.js
client.channels.cache.filter(ch=>ch.name==='ゲーマータグ一覧').forEach(ch=>ch.send(//botが入っているサーバーの"ゲーマータグ一覧"というチャンネルの名のチャンネルを取得してすべてのチャンネルに送る。{embed:{author:{name:message.author.username,url:message.author.avatarURL(),icon_url:message.author.avatarURL()},thumbnail:{url:message.author.avatarURL()},timestamp:newDate(),color:"RANDOM",description:`一言:${akb2}\nタグ:${AKB}`,footer:{icon_url:client.user.avatarURL(),text:client.user.username},}} ))
解説するところはない
main.js
}catch(err){//errを取得message.channel.send({embed:{timestamp:newDate(),color:"RANDOM",description:"**エラー : 実行中にエラーが発生しました。**\n```js\n"+err+"```"}});//送信}}//ifからの処理終了
おなじみのerr取得文
コマンドの実行方法
prefixが"m."の場合m.gamertag 一言 ゲーマータグ
です。
記事を読んでいただきありがとうございました。