質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.12%
Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

解決済

jsonデータを別の形(配列等)として出力したい

sumwave
sumwave

総合スコア2

Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

1回答

0リアクション

1クリップ

215閲覧

投稿2022/08/27 06:37

編集2022/08/27 06:48

問題

JavaScriptでDiscord.jsのbotを作っています。
バージョンはnode.jsは16.17.0、Discord.jsが14.2.0です。
jsonに記載されている値などをembedsの配列?に変換しようとしてますが、方法がわかりません。
jsonの内容は追加したりするため、その度にコードを書き換えるのをやめたいです。

実現したいこと

config.json

{ "data": [ { "command": "simane", "name": "島根", "explanation": "それはそう" }, { "command": "tottori", "name": "鳥取", "explanation": "これはどう" } ] }

上記のjsonファイルをforなどを使用し、以下のようにしたいです

const config = require("./config.json"); //jsonの取得 //ここから var embed = { title: "タイトル, description: "内容", fields: [ { name: "島根", value:"simane" }, { name: "鳥取" value:"tottori" } ] }; //ここまでのコードを自動化したい //そしてそのデータを送信する message.channel.send({ embeds: [embed] });

jsonの内容が変わった際に、fieldsの内容が増えたりするようforでコードを作りたいです。
足りない点や意味が分からない場合は指摘してくれると嬉しいです。

現時点の全体のコード

bot.js

const { Client, GatewayIntentBits, Partials } = require('discord.js'), client = new Client({ partials: [Partials.Channel], intents: [ GatewayIntentBits.Guilds, GatewayIntentBits.GuildVoiceStates, GatewayIntentBits.GuildMessages, GatewayIntentBits.GuildMessageReactions, GatewayIntentBits.DirectMessages, GatewayIntentBits.MessageContent ] }), config = require('./config.json'); var args, command; client.on("ready", () => { console.log("よう"); client.user.setPresence({ activities: [{ name: config.play //プレイ中の内容 }], status: "online" }); }); client.on('messageCreate', message => { if (message.author.bot) return; //bot自身なら実行停止 if (message.content.startsWith(config.prefix)) { //ボットのプレフィックスからメッセージが始まっているか確認 args = message.content.slice(config.prefix.length).trim().split(/ +/g); command = args.shift().toLowerCase(); if (command == "help") { message.channel.send({ embeds: [{ title: "ヘルプ", description: "全てのコマンドの初めに`" + config.prefix + "`をつける必要があります。\n今調べられる都道府県の数は、`" + config.data.length + "`個調べられます", url: '', fields: [ { name: "沖縄", value: "`okinawa`" }, { name: "鹿児島", value: "`kagosima`" }, { name: "宮崎", value: "`miyazaki`" }, { name: "大分", value: "`ooita`" }, { name: "熊本", value: "`kumamoto`" }, { name: "長崎", value: "`nagasaki`" }, { name: "佐賀", value: "`saga`" }, { name: "福岡", value: "`fukuoka`" }, { name: "山口", value: "`yamaguti`" }, { name: "広島", value: "`hirosima`" }, { name: "岡山", value: "`okayama`" }, { name: "島根", value: "`simane`" }, { name: "鳥取", value: "`tottori`" }, { name: "ヘルプ", value: "`help`" } ], }] }); } else { message.channel.send("有効なコマンド名ではありません。`" + config.prefix + "help`でコマンドを確認できます。"); }; }; });

config.json

{ "token": "tokentokentokentokentokent.tokent.tokentokentokentokentokentokentokentok", "prefix": "a!", "data": [ { "command": "okinawa", "name": "沖縄", "explanation": "" }, { "command": "kagosima", "name": "鹿児島", "explanation": "" }, { "command": "miyazaki", "name": "宮崎", "explanation": "" }, { "command": "ooita", "name": "大分", "explanation": "" }, { "command": "kumamoto", "name": "熊本", "explanation": "" }, { "command": "nagasaki", "name": "長崎", "explanation": "" }, { "command": "saga", "name": "佐賀", "explanation": "" }, { "command": "fukuoka", "name": "福岡", "explanation": "" }, { "command": "yamaguti", "name": "山口", "explanation": "" }, { "command": "hirosima", "name": "広島", "explanation": "" }, { "command": "okayama", "name": "岡山", "explanation": "" }, { "command": "simane", "name": "島根", "explanation": "" }, { "command": "tottori", "name": "鳥取", "explanation": "" } ] }

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.12%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Discord

Discordは、ゲーマー向けのボイスチャットアプリです。チャット・通話がブラウザ上で利用可能で、個人専用サーバーも開設できます。通話中でも音楽を流したり、PC画面を共有できるなど多機能な点が特徴です。

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。