discord.jsでURLの安全性チェックコマンドを作る

# 今回作るもの

1.discord 上で URL 解析を行うコマンドを実行 
2.メッセージから URL を取り出す
3.node-fetch を利用して NortonSafeWeb でサイトの安全性をチェック
 4.結果をサイトの HTML から取得 
5.`1`が送信されたチャンネルに結果を送信

# 必要なもの

・node.js => [node.js](https://nodejs.org/ja/)
・discord.js => `npm i discord.js`
・@replit/node-fetch => `npm i @replit/node-fetch`

# コード

```js
const discord = require("discord.js");
const fetch = require("@replit/node-fetch");
const client = new discord.Client({
  intents: [
    discord.GatewayIntentBits.Guilds,
    discord.GatewayIntentBits.GuildMessages,
    discord.GatewayIntentBits.MessageContent,
  ],
});
const prefix = "!";

client.on(discord.Events.MessageCreate, async (message) => {
  if (message.author.bot) return;
  if (!message.content.startsWith(prefix)) return; //ボットのプレフィックスからメッセージが始まっているか確認
  const args = message.content.slice(prefix.length).trim().split(/ +/g);
  const command = args.shift().toLowerCase();
  if (command === "url") {
    //コマンド名
    try {
      const url = args[0]; //URLを取得
      if (!url) return message.channel.send("エラー : URLを指定して下さい。");
      fetch(
        `https://safeweb.norton.com/report/show?url=${encodeURI(url)}&ulang=jpn`
      )
        .then((res) => res.text())
        .then((norton) => {
          //NortonSafeWebにアクセス
          if (norton.indexOf("安全性") != -1) {
            message.channel.send({
              embeds: [
                {
                  title: "結果は安全です。",
                  description: `ノートン セーフウェブが ${url} を分析して安全性とセキュリティの問題を調べました。`,
                  footer: {
                    text: "Powered by Norton Safeweb",
                  },
                  color: 0xffd700,
                },
              ],
            });
          } else if (norton.indexOf("［注意］") != -1) {
            message.channel.send({
              embeds: [
                {
                  title: "結果は注意です。",
                  description: `［注意］の評価を受けた Web サイトは少数の脅威または迷惑を伴いますが、赤色の［警告］に相当するほど危険とは見なされません。サイトにアクセスする場合には注意が必要です。`,
                  footer: {
                    text: "Powered by Norton Safeweb",
                  },
                  color: 0xffd700,
                },
              ],
            });
          } else if (norton.indexOf("警告") != -1) {
            message.channel.send({
              embeds: [
                {
                  title: "結果は警告です。",
                  description: `これは既知の危険な Web ページです。このページを表示**しない**ことを推奨します。`,
                  footer: {
                    text: "Powered by Norton Safeweb",
                  },
                  color: 0xffd700,
                },
              ],
            });
          } else {
            message.channel.send({
              embeds: [
                {
                  title: "結果は未評価です。",
                  description: `このサイトはまだ評価されていません。`,
                  footer: {
                    text: "Powered by Norton Safeweb",
                  },
                  color: 0xffd700,
                },
              ],
            });
          }
        });
    } catch (err) {
      message.channel.send("エラー : 解析中にエラーが発生しました。");
    }
  }
});
```

# 使い方
`!url <解析したいURL>`
で利用することができます！

# 最後に

初めての投稿なのでおかしいところや、わかりにくいところがあればコメントで教えて頂きたいです！