質問編集履歴

4

コードを変更しました。

2021/07/10 10:07

投稿

SN____R
SN____R

スコア8

test CHANGED
File without changes
test CHANGED
@@ -84,6 +84,218 @@
84
84
 
85
85
  reply_text = input_text + " の 軽減率70%×70%での実質HPは\n約 " + Math.floor(input_text / 0.09) + "です";
86
86
 
87
+   setLastUserHistory(userId, input_text, false);
88
+
89
+ }
90
+
91
+ else {
92
+
93
+ if (input_text == "70%*2") {
94
+
95
+ reply_text = "軽減率70%×70%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
96
+
97
+ }else if (input_text == "その他") {
98
+
99
+ UrlFetchApp.fetch('https://api.line.me/v2/bot/message/push', {
100
+
101
+ 'headers': {
102
+
103
+ 'Content-Type': 'application/json',
104
+
105
+ 'Authorization': 'Bearer ' + prop.TOKEN, // スクリプトプロパティにトークンは事前に追加しておく
106
+
107
+ },
108
+
109
+ 'method': 'POST',
110
+
111
+ 'payload': JSON.stringify({
112
+
113
+ "to": prop.DEBUGID, // スクリプトプロパティに送信先IDは事前に追加しておく
114
+
115
+ "messages": [
116
+
117
+ {
118
+
119
+ "type": "text",
120
+
121
+ "text": "選択してください!",
122
+
123
+ "quickReply": {
124
+
125
+ "items": [
126
+
127
+ {
128
+
129
+ "type": "action",
130
+
131
+ "imageUrl": "https://example.com/sushi.png",
132
+
133
+ "action": {
134
+
135
+ "type": "message",
136
+
137
+ "label": "A",
138
+
139
+ "text": "70%*2"
140
+
141
+ }
142
+
143
+ },
144
+
145
+ {
146
+
147
+ "type": "action",
148
+
149
+ "imageUrl": "https://example.com/sushi.png",
150
+
151
+ "action": {
152
+
153
+ "type": "message",
154
+
155
+ "label": "B",
156
+
157
+ "text": "50%*2"
158
+
159
+ }
160
+
161
+ }
162
+
163
+ ]
164
+
165
+ }
166
+
167
+ }
168
+
169
+ ],
170
+
171
+ "notificationDisabled": false // trueだとユーザーに通知されない
172
+
173
+ }),
174
+
175
+ });
176
+
177
+ }if (reply_text) {
178
+
179
+ setLastUserHistory(userId, input_text, true);
180
+
181
+ } else {
182
+
183
+ setLastUserHistory(userId, input_text, false);
184
+
185
+ }
186
+
187
+ }
188
+
189
+
190
+
191
+ var postData = {
192
+
193
+ "replyToken": e.replyToken,
194
+
195
+ "messages": [{
196
+
197
+ "type": "text",
198
+
199
+ "text": reply_text
200
+
201
+ }]
202
+
203
+ };
204
+
205
+
206
+
207
+ var options = {
208
+
209
+ "method": "post",
210
+
211
+ "headers": {
212
+
213
+ "Content-Type": "application/json",
214
+
215
+ "Authorization": "Bearer " + ACCESS_TOKEN
216
+
217
+ },
218
+
219
+ "payload": JSON.stringify(postData)
220
+
221
+ };
222
+
223
+ const response = UrlFetchApp.fetch(URL, options);
224
+
225
+ if (response.getResponseCode() !== 200) {
226
+
227
+ throw new Error(response.getContentText());
228
+
229
+ }
230
+
231
+ }
232
+
233
+ function getLastUserHistory(userId) {
234
+
235
+ const userHistory = HistorySheet.getDataRange().getValues();
236
+
237
+ for (let i = userHistory.length - 1; 0 < i; i--) {
238
+
239
+ if (userHistory[i][1] === userId) {
240
+
241
+ return {
242
+
243
+ date: userHistory[i][0],
244
+
245
+ userId: userHistory[i][1],
246
+
247
+ text: userHistory[i][2],
248
+
249
+ continuous: userHistory[i][3]
250
+
251
+ };
252
+
253
+ }
254
+
255
+ }
256
+
257
+ return undefined;
258
+
259
+ }
260
+
261
+
262
+
263
+ function setLastUserHistory(userId, text, continuous) {
264
+
265
+ const values = [new Date(), userId, text, continuous];
266
+
267
+ HistorySheet.appendRow(values);
268
+
269
+ }
270
+
271
+ ```
272
+
273
+
274
+
275
+ 追記:再度修正しましたが、やはり別のところでエラーが出てしまいます。
276
+
277
+ エラー内容:SyntaxError: Unexpected end of input(行 156、ファイル「コード.gs」)
278
+
279
+ ```Javascript
280
+
281
+ function reply_message(e) {
282
+
283
+ var input_text = e.message.text;
284
+
285
+ var reply_text = "";
286
+
287
+ const userId = e.source.userId;
288
+
289
+ const history = getLastUserHistory(userId);
290
+
291
+
292
+
293
+ if (history && history.continuous) {
294
+
295
+ if (history.text == "70%*2") {
296
+
297
+ reply_text = input_text + " の 軽減率70%×70%での実質HPは\n約 " + Math.floor(input_text / 0.09) + "です";
298
+
87
299
  } else if (history.text == "50%*2") {
88
300
 
89
301
  reply_text = input_text + " の 軽減率50%×50%での実質HPは\n約 " + Math.floor(input_text / 0.25) + "です";
@@ -114,7 +326,15 @@
114
326
 
115
327
  } else if (history.text == "35%*2") {
116
328
 
117
- reply_text = input_text + " の 軽減率35%×35の実質HPは\n約 " + Math.floor(input_text / 0.4225) + "です";
329
+ reply_text = input_text + " の 軽減率35%×35%の実質HPは\n約 " + Math.floor(input_text / 0.4225) + "です";
330
+
331
+ } else if (history.text == "35%*25%") {
332
+
333
+ reply_text = input_text + " の 軽減率35%×25%の実質HPは\n約 " + Math.floor(input_text / 0.4875) + "です";
334
+
335
+ } else if (history.text == "25%*35%") {
336
+
337
+ reply_text = input_text + " の 軽減率25%×35%の実質HPは\n約 " + Math.floor(input_text / 0.4875) + "です";
118
338
 
119
339
  }
120
340
 
@@ -156,89 +376,71 @@
156
376
 
157
377
  reply_text = "軽減率50%×50%×25%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
158
378
 
159
- }else if (input_text == "25%+50%*2") {
160
-
161
- reply_text = "軽減率50%×50%×25%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
162
-
163
379
  }else if (input_text == "その他") {
164
380
 
165
- UrlFetchApp.fetch('https://api.line.me/v2/bot/message/push', {
166
-
167
- 'headers': {
168
-
169
- 'Content-Type': 'application/json',
170
-
171
- 'Authorization': 'Bearer ' + prop.TOKEN, // スクリプトプロパティにトークンは事前に追加しておく
172
-
173
- },
174
-
175
- 'method': 'POST',
176
-
177
- 'payload': JSON.stringify({
178
-
179
- "to": prop.DEBUGID, // スクリプトプロパティに送信先IDは事前に追加しておく
180
-
181
- "messages": [
182
-
183
- {
184
-
185
- "type": "text",
186
-
187
- "text": "選択してください!",
188
-
189
- "quickReply": {
190
-
191
- "items": [
192
-
193
- {
194
-
195
- "type": "action",
196
-
197
- "imageUrl": "https://example.com/sushi.png",
198
-
199
- "action": {
200
-
201
- "type": "message",
202
-
203
- "label": "A",
204
-
205
- "text": "70%*2"
206
-
207
- }
208
-
209
- },
210
-
211
- {
212
-
213
- "type": "action",
214
-
215
- "imageUrl": "https://example.com/sushi.png",
216
-
217
- "action": {
218
-
219
- "type": "message",
220
-
221
- "label": "B",
222
-
223
- "text": "50%*2"
224
-
225
- }
226
-
227
- }
228
-
229
- ]
230
-
231
- }
232
-
233
- }
234
-
235
- ],
236
-
237
- "notificationDisabled": false // trueだとユーザーに通知されない
238
-
239
- }),
240
-
241
- });
381
+ message = {
382
+
383
+ "type": "text",
384
+
385
+ "text": "その他の軽減率を設定してください",
386
+
387
+ "quickReply": {
388
+
389
+ "items": [
390
+
391
+ {
392
+
393
+ "type": "action",
394
+
395
+ "action": {
396
+
397
+ "type": "message",
398
+
399
+ "label": "A",
400
+
401
+ "text": "A"
402
+
403
+ }
404
+
405
+ },
406
+
407
+ {
408
+
409
+ "type": "action",
410
+
411
+ "action": {
412
+
413
+ "type": "message",
414
+
415
+ "label": "B",
416
+
417
+ "text": "B"
418
+
419
+ }
420
+
421
+ },
422
+
423
+ {
424
+
425
+ "type": "action",
426
+
427
+ "action": {
428
+
429
+ "type": "message",
430
+
431
+ "label": "C",
432
+
433
+ "text": "C"
434
+
435
+ }
436
+
437
+ }
438
+
439
+ ]
440
+
441
+ }
442
+
443
+ }
242
444
 
243
445
  }if (reply_text) {
244
446
 
@@ -254,248 +456,4 @@
254
456
 
255
457
 
256
458
 
257
- var postData = {
258
-
259
- "replyToken": e.replyToken,
260
-
261
- "messages": [{
262
-
263
- "type": "text",
264
-
265
- "text": reply_text
266
-
267
- }]
268
-
269
- };
270
-
271
-
272
-
273
- var options = {
274
-
275
- "method": "post",
276
-
277
- "headers": {
278
-
279
- "Content-Type": "application/json",
280
-
281
- "Authorization": "Bearer " + ACCESS_TOKEN
282
-
283
- },
284
-
285
- "payload": JSON.stringify(postData)
286
-
287
- };
288
-
289
- const response = UrlFetchApp.fetch(URL, options);
290
-
291
- if (response.getResponseCode() !== 200) {
292
-
293
- throw new Error(response.getContentText());
294
-
295
- }
296
-
297
- }
298
-
299
- function getLastUserHistory(userId) {
300
-
301
- const userHistory = HistorySheet.getDataRange().getValues();
302
-
303
- for (let i = userHistory.length - 1; 0 < i; i--) {
304
-
305
- if (userHistory[i][1] === userId) {
306
-
307
- return {
308
-
309
- date: userHistory[i][0],
310
-
311
- userId: userHistory[i][1],
312
-
313
- text: userHistory[i][2],
314
-
315
- continuous: userHistory[i][3]
316
-
317
- };
318
-
319
- }
320
-
321
- }
322
-
323
- return undefined;
324
-
325
- }
326
-
327
-
328
-
329
- function setLastUserHistory(userId, text, continuous) {
330
-
331
- const values = [new Date(), userId, text, continuous];
332
-
333
- HistorySheet.appendRow(values);
334
-
335
- }
336
-
337
459
  ```
338
-
339
-
340
-
341
- 追記:教えていただいた通りに実装しようと試みましたが、エラーが発生してしまいました。
342
-
343
- エラー内容:SyntaxError: Unexpected token ':'(行 71、ファイル「コード.gs」)
344
-
345
- ```Javascript
346
-
347
- function reply_message(e) {
348
-
349
- var input_text = e.message.text;
350
-
351
- var reply_text = "";
352
-
353
- const userId = e.source.userId;
354
-
355
- const history = getLastUserHistory(userId);
356
-
357
-
358
-
359
- if (history && history.continuous) {
360
-
361
- if (history.text == "70%*2") {
362
-
363
- reply_text = input_text + " の 軽減率70%×70%での実質HPは\n約 " + Math.floor(input_text / 0.09) + "です";
364
-
365
- } else if (history.text == "50%*2") {
366
-
367
- reply_text = input_text + " の 軽減率50%×50%での実質HPは\n約 " + Math.floor(input_text / 0.25) + "です";
368
-
369
- } else if (history.text == "70%*50%") {
370
-
371
- reply_text = input_text + " の 軽減率70%×50%での実質HPは\n約 " + Math.floor(input_text / 0.15) + "です";
372
-
373
- } else if (history.text == "25%*2") {
374
-
375
- reply_text = input_text + " の 軽減率25%×25%での実質HPは\n約 " + Math.floor(input_text / 0.5625) + "です";
376
-
377
- } else if (history.text == "75%*2") {
378
-
379
- reply_text = input_text + " の 軽減率75%×75%での実質HPは\n約 " + Math.floor(input_text / 0.0625) + "です";
380
-
381
- } else if (history.text == "50%*2+30%*2") {
382
-
383
- reply_text = input_text + " の 軽減率50%×50%×30%×30%での実質HPは\n約 " + Math.floor(input_text / 0.1225) + "です";
384
-
385
- } else if (history.text == "50%*2+25%") {
386
-
387
- reply_text = input_text + " の 軽減率50%×50%×25%での実質HPは\n約 " + Math.floor(input_text / 0.1875) + "です";
388
-
389
- } else if (history.text == "25%+50%*2") {
390
-
391
- reply_text = input_text + " の 軽減率25%×50%×50%での実質HPは\n約 " + Math.floor(input_text / 0.1875) + "です";
392
-
393
- } else if (history.text == "35%*2") {
394
-
395
- reply_text = input_text + " の 軽減率35%×35の実質HPは\n約 " + Math.floor(input_text / 0.4225) + "です";
396
-
397
- }
398
-
399
- setLastUserHistory(userId, input_text, false);
400
-
401
- }
402
-
403
- else {
404
-
405
- if (input_text == "70%*2") {
406
-
407
- reply_text = "軽減率70%×70%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
408
-
409
- } else if (input_text == "50%*2") {
410
-
411
- reply_text = "軽減率50%×50%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
412
-
413
- } else if (input_text == "70%*50%") {
414
-
415
- reply_text = "軽減率70%×50%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
416
-
417
- } else if (input_text == "25%*2") {
418
-
419
- reply_text = "軽減率25%×25%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
420
-
421
- }else if (input_text == "75%*2") {
422
-
423
- reply_text = "軽減率75%×75%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
424
-
425
- }else if (input_text == "50%*2+30%*2") {
426
-
427
- reply_text = "軽減率50%×50%×30%×30%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
428
-
429
- } else if (input_text == "35%*2") {
430
-
431
- reply_text = "軽減率35%×35%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
432
-
433
- }else if (input_text == "50%*2+25%") {
434
-
435
- reply_text = "軽減率50%×50%×25%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
436
-
437
- }else if (input_text == "25%+50%*2") {
438
-
439
- reply_text = "軽減率50%×50%×25%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
440
-
441
- }else if (input_text == "その他") {
442
-
443
- "type": "text", // ①
444
-
445
- "text": "その他の軽減率です。
446
-
447
- "quickReply": {
448
-
449
- "items": [
450
-
451
- {
452
-
453
- "type": "action",
454
-
455
- "action": {
456
-
457
- "type": "postback",
458
-
459
- "label": "70%×70%"
460
-
461
- "text": "70%*2"
462
-
463
- }
464
-
465
- },
466
-
467
- {
468
-
469
- "type": "action",
470
-
471
- "action": {
472
-
473
- "type": "postback",
474
-
475
- "label": "50%×50%"
476
-
477
- "text": "50%*2"
478
-
479
- }
480
-
481
- }
482
-
483
- ]
484
-
485
- }
486
-
487
- }if (reply_text) {
488
-
489
- setLastUserHistory(userId, input_text, true);
490
-
491
- } else {
492
-
493
- setLastUserHistory(userId, input_text, false);
494
-
495
- }
496
-
497
- }
498
-
499
-
500
-
501
- ```

3

コードを追記しました

2021/07/10 10:07

投稿

SN____R
SN____R

スコア8

test CHANGED
File without changes
test CHANGED
@@ -335,3 +335,167 @@
335
335
  }
336
336
 
337
337
  ```
338
+
339
+
340
+
341
+ 追記:教えていただいた通りに実装しようと試みましたが、エラーが発生してしまいました。
342
+
343
+ エラー内容:SyntaxError: Unexpected token ':'(行 71、ファイル「コード.gs」)
344
+
345
+ ```Javascript
346
+
347
+ function reply_message(e) {
348
+
349
+ var input_text = e.message.text;
350
+
351
+ var reply_text = "";
352
+
353
+ const userId = e.source.userId;
354
+
355
+ const history = getLastUserHistory(userId);
356
+
357
+
358
+
359
+ if (history && history.continuous) {
360
+
361
+ if (history.text == "70%*2") {
362
+
363
+ reply_text = input_text + " の 軽減率70%×70%での実質HPは\n約 " + Math.floor(input_text / 0.09) + "です";
364
+
365
+ } else if (history.text == "50%*2") {
366
+
367
+ reply_text = input_text + " の 軽減率50%×50%での実質HPは\n約 " + Math.floor(input_text / 0.25) + "です";
368
+
369
+ } else if (history.text == "70%*50%") {
370
+
371
+ reply_text = input_text + " の 軽減率70%×50%での実質HPは\n約 " + Math.floor(input_text / 0.15) + "です";
372
+
373
+ } else if (history.text == "25%*2") {
374
+
375
+ reply_text = input_text + " の 軽減率25%×25%での実質HPは\n約 " + Math.floor(input_text / 0.5625) + "です";
376
+
377
+ } else if (history.text == "75%*2") {
378
+
379
+ reply_text = input_text + " の 軽減率75%×75%での実質HPは\n約 " + Math.floor(input_text / 0.0625) + "です";
380
+
381
+ } else if (history.text == "50%*2+30%*2") {
382
+
383
+ reply_text = input_text + " の 軽減率50%×50%×30%×30%での実質HPは\n約 " + Math.floor(input_text / 0.1225) + "です";
384
+
385
+ } else if (history.text == "50%*2+25%") {
386
+
387
+ reply_text = input_text + " の 軽減率50%×50%×25%での実質HPは\n約 " + Math.floor(input_text / 0.1875) + "です";
388
+
389
+ } else if (history.text == "25%+50%*2") {
390
+
391
+ reply_text = input_text + " の 軽減率25%×50%×50%での実質HPは\n約 " + Math.floor(input_text / 0.1875) + "です";
392
+
393
+ } else if (history.text == "35%*2") {
394
+
395
+ reply_text = input_text + " の 軽減率35%×35の実質HPは\n約 " + Math.floor(input_text / 0.4225) + "です";
396
+
397
+ }
398
+
399
+ setLastUserHistory(userId, input_text, false);
400
+
401
+ }
402
+
403
+ else {
404
+
405
+ if (input_text == "70%*2") {
406
+
407
+ reply_text = "軽減率70%×70%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
408
+
409
+ } else if (input_text == "50%*2") {
410
+
411
+ reply_text = "軽減率50%×50%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
412
+
413
+ } else if (input_text == "70%*50%") {
414
+
415
+ reply_text = "軽減率70%×50%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
416
+
417
+ } else if (input_text == "25%*2") {
418
+
419
+ reply_text = "軽減率25%×25%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
420
+
421
+ }else if (input_text == "75%*2") {
422
+
423
+ reply_text = "軽減率75%×75%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
424
+
425
+ }else if (input_text == "50%*2+30%*2") {
426
+
427
+ reply_text = "軽減率50%×50%×30%×30%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
428
+
429
+ } else if (input_text == "35%*2") {
430
+
431
+ reply_text = "軽減率35%×35%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
432
+
433
+ }else if (input_text == "50%*2+25%") {
434
+
435
+ reply_text = "軽減率50%×50%×25%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
436
+
437
+ }else if (input_text == "25%+50%*2") {
438
+
439
+ reply_text = "軽減率50%×50%×25%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
440
+
441
+ }else if (input_text == "その他") {
442
+
443
+ "type": "text", // ①
444
+
445
+ "text": "その他の軽減率です。
446
+
447
+ "quickReply": {
448
+
449
+ "items": [
450
+
451
+ {
452
+
453
+ "type": "action",
454
+
455
+ "action": {
456
+
457
+ "type": "postback",
458
+
459
+ "label": "70%×70%"
460
+
461
+ "text": "70%*2"
462
+
463
+ }
464
+
465
+ },
466
+
467
+ {
468
+
469
+ "type": "action",
470
+
471
+ "action": {
472
+
473
+ "type": "postback",
474
+
475
+ "label": "50%×50%"
476
+
477
+ "text": "50%*2"
478
+
479
+ }
480
+
481
+ }
482
+
483
+ ]
484
+
485
+ }
486
+
487
+ }if (reply_text) {
488
+
489
+ setLastUserHistory(userId, input_text, true);
490
+
491
+ } else {
492
+
493
+ setLastUserHistory(userId, input_text, false);
494
+
495
+ }
496
+
497
+ }
498
+
499
+
500
+
501
+ ```

2

コードを記述しました

2021/07/10 04:09

投稿

SN____R
SN____R

スコア8

test CHANGED
File without changes
test CHANGED
@@ -14,6 +14,14 @@
14
14
 
15
15
  追記:自分なりにクイックリプライ機能を搭載しようと思い、その他という文字が入力されたらクイックリプライを返す。という記述をしたのですが、その他と入力しても何も返ってきませんでした。
16
16
 
17
+
18
+
19
+ こちらを参考にさせていただきましたが、やはりできませんでした。
20
+
21
+ https://gist.github.com/arukayies/d2773ac02d363226e301503853166936
22
+
23
+
24
+
17
25
  ```Javascript
18
26
 
19
27
  var ACCESS_TOKEN = "XXXXXX=";
@@ -154,23 +162,83 @@
154
162
 
155
163
  }else if (input_text == "その他") {
156
164
 
165
+ UrlFetchApp.fetch('https://api.line.me/v2/bot/message/push', {
166
+
167
+ 'headers': {
168
+
169
+ 'Content-Type': 'application/json',
170
+
171
+ 'Authorization': 'Bearer ' + prop.TOKEN, // スクリプトプロパティにトークンは事前に追加しておく
172
+
173
+ },
174
+
175
+ 'method': 'POST',
176
+
177
+ 'payload': JSON.stringify({
178
+
179
+ "to": prop.DEBUGID, // スクリプトプロパティに送信先IDは事前に追加しておく
180
+
181
+ "messages": [
182
+
183
+ {
184
+
185
+ "type": "text",
186
+
187
+ "text": "選択してください!",
188
+
157
- line_bot_api.reply_message(
189
+ "quickReply": {
158
-
190
+
159
- event.reply_token,
191
+ "items": [
192
+
160
-
193
+ {
194
+
195
+ "type": "action",
196
+
197
+ "imageUrl": "https://example.com/sushi.png",
198
+
199
+ "action": {
200
+
161
- TextSendMessage(text="一覧から選んでね",
201
+ "type": "message",
162
-
202
+
163
- quick_reply=QuickReply(items=[
203
+ "label": "A",
204
+
164
-
205
+ "text": "70%*2"
206
+
207
+ }
208
+
209
+ },
210
+
211
+ {
212
+
213
+ "type": "action",
214
+
165
- QuickReplyButton(action=MessageAction(label="70%×70%", text="70%*2")),
215
+ "imageUrl": "https://example.com/sushi.png",
216
+
166
-
217
+ "action": {
218
+
219
+ "type": "message",
220
+
221
+ "label": "B",
222
+
167
- QuickReplyButton(action=MessageAction(label="50%×50%", text="50%*2")),
223
+ "text": "50%*2"
224
+
168
-
225
+ }
226
+
227
+ }
228
+
229
+ ]
230
+
231
+ }
232
+
233
+ }
234
+
169
- ])
235
+ ],
236
+
170
-
237
+ "notificationDisabled": false // trueだとユーザーに通知されない
238
+
171
- )
239
+ }),
172
-
240
+
173
- )
241
+ });
174
242
 
175
243
  }if (reply_text) {
176
244
 

1

コードを記述しました

2021/07/09 10:57

投稿

SN____R
SN____R

スコア8

test CHANGED
File without changes
test CHANGED
@@ -10,6 +10,10 @@
10
10
 
11
11
  といったことが出来る様にしたいです。ご教授のほどよろしくお願いいたします。
12
12
 
13
+
14
+
15
+ 追記:自分なりにクイックリプライ機能を搭載しようと思い、その他という文字が入力されたらクイックリプライを返す。という記述をしたのですが、その他と入力しても何も返ってきませんでした。
16
+
13
17
  ```Javascript
14
18
 
15
19
  var ACCESS_TOKEN = "XXXXXX=";
@@ -72,9 +76,9 @@
72
76
 
73
77
  reply_text = input_text + " の 軽減率70%×70%での実質HPは\n約 " + Math.floor(input_text / 0.09) + "です";
74
78
 
75
- } else if (history.text == "50%*50%") {
79
+ } else if (history.text == "50%*2") {
76
-
80
+
77
- reply_text = input_text + " の 軽減率70%×25%での実質HPは\n約 " + Math.floor(input_text / 0.225) + "です";
81
+ reply_text = input_text + " の 軽減率50%×50%での実質HPは\n約 " + Math.floor(input_text / 0.25) + "です";
78
82
 
79
83
  } else if (history.text == "70%*50%") {
80
84
 
@@ -84,6 +88,26 @@
84
88
 
85
89
  reply_text = input_text + " の 軽減率25%×25%での実質HPは\n約 " + Math.floor(input_text / 0.5625) + "です";
86
90
 
91
+ } else if (history.text == "75%*2") {
92
+
93
+ reply_text = input_text + " の 軽減率75%×75%での実質HPは\n約 " + Math.floor(input_text / 0.0625) + "です";
94
+
95
+ } else if (history.text == "50%*2+30%*2") {
96
+
97
+ reply_text = input_text + " の 軽減率50%×50%×30%×30%での実質HPは\n約 " + Math.floor(input_text / 0.1225) + "です";
98
+
99
+ } else if (history.text == "50%*2+25%") {
100
+
101
+ reply_text = input_text + " の 軽減率50%×50%×25%での実質HPは\n約 " + Math.floor(input_text / 0.1875) + "です";
102
+
103
+ } else if (history.text == "25%+50%*2") {
104
+
105
+ reply_text = input_text + " の 軽減率25%×50%×50%での実質HPは\n約 " + Math.floor(input_text / 0.1875) + "です";
106
+
107
+ } else if (history.text == "35%*2") {
108
+
109
+ reply_text = input_text + " の 軽減率35%×35の実質HPは\n約 " + Math.floor(input_text / 0.4225) + "です";
110
+
87
111
  }
88
112
 
89
113
  setLastUserHistory(userId, input_text, false);
@@ -96,11 +120,11 @@
96
120
 
97
121
  reply_text = "軽減率70%×70%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
98
122
 
99
- } else if (input_text == "70%*25%") {
123
+ } else if (input_text == "50%*2") {
100
124
 
101
125
  reply_text = "軽減率50%×50%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
102
126
 
103
- } else if (input_text == "50%*2") {
127
+ } else if (input_text == "70%*50%") {
104
128
 
105
129
  reply_text = "軽減率70%×50%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
106
130
 
@@ -108,7 +132,47 @@
108
132
 
109
133
  reply_text = "軽減率25%×25%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
110
134
 
135
+ }else if (input_text == "75%*2") {
136
+
137
+ reply_text = "軽減率75%×75%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
138
+
139
+ }else if (input_text == "50%*2+30%*2") {
140
+
141
+ reply_text = "軽減率50%×50%×30%×30%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
142
+
143
+ } else if (input_text == "35%*2") {
144
+
145
+ reply_text = "軽減率35%×35%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
146
+
147
+ }else if (input_text == "50%*2+25%") {
148
+
149
+ reply_text = "軽減率50%×50%×25%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
150
+
151
+ }else if (input_text == "25%+50%*2") {
152
+
153
+ reply_text = "軽減率50%×50%×25%で計算します。\n計算したいパーティーの最大HPを、半角英数字でカンマ区切りをせずに入力してください。";
154
+
155
+ }else if (input_text == "その他") {
156
+
157
+ line_bot_api.reply_message(
158
+
159
+ event.reply_token,
160
+
161
+ TextSendMessage(text="一覧から選んでね",
162
+
163
+ quick_reply=QuickReply(items=[
164
+
165
+ QuickReplyButton(action=MessageAction(label="70%×70%", text="70%*2")),
166
+
167
+ QuickReplyButton(action=MessageAction(label="50%×50%", text="50%*2")),
168
+
169
+ ])
170
+
171
+ )
172
+
173
+ )
174
+
111
- } if (reply_text) {
175
+ }if (reply_text) {
112
176
 
113
177
  setLastUserHistory(userId, input_text, true);
114
178