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

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

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

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

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

1回答

931閲覧

Discord.jsで複数取得された場合

drgcghffjd

総合スコア10

Discord

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

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2021/08/13 23:39

編集2021/08/15 01:35

前提・実現したい

Discord.jsでFortniteのアイテム検索についてなんですが複数アイテムが見つかった場合その見つかったアイテムの数分を取得しメッセージを送信させたいです

b.item ローリー
https://fortnite-api.com/v2/cosmetics/br/search/all?name=ローリー&matchMethod=starts&language=ja&searchLanguage=ja
このアイテムは2つあります。
(メッセージ返信アイテム1)
アイテム名:ローリーライダー
アイテムid: EID_Balance
(省略)
(メッセージ返信アイテム2)
アイテム名:ローリー
アイテムID:EID_TwistDaytona
(省略)
こんなふうに複数アイテムが見つかった場合メッセージを分けてアイテムの詳細を送信したいです。
イメージ説明

発生している問題

なし

ソースコード

//24時間起動に必要(web) const http = require('http'); http.createServer(function (req, res) { res.write("login"); res.end(); }).listen(8080); //起動に必要 const discord = require("discord.js"); const client = new discord.Client(); client.on("message", async message => { if (message.content.startsWith("b.item")) { const args = message.content.split(" ").slice(1).join(""); if (!args) return message.channel.send({embed: { color: 0x0fc0303, title: 'エラー', description: 'アイテムを指定してください' }}) let res = await fetch("https://fortnite-api.com/v2/cosmetics/br/search/all?name=" + encodeURIComponent(args) + "&matchMethod=starts&language=ja&searchLanguage=ja"); if (!res.ok) return message.channel.send({embed: { color: 0x0fc0303, title: 'エラー', description: 'アイテムが見つかりません' }}) res = await res.json(); message.channel.send(res.data[0].id) message.channel.send( {embed: { color: 0x0fc0303, title: res.data[0].type.displayValue, thumbnail: { url: res.data[0].images.icon }, fields: [ { name: "アイテム名", value: res.data[0].name, inline: true }, { name: "アイテムID", value: res.data[0].id, inline: true }, { name: "説明", value: res.data[0].description, inline: true }, { name: "レアリティ", value: res.data[0].rarity.displayValue, inline: true }, { name: "セット", value: res.data[0].set.value, inline: true }, { name: "導入日", value: res.data[0].introduction.text, inline: true } ] }}); } }); //接続時に必要 client.login(process.env.TOKEN);

試したこと

複数取得した場合取得した分のメッセージを分けて送信する方法を調べました

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

dataは配列で帰ってくるため、その配列をforEach(ループ)させるという方法があります。

js

1//24時間起動に必要(web) 2const http = require('http'); 3http.createServer(function (req, res) { 4 res.write("login"); 5 res.end(); 6}).listen(8080); 7 8//起動に必要 9const discord = require("discord.js"); 10const client = new discord.Client(); 11 12client.on("message", async message => { 13 if (message.content.startsWith("b.item")) { 14 const args = message.content.split(" ").slice(1).join(""); 15 if (!args) return message.channel.send({embed: { 16 color: 0x0fc0303, 17 title: 'エラー', 18 description: 'アイテムを指定してください' 19 }}) 20 let res = await fetch("https://fortnite-api.com/v2/cosmetics/br/search/all?name=" + encodeURIComponent(args) + "&matchMethod=starts&language=ja&searchLanguage=ja"); 21 if (!res.status !== 200) return message.channel.send({embed: { 22 color: 0x0fc0303, 23 title: 'エラー', 24 description: 'アイテムが見つかりません' 25 }}) 26 res = await res.json(); 27 res.data.forEach(data => { 28 message.channel.send(data.id) 29 message.channel.send({embed: { 30 color: 0x0fc0303, 31 title: data.type.displayValue, 32 thumbnail: { 33 url: data.images.icon 34 }, 35 fields: [ 36 { 37 name: "アイテム名", 38 value: data.name, 39 inline: true 40 }, 41 { 42 name: "アイテムID", 43 value: data.id, 44 inline: true 45 }, 46 { 47 name: "説明", 48 value: data.description, 49 inline: true 50 }, 51 { 52 name: "レアリティ", 53 value: data.rarity.displayValue, 54 inline: true 55 }, 56 { 57 name: "セット", 58 value: data.set.value, 59 inline: true 60 }, 61 { 62 name: "導入日", 63 value: data.introduction.text, 64 inline: true 65 } 66 ] 67 }}); 68 }); 69 } 70}); 71 72 //接続時に必要 73client.login(process.env.TOKEN)

投稿2021/08/16 01:23

Waki285

総合スコア2014

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問