Hatena0Pocket0LINESendLINESendFeedly2前回の続きでdiscord.pyを使って投票機能を持ったBotの制作です。...https://ogapsan.com/archives/1141投票BOTの完成が目前!と思いきや、困ったことに。サーバー再起動で初期化される。データを保存するように変更することに。それと、再起動後にPythonも立ち上がる必要があるのでその設定もします。ソースコードpickleでデータを保持する保持したい投票内容や投票数はpickleを使用して保存しました。変数やリストごとにファイルを生成する必要があるようで、ファイル数が増えるのが難点ですがプロセスが投票の途中で終了してしまった時など、復帰する際には必ず必要になりそうです。0pickle.dump(val,open('val.pkl','wb'))valに0を格納し、val.pklと言うファイルをwb=バイナリで開きvalの値を保存します。ファイル名の拡張子は何でも良さそうですがpyやshなどは避けたほうが良さそうです。pickle.load(open('val.pkl','rb'))val.pklをrb=バイナリで開き、その値をvalへ格納します。ファイルがないとエラーが起きますので予めファイルを作成します。pickle.load(open('val.pkl','rb'))3行目でファイルの検索をして作成するか判断します。これでファイルがない初回時のエラー回避とファイル作成が行えます。常駐化出来た~ヒャッハー!!なんて喜んでいたらサーバー再起動でプロセスが落ちるので再度問題に。これを何とか解決します。前の記事でも書いたようにXserverではルート権限が使用できません。そのため再起動時の立ち上げを行うデーモンの設定が出来ない問題があります。ルート権限が使えないのはなんとも残念ですが安全性から言うと必要なのかな。これの解決策としてXserverで用意されているプロセスをデーモン化するCronを利用します。難しい設定などはなく必要な項目は時間とコマンドのみです。時間は時分の他に月、日、曜日など細かく設定できます。コマンドについてはLinux上で実行するものと同じです。これで一応プロセスを起動できますが、Cronによるデーモン化の欠点として事前に決めた時間にしか起動できない所です。設定方法はここを参考に。サーバー対応のパス一覧。pythonのパスは3.6を使用したいのでXserverと異なります。コマンドは以前の記事で使用した常駐用のコマンドにCronで複数のプロセスが起動しないよう多重起動防止用にpidofコマンドを追加し、起動していなければnohupで常駐させます。後は、pythonとbot.pyのパスは省略せずに記載すれば実行できます。&これを必要になりそうな時間(再起動の時間が分かればベスト)の6時、18時の12時間ごとに設定しておけば大丈夫そうです。現在の所、投票までしっかりと出来ていますが、時間指定での終了の方法が全く分かっていません・・・。時間取得は出来るのですが。スケジューラが使えそうかな?と思いましたがどうもうまく動作しませんでした。手動で停止させるしかなさそうです。ソースコード現状のソースコードは以下の通りです。"さんが投票を終了しました。{チャンネルID}で設定できます。投票メッセージを削除します。投票メッセージを削除します。投票メッセージを削除します。投票メッセージを削除します。投票メッセージを削除します。投票BOT途中経過(1)Prev関連記事Discord用にBOTを作るDiscordのBOTって様々な種類があって作る必要もなさそう。...Pythonのエディタを選定し開発環境を整えるPythonでDiscord用のbotを作っていて気が付いた。...書いてる人おがP猫に包囲された居住空間で飼育されています。