全テノ勇者ハ消耗品デアル。

HN:BanMiko 元ネタは勇なまから。その元ネタは村上氏の小説らしいです。

DiscordのBotをPythonで作る【ダイスBot】

 

『完成図』

 

完成図がこんな感じです。

 

『きっかけ』

作った経緯についてはクトゥルフをやるに当たって【どどんとふ】の公式鯖をよく間借りさせていただいてプレイしてるのですが、あまりMAPを利用して行動しない

(距離の概念をあまり使わない)

のでいっその事【Discord】のほうで全部完結したら手間がなくなるかな?と思ったのがきっかけです。

 

『参考にさせていただいたサイト』

qiita.com

note.nkmk.me

 

blog.sky-net.pw

特に上のサイトが参考になりました。

下のオウム返しのBotはコードを理解するのに必要なサンプルコードでした。

 

また Bot の作り方の手順については、参考サイト様のほうに詳しく書かれているので割愛します。

ぜひ、あちらを参考にしてください。

 

 『ダイスの仕組みについて』

 

ダイスの仕組みについてはチャット欄に【1d100】と入れたら

100面ダイスを1回振るという動きをするわけで、これをなおすと

 

1~100からランダムに取る、それからそれを1回繰り返す。

 

という仕組みになるわけです。

 

つまりRandomモジュールを使ってランダムに数字を出してそれをfor文を使って繰り返して足してくっていう仕組みを作ればいいわけです。

 

これが今回のダイスの目指す仕組みってわけです。

 

『プログラムの書き始め』

最初はめんどくさかったので【startswith】を使って1d100が来たら反応して1d100を返す。それから2d100、3d100とコピペして増やしてやってました。

 

正直アホらしかったと思います。

 

それで【xx d yy】のようにyy面ダイスをxx回振る方向にシフトしていきました。

 

一番迷ったのが【レスの返し方】でした。

それを解決してくれたのが【オウム返し】(参考サイトの一番下)でした。

 

それでできたのがこれです

『コード』

f:id:Ban_Miko:20181018165446p:plain

 (atomスクリーンショット)

 

って感じです

 

f:id:Ban_Miko:20181018165609p:plain

起動するとこんな感じで動くと思います。

 

 

コードについては更新前のデータなので全部のチャットに反応してスプリットができないのでエラーで落ちる感じになってます。

なのでifかfoundで弾いたりもっと使いやすくしたほうが便利だと思います。

 

ほとんどコピペみたいなものなので参考にしたサイトと知り合い二人と参考サイト様には頭が上がらないと思います。

 

 『感想』

うん、全くできない、というのが感想です。

なんにも無い更地から当たらしくものを立てていくっていうのは非常に難しいことだと実感しました。

単純なコードのはずなのにSyntaxエラーが結構でて、あーでもないこーでもないと考えるのは楽しかったですがイライラもある程度ありました。

(机バンバン叩きました)

 

実際のところほとんどコピペで、私がやったところは ほんの少し しかないというのが技術力のなさを露呈しているところでもあります。

 

【ランダムにクトゥルフのキャラシートを作る】というのを現在pythonで作ってる最中ではありますが、意外とListやらsplitなど、流用できるところは沢山あるので、こうして1度作ったプログラムからどんどん流用していけるところが面白いとこなのではないかなと私は思っています。