TwitterBotで複数アプリを使いたい!

GAS/TwitterBot
two 3d humans give their hand for handshake
この記事は約4分で読めます。

以前、複数アカウントでTwitterBotを運用する記事を投稿しました。

が、以下のようなご要望を頂きました!

1個のConsumer Key使って10個のアカウント登録したら動くと思うのですが
10個のConsumer Keyを使う場合はどうしたらいいでしょうか…??

1つのアプリで処理をまとめてしまうのではなく、投稿BotやフォローBotなど複数のアプリをタスクごとに分けることは管理の面でも良いことです。

そんなわけで対応しようとしたのですが、TwitterWebServiceでは難しいことが分かりました。

そのため今回自作TwitterClientを改良して複数のTwitterアプリを連携できるようにしたので新規記事としてご紹介します。

TwitterBotで複数アプリを使う方法

実装方法

いつもどおりGASでライブラリを導入してください。

MtWJFxCibKiP9SvrKBk8a0_EqweE_tvXn

導入方法については以下と全く同じで大丈夫です。

ただしコードを以下のようにしてください。

今回のポイント

getInstanceに第三引数を追加しました

const client = TwitterClient.getInstance(consumerKey, consumerSecret)
const clientB = TwitterClient.getInstance(consumerKeyB, consumerSecretB, 'B')
const clientC = TwitterClient.getInstance(consumerKeyC, consumerSecretC, 'C')

複数のTwitterアプリを使う上で、consumerKey毎にTwitterClientのインスタンスを作る必要がありましたが、これまでのライブラリだと出来ませんでした。

そのため、第三引数に任意のキーワードを入れることで、Twitterアプリを区別出来るようになりました。

TwitterClient.getInstance を増やせば何個でもTwitterアプリを使えるのでご活用ください。

何かプログラムを動かしたい時は自由にTwitterアプリを選択できます

function exec () {
  client.postTweet('てすと') // clientではツイート
  clientB.findRecentTweet('あああ') // clientBでは検索
  clientC.postRequest('~~~~~~', params) // clientCでは別APIを実行
  // という使い方も出来る
}

先程作ったclientは独立して動かすことが出来ます。

clientで定義したTwitterアプリで投稿、clientBで検索、clientCではもっと違うAPI…ということも可能なので、きっと自由にやりたいことが出来ると思います。

もちろんコピペで同じように動かすことも出来るので思うように使ってください!

authCallbackに修正が必要です

/**
 * authorizeでTwitterでの認証後に実行される処理
 * ※手動で実行はしません
 */
function authCallback (request) {
  const clientList = TwitterClient.getClientList()
  const client = clientList[request.parameter.serviceName]
  return client.authCallback(request)
}

今回の対応で一番工夫が必要だったのが Twitterアプリの認証をどう区別するか でした。

どのTwitterアプリで認証してもこの関数に飛ぶため、認証を行ったTwitterアプリのインスタンスが選ばれるような仕組みになっています。

複数アプリを使用する場合、上記のような書き方にしてほしいです。

ただ、この実装さえしておけばTwitterアプリを何個入れても大丈夫なのでよろしくお願いします!

ご相談随時お受けします

今回の記事をもって、Twitterアプリで出来ることは大体できたんじゃないかなと思ってます。

次回からは別の分野に手を出すことを検討中です(`・ω・´)

が、「TwitterBotでこういうの作りたい場合どうすればいいの?」という疑問は出てくると思います。

そういった時、コメント欄にコメント頂ければアドバイス出来ることもあると思うのでお気軽にご相談ください!

ここまで読んで頂きありがとうございました!

コメント

タイトルとURLをコピーしました