🤖

Google Colab上でDiscord botを稼働させる

2023/11/24に公開

イントロダクション

先日Google Colab上でDiscord botを稼働させてみたのですが、あまりこのような事例が見当たらなかったので、メリットデメリットなどを簡単にまとめてみました。

どのような時に便利そうか

botを動かす環境としては、ローカルPCで実行する、PaaSのサービス上で実行するなどいくつか選択肢があります。そんな中でGoogle Colabをあえて使う必要はあるのでしょうか?

Google Colabのメリットとしては、環境構築が不要な点、ローカルの開発環境を汚さない点、他の人に共有しやすい点などが挙げられます。共有された人は、自分のGoogle Colab上でtokenを書き換えて実行するだけで、別のbotとして稼働させることができます。

一方で、稼働時間に制約がある(何も対策しなければ90分)のは大きなデメリットです。また、Google ColabではPythonをサポートしていますので、逆に言うとDiscord.jsのような他言語のライブラリは使用することができません。

以上のことを踏まえると、Pythonのライブラリを使う場合で、お試しで動かしてみる、あるいは手軽に短時間だけ稼働させたい、他の人にコードを共有して動かしてもらいたい、などの限定的な状況では選択肢になるのかなという印象です。

注意点

基本的には通常どおりコードを書いていくのですが、2点追加でコードを書く必要があります。
1点目は当然ですが、使用するライブラリをGoogle Colabにインストールすることです。下記はdiscord.pyを導入する例です。

!pip install -U discord.py

2点目は、非同期処理に関連したものです。async/awaitを使った処理をしようとすると下記のようなエラーが出ます。
asyncio.run() cannot be called from a running event loop
これはnest_asyncioライブラリを使用することで回避できるようです。

import nest_asyncio
nest_asyncio.apply()

コード例

参考までにGoogle Colabでルーレットbotを動かす例をGitHubにアップしています。なお、スラッシュコマンドを使用できるようにする方法はこちらの記事を参考にさせていただきました。

Discussion