Q&A

botをコマンドでグループから退出させる方法

var access_token = '---------';

function doPost(e) {
  var events = JSON.parse(e.postData.contents).events;
  var replyToken_ = e.replyToken;
  events.forEach(function (event) {
    switch (event.type) {
      case 'message':
        reply(event);
        break;
      default:
        ;
        break;
    }
  });
}

function reply(e) {
  var Message = e.message.text;
  var groupid_ = e.source.groupId;

  if (Message == '/bye') {
    var message = {
      'replyToken': e.replyToken,
      'messages': [{
  "type": "text",
  "text":'I have to leave this group'
}]
    }; 
  }
  
   if (Message != undefined) {
    var replyData = {
      'method': 'post',
      'headers': {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer ' + access_token
      },
      'payload': JSON.stringify(message)
    };
    UrlFetchApp.fetch('https://api.line.me/v2/bot/message/reply', replyData);
  }
  
    if (Message == '/bye') {
  var url = 'https://api.line.me/v2/bot/group/'+groupid_+'/leave'
  var leaveData = {
      'method': 'post',
      'headers': {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer ' + access_token
      }
    };
    UrlFetchApp.fetch(url, leaveData);
 };
}

最終的にこれで動きました!!(編集済み)

  • 0
  • 16
  • 2711
  • twitter facebook

解決して良かったです!

  • 0

おっしゃるおっしゃるとおりでした!! 長々とすみませんでした💦ありがとうございます! メッセージのほうがmだったのでそっちに合わせるのかと思いmに(message !=undefined)にしていました。。 とてももったいない時間をとらせてしまったと思い反省しています。<(_ _)> 本当にありがとうございました!

  • 0

もう一度大文字小文字変えてやってみます!

  • 0

わからないですねー。相変わらず私は、 if (Message == '/bye') { が動いていて、 if (message == '/bye') { が動かないなら、大文字小文字問題な気がしています。

ところでエラーメッセージはどうなっているんでしょう。

  • 1

content-typeなくしてやってみましたが、退出してくれませんでした。。

  • 0

グループでした!トークルームではありません。

  • 0

あと、グループかトークルームかも確認してください。 https://developers.line.biz/ja/docs/messaging-api/group-chats/#group

  • 1

なるほどー。Content-typeはずしてみます?

  • 1

なるほど!条件のほうが怪しいですか笑

  if (message != undefined) {
    var replyData = {
      'method': 'post',
      'headers': {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer ' + access_token
      },
      'payload': JSON.stringify(message)
    };
    UrlFetchApp.fetch('https://api.line.me/v2/bot/message/reply', replyData);
  }

これを変えたのですが。。 これはいつもしっかり動いています。

  if (Message == '/bye') {
    var message = {
      'replyToken': e.replyToken,
      'messages': [{
  "type": "text",
  "text":'I have to leave this group'
}]
    };
  }

しっかりI have to this groupと帰ってきます

  • 0

なるほど。わたしは条件が怪しいと思っていました。

なにか成功したことがあるAPIはありますか?メッセージ送信とか。もしあるなら、条件を変えずに、leaveのかわりに、そのAPIを実行してみてください。

/byeで、そのAPIが実行されれば、条件が正しく、leave APIの使い方が間違っていることになりますね。

  • 1

初心者で色々調べながら試行錯誤して、ここまで来たので。。。

  • 0

条件設定が間違っているのか、APIの使い方が間違っているのか、どちらだと思いますか?

  • 0

message == '/bye'をmessage != undefinedにしましたが、「a」と送信しても退出しませんでした。。

  • 0

ほかのメッセージはうまく送信できているなら、メッセージの内容に関わらずleaveすることはできますか?

  • 1

大文字小文字変えて試してみましたが、とくに変わりはありませんでした3(-_^;)

  • 0

なんとなく、 if (Message == '/bye') { と if (message == '/bye') { 大文字小文字の違いが気になりました。

  • 1
Are you sure? question.vm