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のファイルを保存しています
構成
ツイート処理の流れ
この記事が気に入ったらサポートをしてみませんか?