8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

お題は不問!Qiita Engineer Festa 2024で記事投稿!
Qiita Engineer Festa20242024年7月17日まで開催中!

【実例付き】累計3万人が使うDiscordのBotを3年間運営し続けて得た知見まとめ

Last updated at Posted at 2024-06-25

読み飛ばしてください

おはようございます、しなもんです。
プログラムコードを人生で初めて書いたのがDiscordBotというくらいには、
いろんなbotを作ってきた気がします。

というわけで、DiscordのBotを3年間作り続けて得た知見をまとめようと思います。
よろしくお願いします。

今回の記事において、Botの構築方法などは紹介しません。
あくまでDiscordのBotを自力で構築できる程度の知識を事前に必要とするものとします。

0. アクティブデベロッパーバッチというものを貰える

※これは知見というよりおまけです。

image.png

DiscordのBotを所有し、かつ過去30日以内に一度でも使用された場合、
アクティブデベロッパーバッチというものを申請できます。
(申請基準が非常に低いのはおそらく、開発者をコミュニティへ誘導するため?)

image.png

貰えるものはもらっておきましょうということで。

詳細はこちらです。申請方法もこちらで紹介されています。(英語ではありますが)

1. 機能追加が多くバグが起こるので定期的にアプデしろ

2023/11/16の深夜0時34分、DiscordによってCinnamonWorksが運営するBotのトークンをブロックされる事件が起こりました。

image.png

結論から話すと、その原因は
「スタンプ(英名: sticker)機能に起因するPycordによるバグ」
でした。

Pycordというのは、Discord APIのPythonラッパーです。
Discord.pyNextcord、また言語は異なりますがdiscord.jsなどと同じ部類ですので、同じバグとは限りませんがこのような事例が起こる可能性はあり得ます。

このBotで使用されているPycordのバージョンが非常に前のものだったため、このタイミングでメッセージオブジェクトにバグが生じ、大量のエラーでトークンがブロックされたというわけです。

このことで学んだ対処法はただ一つ、ライブラリは定期的にアプデしろということです。

追記・この事件になかなかに懲りたので別記事にしました。

https://qiita.com/CinnamonSea2073/items/4ea9700ea92c3c6ba858

みなさんも気をつけてくださいね。

別にDiscordBotに限った話ではありませんが、Dockerなどの仮想環境を用いて構築している場合、ライブラリのバージョンに気を使うことが減っていく気がします。

確かにアップデートによって推奨される関数が変更されるなどの仕様変更に見舞われましたが、
数行の変更とトークンの停止=サービスの停止、選択すべきは一目瞭然かと思います。

ただ一つ、Discordは仕様追加が非常に多いプラットフォームです。
2023年だけで10回の大規模アップデートが行われています。
使用しているAPIのアップデートには気を付けましょう。

2. 公式のコミュニティサーバーは用意するべき

Botのジャンルにもよりますが、一般公開し普及させたいBotがある場合
コミュニティサーバーは早期に開設するべきです。

ユーザーに告知がしやすくなる

アップデートやメンテナンスなど、告知をする場所が明確になります。
もし告知がされない状態であると、ユーザーからすれば
「機能が急に変わった」「Botが使えなくなった」
となり、サービスから離れる原因になりえます。

image.png

ユーザーとのやり取りがしやすくなる

雑談チャンネルを用意すれば、使っているユーザーの声を見ることができ、
Botを試すチャンネルを用意すればBotの導入が難しくても使うことができます。
問い合わせなどの対応も迅速に行うことができます。

クローズドな状態でベータ版テストができる

Discordは権限や公開範囲を簡単に設定することができます。
Botを普段使用しているユーザーに、ベータ版のテストを管轄内で限定的に行うことができます。

image.png

何よりモチベーションに繋がる

image.png
リアクションとかを貰えるとめちゃくちゃうれしいです。


以上の理由から、コミュニティサーバーは早期に用意すべきです。

3. やっぱりSEO対策は大事

少し他分野の話になりますが、DiscordBotにおいてもSEO対策は効果的です。

SEO対策とは、日本語で「検索エンジン最適化」を意味し、
要するにGoogleなどの検索エンジンで自分のサイトが埋もれないように
検索結果の上位に持っていくための対策です。

Botの招待リンクの使用方法やアナリティクスを見るに、
ユーザーは基本的にGoogle検索からBotを探しています。

公式サイトを用意し、対策を行うことでBotを広く認知させることができる気がします。
実際、私も上位5位までに公式サイトやTwitterが入るように対策しました。

その直後から導入サーバー数が大幅に上昇しました。

詳しくは以下の記事に少し書いてあります。

4. 出来るだけすべてのメッセージにEmbedを使え

Embedについてはこちらの記事にまとまっています。

重要なのは、
・人間ではなくBotのメッセージであることが明確になる
・PCとスマホである程度表示が揃う(レスポンシブ対応)
色や画像の添付によるブランディングが可能になる
ことです。

特に色に関してはEmbedにしかない利点だと思っており、

image.png

エラーを表現したり

image.png

完了したことを示したり

また、色は送信後も編集できるので
処理中は灰色にしておき、完了後に緑色に変える
といったことも可能です。

終わりに

Botを長年運営してきて得た知見をまとめました。
この知見はおそらくBot以外にも様々な個人開発で生きてくると思うので
是非参考にしていただければ幸いです。

さて、私はこれから1万人ほど参加しているコミュニティサーバーの雑談チャンネルで
「誰が一番リアクションが早かったか選手権」を主催してくるので失礼します。
それでは。

おまけ

特に整備はまだできていないのですが、
Pycordを用いたDiscordBotをDockerで爆速構築するテンプレート
が存在するので置いておきますね。

8
4
1

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
8
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?