1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Discordのボットが指定した時間に動かない時の仮説

Last updated at Posted at 2023-09-17

はじめに

経験が浅いので、参考程度にご覧ください。

Discordのボットを運用しています。
指定した時間に指定したコメントが送られるようになっていたのですが、
ボットがオンラインになっていたにも関わらず、指定した時間にコメントが送られませんでした。
今回はその原因を探っていきます。

一定時間に一回時間を取得する方法などは、他の方の記事をご参照ください。

/var/log/syslogを見てみる

直前にセッションが再開されていました。

Sep 01 07:59:25 ~ discord.gateway: Shard ID None has successfully RESUMED session hogehogefugafuga

セッションは正常に再開されたのですが、この処理をしていたので8:00の時間にコメントを送ってくれなかったのかなと思っています。

/etc/crontabでpkillを設定

crontabの詳しい設定の仕方は他の方の記事をご参照ください。
今回は私が行った設定だけご紹介します。

57 7 * * * root sudo pkill -f hogefuga

他の設定

ボットはサーバーの起動と同時にデーモンで動かしています。
デーモンの詳細な動かし方は他の方の記事をご参照ください。
ここでは私が動かしているボットの設定を見ていきます。

/etc/systemd/system/hoge.service

[Unit]
Description=hoge
After=hoge fuga piyo

[Service]
ExecStart=hoge
Restart=always

[Install]
WantedBy=hoge

「Restart=always」になっていますね。

この設定にすると、デーモンが動かなくなった時にも自動で再起動してくれるようになります。
あまり綺麗なやり方だとは思いませんが、今回はセッションを任意のタイミングで再開させるために、
一度pkillでプロセスを終了してこの設定で再開させています。

「Restart=always」は、他のことが原因で動かなくなった時にもリスタートしてくれるので今のところ便利だと思って使っています。

終わりに

正直、あまり綺麗なやり方だとは思っていませんが、
セッションを任意のタイミングで再開する方法が分からなかったため、
こういった強引な方法を取りました。
このやり方の危険性や「もっとこうした方がいいよ」というのがあれば、ぜひ教えていただきたいです。

おしまい。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?