Help us understand the problem. What is going on with this article?

あの鳥に真言を読ませてみる。~zenlogicでtwitterのbotを作ってみた~

イントロダクション

私は2年ほど前から趣味でアナログゲーム作りをしています。

大した作品を世に放ったたわけでもないですが、今日は大枚はたいて東京まで赴きこれに出てます。

んでせっかく出るならと、新作を作りました。

DOmYwz5X4AANra4.jpg

名前のとおり「真言を読み上げて該当する仏画をとる」という出落ちみたいなゲームです。

ただ、5年ほど前には仏教なんぞに全く興味がなかった私が、

「聖☆おにいさん」というまんがのオチを理解するために宗教の勉強し始め

こんなゲームを作るぐらいにハマるとは感慨深いものがあります。

ま ハマると言っても宗教「史」にハマっているだけで、特定の神様を信仰したり、出家したいわけじゃありません。

ほんの「ベンチャーのノリで『宗教立ち上げない?』と誘われたら迷う」程度のハマり具合です。

閑話休題

ゲーム作成は基本一人で企画、制作、営業、販売を行っているので、

さながら会社経営をしているようでなかなか面白いです。

ただ実績のない私とって「広告宣伝活動」は苦労するものです。

というわけで 今日はtwitterを使って真言カルタのRP用bot をやってみたいと思います。

ボットの仕様

ダラダラ真言をつぶやいてもいいのですが、ウザくなりそうなので、返信型が良いでしょう

botにはなしかけると、数枚の仏画とともに真言をつぶやいてくるので、該当する仏様を当てる

うん、カルタっぽい!こんな仕様でええでしょう

フローを考える

  1. DBから前回の実行時間を取得
  2. 1で取得した時間以降でbotへのつぶやきを取得
  3. DBから真言と画像をランダムにピックアップ
  4. 返信ツイートをする
  5. 実行時間を退避
  6. 1分おきに繰り返す

とりあえずこんな感じ

実行環境を考える

ラズパイさんを使ってもいいのですが、24-365動いてほしいので

ファーストサーバのサービスでもあるZenlogicに働いていただきましょう。

データベースを準備する

とりあえずDBがいるのでMySQL5.1を設定。

db.jpg

phpMyAdminというDB管理ツールも簡単インストールから入れておきます。

kantan.png

ボタン押すだけだから簡単だね。

適当に真言を入れるテーブル作って入れてます。

途中データの修正できないトラブルがあったので客を装ってクレームいれてやろうとおもいましたが、ちゃんとFAQが用意されていました。

ごめんなさい。

https://faq.zenlogic.jp/faqs/FAQ01203

PHPを準備する

twitterへの命令はPHPが相性良さそうなので、とりあえず最新の7.1を使えるよう設定します。

php.png

ただしあまり下位互換がされていないので、ググったサンプルをコピペというわけには行かないようです。

特に
データベース・アクセス系のコマンドmysql_connectは使えないのでmysqli_connectを使うようにしましょう

twitterの準備

アカウントを取って、APIを使えるようにします。

この辺の記事を参考にさせていただきました
https://weblabo.oscasierra.net/php-twitteroauth/

ハマったところは「TwitterOAuth」の作者様がアブラハム氏だったので

すわっ!イサクのお父さん!?」と思いながら数十分ほどwikipediaを読んでしまったぐらいです。

ツイートを取得する

この辺を参照させていただきました。
https://qiita.com/tsumugu/items/e23481626cb6309a249c

https://syncer.jp/Web/API/Twitter/REST_API/GET/statuses/mentions_timeline/

またsince_idを使うと、そのid以降のツイートのみを検索できるようなのでフローを修正

  1. DBから前回のidを取得
  2. 1で取得したid以降でbotへのつぶやきを取得
  3. DBから真言と画像をランダムにピックアップ
  4. 返信ツイートをする
  5. 2で取得したツイートのidを退避
  6. 1分おきに繰り返す

ツイートする

この辺を参照させていただきました。
https://qiita.com/noir/items/b631ed274770eef26445

案外簡単です。

あとは適当にプログラムします。

cronの設定

受信は1分おきにしたいのでcronを使いますが、

Webから起動したら動いたのに、Cronにしたら動いてくれません

でも大丈夫この程度のプログラムであればzenlogicのマニュアルページに載っています。

https://zenlogic.jp/support/manual/web/cron.html

すごいね。

出来上がったものがこちら

仏教らしくこの言葉で話しかけましょう。

そもさん @singon_karuta
名称未設定 1.png

お、返ってきた

オン マリシエイ ソワカ は 摩利支天様ですね。

名称未設定 1.png

「クリック推奨画像」にしているのでクリックすることで正解・不正解がわかります。(さくらっこ商会は私の屋号)

うん まんぞく。

まとめ

  • twitterとPHPの相性は良い。
  • zenlogicのサポートは結構充実している。
  • こんなんでPRになるかの答えは今日の売上次第
  • 「仏教」タグはありがたく使わせていただいた
  • 良い子のみんなは会社で「政治・宗教・野球の話」はやめようね

まとめ2

しこたま売れて完売じゃい!
image.png

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした