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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Node.js

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

Q&A

解決済

1回答

1120閲覧

Discord.jsでURLの中を取得

drgcghffjd

総合スコア10

Node.js

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

0グッド

0クリップ

投稿2021/08/11 14:07

編集2021/08/11 14:10

前提・実現したい

Discord.jsでFortniteのエモートやスキンのアイテム検索をしたいのですがどうすればいいでしょう。
例:b.item ダンスムーブと実行すると
このようになり
https://fortnite-api.com/v2/cosmetics/br/search/all?name=ダンスムーブ&matchMethod=starts&language=ja&searchLanguage=ja
このURLの中のnameやIDを取得して
アイテム名:ダンスムーブ
アイテムid:EID_DanceMoves
こんなふうにメッセージを返信させたいです。説明下手ですみません

発生している問題

なし

ソースコード

//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: 'アイテムを指定してください' }} ); message.channel.send( {embed: { color: 0x0fc0303, title: '検索しました', description: "[検索結果](https://fortnite-api.com/v2/cosmetics/br/search/all?name=" + args + "&matchMethod=starts&language=ja&searchLanguage=ja)" }} ); }} ) //接続時に必要 client.login(process.env.TOKEN);

試したこと

取得のやり方などについて調べました

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

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

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

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

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

guest

回答1

0

ベストアンサー

discord.jsのバージョンを明記してほしかったですが、v12という前提で。

まず、node-fetchというパッケージをインストールしてください。

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 12const fetch = require("node-fetch")//追加。 13 14client.on("message", async message => { 15 if (message.content.startsWith("b.item")) { 16 const args = message.content.split(" ").slice(1).join(""); 17 if (!args) return message.channel.send({embed: { 18 color: 0x0fc0303, 19 title: 'エラー', 20 description: 'アイテムを指定してください' 21 }}) 22 const m = await message.channel.send("検索中です");//fetch前に読み込み中を表示。 23 let res = await fetch("https://fortnite-api.com/v2/cosmetics/br/search/all?name=" + encodeURIComponent(args)/*追加*/ + "&matchMethod=starts&language=ja&searchLanguage=ja"); 24 res = await res.json(); 25 m.edit({embed: { 26 color: 0x0fc0303, 27 title: '検索しました', 28 description: "[検索結果](https://fortnite-api.com/v2/cosmetics/br/search/all?name=" + encodeURIComponent(args)/*追加*/ + "&matchMethod=starts&language=ja&searchLanguage=ja)", 29 fields: [ 30 { 31 name: "アイテム名", 32 value: res.data[0].name 33 }, 34 { 35 name: "アイテムID", 36 value: res.data[0].id 37 } 38 ] 39 }}); 40 } 41}); 42 43 //接続時に必要 44client.login(process.env.TOKEN);

これでどうでしょうか。

投稿2021/08/12 00:09

Waki285

総合スコア2014

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

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

drgcghffjd

2021/08/12 01:38

出来ました!ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問