ケヴィンのなんかいろいろ

ハースストーンとかその他色々なことについて話すブログです

MENU

【C#】僕.botを.NET Coreで書き直した【成長を感じる】

こんばんはケヴィンです。2か月間放置してた僕の人工無能botを書き直しました。

のでその話をします。

何をしましたか

2か月前に勢い100%で書いた僕の人工無能botを今日ようやく書き直してデプロイしてサーバで動くようにしました。

僕の人工無能botはこちら。

twitter.com

ソースはこちら。

github.com

前の記事はこちら。

kvinnoiroiro.hatenablog.com

変わったところ

環境変わった。

  • .NET Flamework 4.7.3 => .NET Core 2.2
  • Sqlite3 => mongoDB
  • 本機上 => さくらのVPS ( CentOS7 )
  • N=1 => N=2*1
  • 自動でご飯を食べるようになった

困ったところ

いろいろ困った。

NMeCabがFlameworkじゃないと動かない

元々使ってたライブラリがこれ。

www.nuget.org

最終更新が2014年でぴゃぁ~って感じがある。しかもNugetの管理が非公式とかなんとか。

で、これのせいでコピペ出来ないしにゃーんってなって放置してました。

調べたら非公式で.NET Standardに対応させたのがあったので、そっちを使ってやりました。

www.nuget.org

基本的な使い方は一切変わってなかったので〇。解析用辞書は一緒に入れてくれなかったので、元のやつを入れてそれをコピーしました。

できた!

Sqliteだと複数アクセスに対応できない

リアルタイムでツイートを追加するのと、文章を生成するのが被ったらプログラムが止まってしまっていました 。これも放置してた要因ですね。にゃーん。

いちいちクエリ文書くのもなんかなーと思ったので、ASP.NETチュートリアルで触ったmongoDBにしてみました。

docs.microsoft.com

これがまあ大正解で、アクセス早いし同時処理できるしコードも簡潔になるしで最高でしたね。もうSqliteなんか使わない。*2

Win機上なら動くのにVPSに上げると動かない

TwitterのTokenを生成するのにそれぞれ環境変数から読んでるんですけど、なんか読めなくて・・・。

これ書き直す前にDiscordのBotを作ってVPSで動いてるんですけど、そっちはちゃんと環境変数から読めただけに本当に謎。

現状未解決なんですよね。でなんで動いてるかっていうと、コードに平文で書いてます。これ本当に嫌だ・・・。なんだろう。本当に何なんだろうな・・・。つらいな・・・。

おわりに

まだ実装したい機能はあるので(自動フォロバとか対話機能とか)しっかり作り上げたいね。早くて西京カンファ、遅くて仙台カンファでai同士のレスバトルができる環境ができれば最高ですが。

自分で書いてて前よりキレイに書けてた感があってエモみを感じてた。初学者は何やってもモチベに繋がるからアド。

これを読んだそこの君!2日くらいで作れるから作りなさい!

ここまで読んで頂きありがとうございました~。

*1:一致させる単語の数

*2:そもそもちゃんとしたデータベースのやつとライブラリであるSqliteを比べるのが間違ってる