2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Go言語のTwitter APIで定期的にツイートする

Posted at

###用意するもの
・MAC(PC)
・AWS Lambda
・Twitter API
・Twitterアカウント

###やったこと
####1.Twitter API申請
下記URLからTwitter API申請をします。
https://developer.twitter.com/ja/docs

API key & secretとAccess token & secretを取得します。

####2.Go言語で書く
Twiiter認証用のソースコードを書きます。
別にファイルは分けなくてもいいです。

keys.go
package keys

import 
(
    //Twitter APIに必要なimportになります。なければインストールしましょう。   
    "github.com/ChimeraCoder/anaconda"
)

func GetTwitterApi() *anaconda.TwitterApi {
	anaconda.SetConsumerKey("API Key")
	anaconda.SetConsumerSecret("API secret Key")
	api := anaconda.NewTwitterApi("token", "token secret")
	return api
}

ツイート本文のソースコードを書きます。
これも別にファイル分けなくてもできます。
日付とテキストをツイートするようにしています。

text.go
package text

import (
	"fmt"
	"time"
)

func TextTweet() string {
    //tweetする文章を書くよ
    tweetText := "test"

    d := time.Now().Day()
    m := time.Now().Month()

    //ツイートする文章を格納する。
    TweetContent := tweetText
    TweetOfToday := fmt.Sprintf("【%d月%d日】\n %s", m, d, TweetContent)
    return TweetOfToday
}

実際にツイートするソースを書きます。

main.go
package main

import (
	"fmt"
	. "fmt"

	. "./keys"
	. "./text"
)
func main(){
    api := GetTwitterApi()
    text := TextTweet()
	
    tweet, err := api.PostTweet(text, nil)
    if err != nil {
       panic(err)
    }
     Print(tweet.Text)

     fmt.Println("Finish!")
}

ちなみにフォルダ構成は以下です。

autoTweet
  ∟main.go
 ∟keys
   ∟keys.go
  ∟text
   ∟text.go

####3.AWS Lambdaで実行させる
AWS LambdaにGoソースコードをzipファイルにしてアップロードします。
↓がとても参考になりました。
https://dev.classmethod.jp/articles/aws-lambda-supports-go/

AWS Lambdaにアップロードして実行するにはバイナリファイルが必要です。
私は1つのファイル(main.go)にまとめてバイナリファイルにしました。
バイナリファイル作成コマンドは↓です。zipにするのはバイナリファイルのみで大丈夫です。

#GOOS=linux GOARCH=amd64 go build main.go

バイナリファイルが作成がエラーになった場合は、下記試してみてください。

#go get -u golang.org/x/sys/unix
#set GOOS=linux
#set GOARCH=amd64
#set CGO_ENABLED=0

Lambdaでテストしてみて実行エラーにならなかったらツイッター見にいきましょう!
ツイートされているはずです!

####4.CloudWatchEventsでLambdaを定期実行する。
CloudWatchEventsのCron式でLambdaを定期実行させます。
Cron式は2ヶ月に一度とか、設定次第で好きな時間に実行できます。
参考URL:https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/services-cloudwatchevents-expressions.html

参考に毎日12時に実行するcron式記載しておきます。 (UTCのため-9時間になります)

crons式:
00 3 * * ? *

####5.ツイート確認
設定した時間になってツイートされてたらOK!

かなり雑に書いてしまいましたが、誰かの参考になれば幸いです。。。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?