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

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

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

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

JavaScript

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

Q&A

解決済

3回答

532閲覧

JavaScriptのif文の記述について

Okkawa

総合スコア6

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

LINE Messaging API

LINE Messaging APIは、メッセージの送信・返信ができるAPIです。Web APIを経由しアプリケーションサーバとLINEのAPIでやり取りが可能。複数のメッセージタイプや分かりやすいAPIリファレンスを持ち、グループチャットにも対応しています。

JavaScript

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

1グッド

2クリップ

投稿2020/01/07 12:49

前提・実現したいこと

使用言語:JavaScript
firebaseにLINE botからのメッセージを格納しメッセージに適応する応答をさせる
LINE botへ送信したメッセージをfirebase realtimeDBに格納しそのメッセージをそのまま返す(おうむ返し)
のには成功しています。

if文を用いて各メッセージに適応する返信を作成しようと試行錯誤しています。

発生している問題・エラーメッセージ

index.js:60 if( x == '1'){ ^^ SyntaxError: Unexpected token '==' at wrapSafe (internal/modules/cjs/loader.js:983:16) at Module._compile (internal/modules/cjs/loader.js:1033:27) at Object.Module._extensions..js (internal/modules/cjs/loader.js:1103:10) at Module.load (internal/modules/cjs/loader.js:914:32) at Function.Module._load (internal/modules/cjs/loader.js:822:14) at Module.require (internal/modules/cjs/loader.js:956:19) at require (internal/modules/cjs/helpers.js:74:18) at /Users/ryoki_ok/.nodebrew/node/v13.1.0/lib/node_modules/firebase-tools/lib/triggerParser.js:15:15 at Object.<anonymous> (/Users/ryoki_ok/.nodebrew/node/v13.1.0/lib/node_modules/firebase-tools/lib/triggerParser.js:53:3) at Module._compile (internal/modules/cjs/loader.js:1063:30)

該当のソースコード

JavaScript

1ソースコード 2//非同期処理 3//Botが受けっとったメッセージを、replyTokenとしてPromiseに返している 4async function handleEvent(event) { 5 if (event.type !== 'message' || event.message.type !== 'text') { 6 return Promise.resolve(null); 7 } 8 usersRef.set( 9 10 event.message.text 11 12 ); 13 var x = event.message.text; 14 return client.replyMessage(event.replyToken, { 15 16 if( x == '1'){ 17 type: 'text', text: x+'を実行!!' 18 }else{ 19 type:'text', text:x+'はできないよ!!' 20 } 21// type: 'text', 22// text: x+'を実行するよ!' 23 }); 24} 25

試したこと

エラー内容から分かるようにif文の比較演算子にエラーが出ているようなのですが記述自体は間違っていないので何か他に原因があると考えていますが、JS自体が初心者なもので見当がつきません。

補足情報(FW/ツールのバージョンなど)

私は今学生でプログラミングを学習している身ですので、至らない点が多々あるかと思いますがどうかご回答お願い致します。
ソースコードなどの情報が足りないなどございましたらすぐに対応させていただきます。

DrqYuto👍を押しています

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

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

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

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

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

guest

回答3

0

回答されている通りですが、多少コードを短くするなら

javascript

1 t = (x == '1') ? 'を実行!!' : 'はできないよ!!'; 2 return client.replyMessage(event.replyToken, {type: 'text', text: x + t});

投稿2020/01/07 15:21

takasima20

総合スコア7458

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

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

Okkawa

2020/01/08 00:43

おかげさまでソースコードがすっきりしました!ありがとうございます!
guest

0

ベストアンサー

エラーなのはifの中ではありません。
(JSのエラーは前後の行も疑うようにしましょう)

まず、これが基本形です。

client.replyMessage(event.replyToken, { type: 'text', text: '文字列' });

ここで、試しに

var obj = {type: 'text', text: '文字列'}; client.replyMessage(event.replyToken, obj);

としても意味は同じです。

質問者さんのコードはこのobjの宣言の内部にifが入り込んでしまっているので、

if ( x == '1') { obj = {type: 'text', text: x+'を実行!!'}; } else { obj = {type: 'text', text: x+'はできないよ!!'}; }

のようにすればよかったはずです。

あとインデントがぐしゃぐしゃなので、それもきれいにしたほうが問題の解決には近づくと思います。

投稿2020/01/07 12:58

tetsunosuke

総合スコア1292

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

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

Okkawa

2020/01/08 00:43

ありがとうございます!!おかげさまで解決しました!!とっても丁寧で分かりやすかったです!ありがとうございます!
guest

0

{if(){}}という記述方法は使えません。return ので渡す前にオブジェクト作ってそこで分岐しましょう。

js

1 var obj; 2 if ( x == '1' ) { 3 obj = { type: 'text', text: x + 'を実行!!' }; 4 } else { 5 obj = { type: 'text', text: x + 'はできないよ!!' }; 6 } 7 return client.replyMessage( event.replyToken, obj );

投稿2020/01/07 12:56

kei344

総合スコア69398

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

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

Okkawa

2020/01/08 00:42

ありがとうございます!!おかげさまで解決しました!!またよろしくお願い致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問