抽選botバグ発生…

勢いでリリースしてみた抽選bot…

リツイートへのリプが暴走しました…

暴走

おんなじリツイートに対して何度も抽選リプをするという…。

今までの流れはこちら

原因

詳しい仕組みはこちらの記事にあるのですが、

抽選botのツイートを取得して、そこから抽選ツイートが済んでいるかどうかを判断しています。

リプライへの抽選済みの判断の仕組み

例えばリプライの場合は、

募集ツイートaに対しての応募ツイートbがあり、その応募ツイートbに対して抽選ツイートcをします。

募集ツイートa⇒応募ツイートb⇒抽選ツイートc

なので、抽選botのツイートを取得し、抽選ツイートcから、応募ツイートbへさかのぼり、応募ツイートbへの抽選は終わっているという判断をしています。

応募ツイートb⇐抽選ツイートc

リツイートへの抽選済みの判断の仕組み

でも。リツイートの時は、

募集ツイートa⇒応募リツイートb⇒抽選ツイートc

となってても、

募集ツイートa⇐抽選ツイートc

となってしまい、応募リツイートbへさかのぼれない…。

結果、抽選済みの判断ができず、何度も抽選してしまっていました…がーん…

修正

後から判断は難しいので、抽選時にdynamoにツイートした履歴を残しておくことにしました!

doneListに追加する!

doneList += [in_reply_to_status_id]

処理後にリストに追加して、最後にdynamoに入れておく

def putParam(key, data):
    dynamoDB = boto3.resource("dynamodb")
    paramTable = dynamoDB.Table("twitterLotPram")
    paramTable.put_item(Item={"key": key, "data": data})

putParam("doneList", doneList)

で、処理の最初にこれを読めば完成!

ちょっと雑だけど…

全文はこちら

以上。おやすみなさい。


るな
るな
エンジニア