Discordに簡易的な投票システムを構築するよ

その他Python, Discord

どもども、久しぶりの更新になりました。

今回は、みなさんおなじみのDiscordに簡単な投票システムを構築してみようと思います。やり方は簡単。Pythonを使ってBOTを作り、そいつをグループに入れることで、投票システムにするだけです。



OS : Ubuntu 16.04 LTS, MacOS
言語 : Python3.6.0


0. 方法

今回は、”簡易的な投票システム”ということで、Discordの機能を使って簡単に作成していきます。

自分はDiscord歴が浅いのですが、Discordを使って投票をやろうと思うと、スタンプを使って「A案に賛成ならXXのスタンプをB案に賛成ならOOのスタンプを…」という風に頑張るのがよくある使い方みたいです。

ですが、Discordさんでは一つの投稿に対していくらでもスタンプをつけることができるので、上記の例では”XX”と”OO”両方のスタンプをつけることができます。これでは、残念ながらちゃんとした”投票”とは言えません。

そこで、今回はこの方法にBOTを噛ませることで、一人一票の投票システムを作っていこうと思います。

偉そうなことを書きましたが、つまりは、一つの投票に対してスタンプを一つだけに制限する方法を紹介します。

1. 下準備

まずは、DiscordにBOTを置くための下準備をします。
ただ、この説明は長くなってしまうので、以前書いた記事を参考に”3. サーバーに登録”のところまで作業してください。

下記のプログラムでトークンを使用するので、メモしておいてください。

2. プログラムを書く

では、本記事メインのコードを掲載します。基本的にはコードに記述しているコメント通りの動作をします。プログラムを実行するためには、コードないのTOKENの部分を自身のものに書き換えてください。

これをサーバーとかで実行して置くと、一つの投稿に対して一つのスタンプしか登録することができなくなります。

これで簡易的な投票システムは完成です。ちなみに、上記のコードでは、プログラムの実行ちゅは全てのチャンネルでスタンプ数が一つになってしまうので、必要なら以下のコードを”on_reaction_add”の下あたりに追加して、チャンネルIDを書くことで実行するチャンネルを制限することができます。

チャンネルのIDはWeb版でDiscordにアクセスして、調べたいチャンネルにアクセスした時のURLから簡単にわかります。
https://discordapp.com/channels/[サーバーのID]/[チャンネルID←これ]

以上で簡易的な投票システムの構築でした。
Discordの機能を使うことで簡単にできたと思います。


コーディングで分からないことがあれば
プログラミングや環境構築で分からないことがあったら『teratail』というエンジニア特化型のQ&Aサービスがオススメです。自分もどうしても分からないことがあったら、時々質問しにいきますが、かなりニッチな質問にも意外と早く回答がつくのでとても頼もしいです。という宣伝でした。


おわりに

というわけで、DiscordのBOT記事第二弾でした。需要は限りなく少ないかと思いますが、気にしません。今回はDiscordの機能を使うことで簡単に実現することができましたが、よりちゃんと作りたいのであれば、Discordの機能だけでなく、プログラム側でデータベースなどを利用するのがいいと思います。