nanashi-byakuren / poverty-reddit-bot

機能が貧弱なRedditのbot
MIT License
0 stars 0 forks source link

poverty-reddit-bot

機能が貧弱なRedditのbot

機能概要

botを動かす準備

Redditのcredentialを得る

参考: OAuth2 Quick Start Example

上記をやると以下のような情報がもらえる

Slackのbotを作成する

TODO: 詳しいやり方は各自調査してください

ビルドと実行

// ライブラリのインストール
$ pip install -r requirements.txt

GCPへのデプロイ

以下の手順でbotをGCPのCloudFunctionにデプロイする

依存ライブラリのインストール

$ pip install -r requirements-dev.txt

GCP周りの準備

// reddit用のプロファイルを作成する(プロファイル名にはわかりやすい任意の名前を英語で指定) $ gcloud config configurations create {プロファイル名} Created [プロファイル名]. Activated [プロファイル名].

// 作成したプロファイルでアクティブ化する場合は以下のコマンド(上記でActivateされるのでここでは不要) $ gcloud config configurations activate {プロファイル名}

// ログインしていない場合ログインする(ブラウザが起動する) $ gcloud auth login


- 自分のアカウントのGCPが保持するプロジェクトを確認する([事前にGCPコンソールでプロジェクトを作成しておく](https://cloud.google.com/resource-manager/docs/creating-managing-projects?hl=ja))

```shell
$ gcloud projects list
PROJECT_ID         NAME        PROJECT_NUMBER
reddit-bot-114514  reddit-bot  22902838382290

// 追加したプロファイルにプロジェクト等を紐付ける
$ gcloud config set core/project {上記で確認したGCPのプロジェクトID}
$ gcloud config set core/account {GCPのアカウントのメールアドレス}
// リージョンを東京にする、有効化するか聞かれたら全部yで答える
$ gcloud config set compute/region asia-northeast1
$ gcloud config set compute/zone asia-northeast1-a
$ gcloud config set core/disable_usage_reporting False

- botで使用する[サービスアカウントを作成する](https://cloud.google.com/docs/authentication/getting-started?hl=ja)

```shell
// サービスアカウント名にはわかりやすい任意の名前を英語で指定
$ gcloud iam service-accounts create {サービスアカウント名}

// プロジェクトIDとサービスアカウント名を指定して権限設定する
$ gcloud projects add-iam-policy-binding {上で確認したGCPのプロジェクトID} \
  --member="serviceAccount:{サービスアカウント名}@{上で確認したGCPのプロジェクトID}.iam.gserviceaccount.com" \
  --role="roles/owner"

// GCPのサービスアカウントファイル(認証キーみたいなもの)を生成する
$ gcloud iam service-accounts keys create ~/.gcp/reddit-cred.json \
  --iam-account={サービスアカウント名}@{上で確認したGCPのプロジェクトID}.iam.gserviceaccount.com

Terraformで使用する設定ファイルを作成

vars.tfvarsファイルを作成する。

$ cp vars.tfvars.sample vars.tfvars

ファイルを編集し以下のパラメーターを設定する

$ terraform init
$ terraform plan -var-file=vars.tfvars
$ terraform apply -var-file=vars.tfvars

後は投稿されるのを待つ。わざとじゃなくてもやりすぎるとBANされると思うのでいたずらはやめよう。