見出し画像

Goで好きなキャラの台詞を定期的に呟くTwitterBotを作りましたメモ

作りました。Botの機能に関してはタイトルで全て説明できてしまっているレベルでシンプルなので、特に追加の情報がありません。
完成品も趣味丸出しで恥ずかしいので見せられないんですが、とはいえ裏側も頑張って作ったしTwitter APIv2とOAuth2(PKCE)の資料も割と少ないので、ちょうど他にも「GoでTwitter Bot作りてえ~~~!!!」って人がいたらと思い、自分用のメモ程度ですが公開します。

完成したコードは以下リポジトリに入っています。この記事自体を読んでほしいというよりは、Twitter Botを作りたい人がSEOに強いnoteを通してこのコードを参照してくれたら……くらいの感じです。
なおエラー処理はマジで適当です。エラー処理部分だけは何も参考にしないでください。

使用技術

  • フロントエンド

    • スプレッドシート

      • 技術ではありませんが、キャラクターの台詞を保存します

      • 昔は勉強も兼ねてNext.js使って独自に入力フォームを構築したりしましたが、結局スプレッドシートのほうがあらゆる面で良かったです

  • バックエンド

    • Go:言語

    • Gin:GoのWebフレームワーク

    • ent:Go用のORM

  • データベース

    • SQLite

      • リフレッシュトークンを保存する必要があってRDBが欲しかったんですが、Cloud SQL立ててMySQLやらPostgreSQLを使うほどもないので、Cloud StorageにSQLiteのファイルを保存するという超安価な方針に辿り着きました

      • GCPであればFireStoreという選択肢もありましたが、RDBが肌に合っていたので……

  • インフラ

    • Docker

    • GCP

      • Cloud Run

        • Goのコンテナを動かす場所で、「認証コード生成」「コールバックを受け取りリフレッシュトークンを保存」「ツイート」の3つのエンドポイントが存在します

      • Cloud Scheduler

        • Cloud Runのツイート用エンドポイントを定期的に呼び出し、Botにツイートさせます

      • Cloud Storage

        • 前述したSQLiteのファイルを保存しています

構成

めちゃくちゃシンプルです

ツイート処理の流れ


この記事が気に入ったらサポートをしてみませんか?