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