0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

DiscordでMinecraftのゲーマータグを公開したい。

Posted at

#まえがき
Discordでのマインクラフトのサーバーがあるのですが、そのサーバーで活動するうちにゲーマータグの共有ができたらいいなと思いました。
そのために、ゲーマータグを共有するソースを書こうと思い書かせていただきました。

マインクラフトサポートbotの招待
#動作環境
node.js v12
discord.js v12.5.1
repl.it
#必要なもの
気合
マイクラ愛
#ソースコード
先にソースコードを提示しておきます。

main.js
      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 + "```"
  }});
    }}

このようなソースになってます。

ソースの解説

main.js
     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(" ")はタグを取得します。


main.js
message.channel.send(
  {embed: {
    timestamp: new Date(),//メッセージを送った時間を設定
    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: new Date(),
    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: new Date(),
    color: "RANDOM",
    description: "**エラー : 実行中にエラーが発生しました。**\n```js\n" + err + "```"
  }});//送信
    }
}//ifからの処理終了

おなじみのerr取得文
#コマンドの実行方法
prefixが"m."の場合
m.gamertag 一言 ゲーマータグ
です。

記事を読んでいただきありがとうございました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?