ガチほぼ無知識からラズパイとGithubでDiscordBotを作る話

すのえ

ガチで自分以外のメンバーがほぼ動いていないブログからこんにちは。くらいんずのすのえです。

裏では合同記事を出そうとしたけど予定日が2か月後ろ倒しになってたり、気力はあるんですよ。

まあ力加えてても、動いてなければ結局は仕事量(J)は0ですからね。やっぱ動いてないですね。

閑話休題。今回は、ガチで無知識な自分RaspberryPiで動くDiscordのBotを作る記録をします。

ググればちょっと記事出てくるんですけど、全部そのままやってもうまくいかなかったり、

ネット上に転がってない問題が起きてどうにかなったりしたので、その記録を解説調で語ります。

多分タイトルに「無知」ってついてる記事を開く人は同じような境遇の人しかいないと思うので、

もしどこかの誰かが抱えてる問題をこの記事で解決出来たらうれしいなーの気持ちで書きます。

そしてこの分野に精通してる方々、ようこそおいで下さいました。見守って下さい。殺さないで。

※注意※
ガチで知識がほぼないところから作ったので、どこか間違っているかもしれません。信用しないでください。
なのでこの記事を参考にするのは割と最後めの手段にした方が良いと思います。もうちょっとググって。
というわけで、この記事を参考にして発生した不利益への対応は一切しかねます。

自分が持っているもの

自分がRaspberryPiでDiscordのBotを作る前に、何とか持ち合わすことのできたものです。

つまり、最低限これらと同等かそれ以上の知識があれば、あなたもBotを作れるはずです。

ラズパイ起動するとこまでは出来とるわカス!」って方は上の目次から飛ばしてください。

Raspberry Pi 4b (RAM 4GBモデル)
 ひょんなことから手に入れて、マイクラ鯖を試しに立てたら突如データが全爆発。萎えて放置。
 それから1年が経過し、DiscordのBotほしいな~と思い立ち再び使ってみることに。
 楽なバックアップ方法見つけて且つ運用中しばらく爆発しなかったらまた鯖立てしてみたい。

Raspberry Pi 4b用の周辺機器
 ・Raspberry Pi 4用のケース 冷却ファン ヒートシンク付き
  安くて中身が見やすかったので購入。ファンの音があまり気にならず良い。
 ・USB Type-Cケーブル
  電源用。コード途中にスイッチがありオンオフできる奴を持ってました。便利で良い。
 ・Micro HDMIケーブル
  ディスプレイ用。これがないとラズパイ操作できない気がするんですけど。出来るのかな?
 ・SanDisk製 MicroSDカード 256GB A3
  これもなんか家にあった。データ爆発の原因がまだ特定できてないため若干不安。
 ・USB接続のキーボードと無線のマウス
  プロはキーボードだけで行けるらしい。マウスの操作に慣性があるのは多分ラズパイの仕様。

MicroSDカードが挿せるパソコン
 MicroSDをSDに変換するケースみたいなのがあればSDカードしか挿せなくてもいける。
 ちなみにWindows10。Macの人は別の解説を探してほしい。

・近くのコンセント差込口、無線LAN、画面表示用のディスプレイ(スピーカー付き)

知識
 ・†ググる方法とインターネットリテラシー†
  これが無ければ一生できなかった。
 ・Raspberry Pi 4を始める方法 (なくても良い)
  前回の鯖爆発時の記憶。ググれば出てくるし、一応この記事内でも軽く解説します。
 ・Pythonへのほんのわずかな知識 (なくても何とかなる)
  プログラム良いな~と思ってProgateで1時間触って投げた。
  プログラミングできる人ならエディターでMinecraftのMod作る記事上げてないんですよ。
 ・コマンドへのちょっとした知識 (なかったけどどうにかなった)
  数年前に趣味でかじったけどほぼ忘れた

・人間種が持ち合わせるものに近い脳みそ (むしろ無いかもしれない)
 薄っぺらでスカスカの脳みそに何とか情報を詰めている。今日の朝ごはんと昼ごはんを忘れた。

本体と機器以外はなくても何とかなります。こんな装備でやった記録を垂れ流しますよ。

Raspberry PiにOSを入れる

Raspberry Piって、買った段階だとただの電子回路の集合らしいです。データがなんもない。

なので最初は、MicroSDカードにプログラムを動かすためのOSをインストールします。

SDカードにOSを入れるために、まずパソコンにRaspberry Pi Imagerをインストール。

パソコンにMicroSDカードを挿して、Raspberry Pi Imagerを起動したらこんな画面が出ます。

左ボタンで入れるOSを選択できるらしい。ということで開くとなんかめっちゃたくさんある…

ググるとOSによって向いてる運用方法が違うとかなんとか。いやよくわからん。

別にガチのいろんな人に使ってもらうためのBotじゃなくて、身内用のを作れれば十分なので。

よくわからないし、おすすめされてそうな一番上の(Recommended)の奴を選びました。

真ん中の「SD Card」をクリックしたら、パソコンに挿されてるSDカード一覧が出るらしいです。

出ねぇ… 何で? 試しに別のパソコンに挿したら認識されました。持っててよかった~

これ以外の原因には、MicroSDカードの破損SDカード変換アダプタの不具合が考えられるので

別のパソコンが無い又は挿しても認識されない時は、ググるかもう一個買うといいと思います。

Raspberry Pi起動準備

ケースの組み立てをします。そのままのラズパイ、裏面がとげとげしてて痛いし置くのも怖い。

https://www.amazon.co.jp/gp/product/B07VB24K9W/ref=ppx_yo_dt_b_asin_title_o03_s01?ie=UTF8&psc=1

まずケースの組み立てから。指定のアクリル板にファンを設置、基盤に青い謎の物体を貼り付け。

層状になってるアクリル板を説明書通りに積み重ねたら、ほぼ完成図が見えました。楽で良い。

穴にネジを通して反対側からナットと一緒に締めて固定。手で押したら若干ずれるけど多分OK。

ファンから出てる赤と黒のケーブルを説明書を読みながら指定の場所に接続しました。

そしたらケースごと良い感じの邪魔にならず見やすい場所に固定、ケーブル類を挿します。

MicroSDカードを入れ、電源のUSB-C、画面用のMicroHDMI、マウスとキーボードを接続。

電源ケーブルのスイッチをオンにしたら、近くのLEDが赤と緑に光ってファンが回り出した。

HDMIケーブルを挿したディスプレイを確認したら画面が付いて謎の声が流れ始めて成功です。

スクショ方法が分からんので画像はないです。Raspberry Piでスクショってできるんですかね?

初期設定

とりあえず最初の「Welcome to the Raspberry Pi Desktop!」みたいな画面をNextで飛ばし、

次の地域設定はJapan, Japanese, Tokyoで設定続行。パスワードは自由に設定しましょう。

それが終わるとWifiの接続設定が出ました。一応有線LANも接続しておいたんですが…なんで?

有線LANがうまく通ってなかったとしたら面倒だったので無線の接続も一応しておきました。

これが終わるとソフトウェアのアップデートを聞かれます。OS入れる時に全部入れとけや。

一応Nextを押して受け入れてあげました。環境設定は忍耐と祈りが大事ってよく聞きますしね。

これらすべてが完了すると再起動を更新のため求められます。は??????????

キレてはいけません。再起動が終わったら色々日本語表記になってました。これなら仕方なし。

ただし、日本語入力はまだできないので日本語入力用のキーボードを入れた方が良いっぽいです。

上の画面から灰色の四角い奴をクリックして出た画面に、以下のコマンドを入力して再起動。

sudo apt-get install ibus-mozc

さっき再起動する前にこれ先にやってから再起動すればよかったじゃんか。まあいっか。

Discord Botの元を作る

再起動待ちをしているうちに、DiscordのBotを作るのに必要なガワを作っておきましょう。

ここからは通常のパソコンで操作します。

まずはDiscord Developer PortalにアクセスしてDiscordアカウントでログイン。

右上の青い「New Application」をクリックすると新しいBotの作成が開始されます。

Botの初期設定をする

適当に名前を設定し、[Create]を押したら左の「Bot」のタブで設定を行います。

アイコンとユーザーネームを決定し、下のチェックボックスをいろいろいじっていきましょう。

「PUBLIC BOT」をオンにすると、誰でも自分のサーバーに招待できる公開Botになるらしい。
「REQUIRES OAUTH2 CODE GRANT」よくわからないけどオフの時だけ上手くいった。
〔それ以降〕サーバー内に100人以上いる場合の設定らしいので違うなら全スキップでヨシ。

これらの設定を終えて保存をしたら、Botの一つ上の「OAuth2」での設定を行います。

ちょっと下の「OAuth2 URL Generator」で、まず「bot」にチェックを入れます。

すると下画面にいろいろ出てきます。Bot運用に必要な権限すべてにチェックを入れましょう。

自分は身内用のbotを作るだけだったので、全権限である「Administrator」を選択しています。

終わったら[Copy]ボタンで招待URLを作成。これにアクセスして自分のサーバーに招待します。

ちなみにBotを招待できるのは自分がそのサーバーの管理人の時に限られています。

管理人に土下座して「素晴らしいbotを作るのでこれ入れろカス」とURLを投げ渡しましょう。

BotのTokenを生成

次に、このBotを管理するために必要になる「Token」を取得してメモしておきます。

Tokenはさっきの「Bot」編集画面で[Copy]ボタンから簡単に入手できるのですが、

これはもし他人に教えてしまうとその人にBotを自由に操る権利を与えてしまいます。

信頼できる人以外には渡さないように、慎重に取り扱いましょう。

もし間違えて公開してしまっても、落ち着いて隣の[Regenerate]で新しいTokenを生成すれば

過去のTokenは使えなくなるらしいので、このことを覚えておきましょう。

ちなみにDiscordでこのTokenを送信しようとするとちゃんと警告してくれます。やっさし~!

Raspberry Piの設定

Raspberry Piでの操作に戻りましょう。再起動はさすがに終わっているはず。

ここで、DiscordのBotを何のプログラミング言語で作成するかを選択することになりました。

選択肢としてはJavaScript、Python、C#、Ruby、Go等これ以外にもいろいろ選べますが、

Pythonにちょっとした知見があったので今回はPythonで開発することを選択しました。しかし

実はPythonでDiscordのBotを作成するために必要になってくる「discord.py」というライブラリ、

これのサポートが4月で終わってしまうらしいです。なんてこった。(開発者のお言葉[English])

しかもサポートが終了するだけならまだしも、2022年4月に予定されているDiscordの更新により、

discord.pyによって作られているBotが使えなくなってしまう(諸説あり)かもらしい。マジか。

長期的な運営を行うDiscordのBotを作ろうと考えている人は、一応JavaScriptで作りましょう。

自分は「無理になったら頑張って移行するか~」の気持ちでPythonを選びました。我怠惰なので。

ということでRaspberry PiにPythonでDiscordのBotを作るために必要なものを入れていきます。

まずdiscord.pyをインストールしましょう。下のコマンドを実行。

pip3 install discord.py

これさえ入ってしまえば、Raspberry Pi上でPythonによるDiscordのBotを作れるようになります。

Raspberry PiにTokenを送る

作れるようにはなりましたが、自分のDiscordのBotを操作するためにはTokenが必要です。

ですがDiscordのTokenは今、通常のパソコンの中にしかありません。

パソコンの画面を見ながら手で全部入力しても良いのですが、間違えたら面倒ですよね。

ということでWinSCPというソフトを使ってパソコンからRaspberry Piに情報を送ります。

その前にRaspberry PiでWinSCPから情報を受け取るための設定が必要なので一旦移動をし…

Raspberry Piデスクトップ左上のアイコンをクリック。設定から「Raspberry Piの設定」を開き、

「インターフェース」タブ一番上の「SSH」の[有効]側にチェックを入れます。

次にデスクトップ右上のWifiマークの場所にマウスを重ねてしばらくすると情報が出てくるので

192.168. …」って感じの数字列を覚えておきます。/の後は使わないので無視でOK。

ここまで出来たら通常のパソコンに戻り、WinSCPをダウンロードして開きましょう。

[ホスト名]にはさっき覚えた数字列を入力します。「192.168.X.XX」みたいな感じが多いはず。

[ユーザー名]にはRaspberry Pi初期設定時のユーザー名とかを入れておきましょう。

これで一旦保存ボタンを押し、今作成した接続先にログインしましょう。パスワードを入力。

すると画面左側には自分の通常のパソコンの右側にはRaspberry Piがのフォルダーが映ります

これでファイルのやり取りは自由です。ドラッグアンドドロップとかで情報を持ち込みましょう。

とりあえずDiscordのトークンは持っていくとして…よく考えたらそれ以外は要らないかも。

Githubとの接続

当初は一人で開発するつもりだったんですが、Botの導入先がくらいんずのサーバーだったので、

グループ内のメンバーと一緒に作ろう!ということになり、Githubで作業することにしました。

つまり、一人で開発する方にはあんまり関係ない部分が多いのでその場合飛ばしても大丈夫です。

Githubとは

Githubは、みんなで一緒にプログラムなどを共同開発できる良い感じのサイトです。

普通にグループで同じファイルを編集すると、完成後に誰がどこを変更したのかがよくわからず

編集し終わったファイルを合成するのにとんでもない手間と時間がかかってしまうと思います。

そこをどうにかしてくれるのがGitという機能で、それがほぼフリーで使えるのがGithubです。

また、Gitを使うことでRaspberry Pi上ではなく通常のパソコン内でプログラムを書けるので、

環境を移動したりすることなく、自分好みのエディターでプログラムできるのも便利ですね。

Private Repository

今回はGithubのOrganizationという機能で、Free Teamsを作りメンバーを招集しました。

ちなみにあったから使ってみただけでTeamsの利点とかはよく分かってないです。権限周りとか?

その中に、Private Repositoryという他人から見えない作業場所を作成して開発を始めてみます。

まずGithubのウェブサイトを開き、右上の自分のアイコンすぐ左のプラスマークをクリック。

すると出てくる選択肢の一番上に「New Repository」があるのでそれをクリックして進みます。

Repository name」には作業場所の名前、PublicかPrivateかを選択したらあとは適当でOK。

Teamsを使っているなら、Repository nameの左、「Owner」の変更も忘れずにしましょう。

無料版だとPrivate Repositoryの中に3人しか入れないという制限がありますが、まあ十分です。

そもそもこのグループ、動きが無さ過ぎて自分以外に三人以上同時に動かないですからね…

こんな神機能を2019年から無料かつ無制限で使わさせてくれるMicrosoft君に†圧倒的感謝†

無料でもっと人員入れたいよ~!って人は自分でGit鯖構築するといいんじゃないでしょうか。

Discord Tokenの扱い

てなわけで共同で作業を行うことにしたのですが、問題はDiscord Tokenの扱いですね。

先ほども紹介した通り、Discord TokenはBotを動かすために必須、つまりコード内に記述が必要

ですがGithubに置いてあるコード内に書いておくと、他の人に簡単に見られてしまいます。

Privateだから大丈夫とも限りません。他のメンバーが手違いで漏らしても気付けませんからね。

ということで「環境変数」なるものを使ってみます。環境変数とは、OSで管理してる変数です。

DiscordのBotを動かすプログラムを実行するのはいつも自分のRaspberry Pi環境ですよね。

なので、前もってDiscord TokenをRaspberry Piに「TOKEN」という名前で保存してあげれば

コードには「OS内にある『TOKEN』っていう変数を使うよ!」しか書かなくていいのです。

何て便利な機能。ということでRaspberry Pi内にDiscord Tokenを環境変数として保存しますよ。

環境変数の導入

調べてみると、環境変数というのはターミナル(コマンド書く黒い奴)起動時に記録するのだとか。

そしてターミナル起動時に自動で実行されるファイルなるものがあり、そこに書くといいらしい。

色々試した結果、「.bashrc」ってやつに書いたら上手くいった。地獄のトライ&エラーだった。

まず、.bashrcは「ホームディレクトリ」に無いと読み込まれないらしいです。

なので、ターミナル(デスクトップ上の黒い四角い奴)を起動して以下二つのコマンドを実行。

cd
touch .bashrc

そして次に、.bashrc の中身を開いて環境変数の設定をしなければいけないようです。

ということで、Raspberry Piで中身を開くために「nano」という機能を使います。

nanoは、簡単に言うとWindowsのメモ帳みたいなもので、ファイルを編集して保存できます。

viとかいうのもあるらしいけどあれマジで操作性意味わからん二度と使わんからな覚えてろ。

nano .bashrc

このコマンドを実行すると、ターミナルからログが全部消えて文書編集画面に変わります。

適当に#が書いてない場所で改行をして空行を生成、そこに下のように入力しましょう。

export DISCORD_TOKEN=【DISCORDのTOKEN】

もちろん【 】内部にはあなたのDiscord Tokenを入れてください。

また、Discord Tokenの手入力が嫌でWinSCPを使ってパソコンからTokenを輸入した人は、

ターミナルをもう一個起動してbashrcと同様にTokenが書かれたファイルをnanoで開き

マウス右クリックメニューからコピーと貼り付けを行えます。これで環境変数の設定は完璧。

「Token書いたファイルどこに入れたか分かんねぇ!」って人はWinSCPで確認しましょう。

「/home/[ユーザー名]/」のフォルダが俗に言う「ホームディレクトリ」なのでここが便利。


おまけ こいつら知っとくとターミナルで迷ったときにどうにかなるかも

cd  | 「ホームディレクトリ」に移動。
cd .. | 階層的に一つ手前のフォルダに戻れる。
cd ** | 今いるフォルダに**というフォルダがあれば、**というフォルダ内に移動できる。
ls -a | 今いるフォルダ内にあるフォルダとファイルを全部表示。青い太文字がフォルダ。
touch ** | **というファイルを生成。
mkdir ** | **というフォルダを生成。
rm ** | 今いるフォルダ内に**というファイルがあれば、それを削除。(取扱注意!!!)

開発環境側にPythonをインストール

最後に、Githubを使うことでで作業する環境が通常のパソコン上になったので、

通常のパソコンでもdiscord.pyを良い感じに扱うためにいろんなものをインストールしましょう。

正直なくても文法を完璧にマスターしてるなら動作には関係ないので必要がありませんが、

良いエディターと環境を揃えると異常がある所を指摘したりしてくれるのであった方が絶対良い。

ということでまずはPython3をダウンロードします。このページにアクセスし、

一番上にある「Download Python X.X.X」みたいな黄色のボタンをクリックしましょう。

後はもうその流れのままPythonをダウンロード・インストールしてください。

ちなみにインストーラー開始時下のチェックボックスを入れると後でいいことがあるらしいです。

次に「コマンドプロンプト」を起動します。Macでは確かターミナル。

左下の検索バーに「コマンドプロンプト」と入れると黒い四角の奴が出ると思います。それです。

便利な時代になった

これを使って結構前に言ってたdiscord.pyをこちら側にも入れていきます。コマンドは以下。

py -m pip install -U discord.py

これで環境設定は以上です。あとはコードを生成してRaspberry Pi側で実行するだけ!!

ということで、Raspberry Pi側で動かすプログラムを書く…と言いたいところですが!

その前に、Githubと自分が行う作業を連携させるために作業場所をGitに適応させましょう。

コマンドインターフェース苦手なのでgitコマンドを使わなくても何とかなる方法を使います。

Github Desktopを使いましょう。こいつにすればCUIではなくGUIによる操作が可能です。

Github Desktop

Github Desktopを使うと、githubに対するgitコマンド操作を非コマンドで操作可能になります。

インストールが完了してGithub Desktopを起動したら、まずはユーザー設定を行いましょう。

ウィンドウ上の「File」内の「Options…」の「Accounts」から、githubアカウントでログイン。

次にGithub上にある作業場所をローカル環境(パソコンなど)に持ってくる作業を行います。

同じく「File」から「Clone repository」の「URL」タブをクリック、一番上の空欄に、

先ほど作ったrepositoryのURLを直接貼り付けます。Local pathは好きな場所に自由に指定。

URLを入力すると下の「Clone」ボタンが青くなって押せるようになるのでクリックします。

するとLocal pathで指定した場所にGithub.comから持ってきたrepositoryが複製されています。

ここで指定したLocal pathでのアクションは、ほぼすべてGithub Desktopに監視され、

そこで行ったファイルの更新を全てローカル環境からgithubに持っていけるようになります。

試しにGithub desktopホームの「Show in Explorer」というボタンを押してフォルダを開き、

中に適当な名前のフォルダを新規作成したりして、Github Desktopに戻ってみましょう。

Github Desktop is watching you

するとこんな感じで、「1 changed file」「○○.xx +」「Commit to main」などと出てきます。

この状態でgithub上に更新を送信する動作を行うと、行った更新が全て記録されるわけです。

他の人が作業した後は上の「Fetch origin」を押せばその作業を自分の方に持ってこれもします。

まあここはGit講座ではないので、GitやGithub Desktopの詳しい使い方はググってください。

Raspberry Piに更新を持っていく

Github Desktopでできることは、作業をするパソコンでの更新をウェブ上に持っていくことです。

実際にプログラムを動かすのはRaspberry Pi上なので、こちらに更新を持ち帰りましょう。

ということで、Raspberry PiとGithubをつなぐ作業をします。Raspberry Piに移りましょう。

Raspberry Piでターミナル(上の黒い四角い奴)を開き、以下のコマンドを順に実行。

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y git

次に、githubと通信をするための「公開鍵・秘密鍵」を生成します。これも順に実行。

cd
cd .ssh
ssh-keygen -t rsa

最後のコマンド実行時に色々聞かれることがありますが、よくわからないので3回Enterしました。

あそこでいろいろ入力すると鍵の名前とか追加パスワードがつけれるらしいです、知らん。

ここまで一回やったら一度通常のパソコンでの作業に戻りWinSCPを開きます。

Raspberry Piに接続したら、.sshファイルの中の「id_rsa.pub」を開いて中身を見たいのですが、

.sshファイルは隠しファイル状態なので、右下の「〇非表示」と書かれている部分をクリック。

すると隠しファイルがすべて見えるようになるので、id_rsa.pubまで行き開きましょう。

中身をコピーし、Githubのウェブサイトに持っていきます。

Githubにて右上の自分のアイコンから「Settings」を開き、「SSH and GPG keys」に行きます。

緑色の「New SSH key」をクリックし、Keyにid_rsa.pubの中身をコピペします。

titleは自分がRaspberry PiのSSH keyだと判別できればなんでもいいので適当に設定。

終わったら緑色の「Add SSH key」でSSH keyを追加して鍵設定は完了です。

GithubにあるRepositoryを持ってくる

WinSCPとかでRaspberry PiにRepositoryのURLを送って、Raspberry Piでの作業に戻ります。

RepositoryのURLが書いてあるものを開いてコピーしたら、下のコマンドを打ちましょう。

cd
git clone 【コピーしたRepositoryのURL】
ls -a

すると、ホームディレクトリに自分のRepository名のフォルダができているはずです。

自分の作業環境でファイルを編集してGithubにpushしたら、Raspberry Pi側でpullしましょう。

Githubに送った内容をRaspberry Piでpullするコマンドは以下の通りです。

git pull origin main

これを入力すると、自分のGithubユーザー名とパスワードの入力を求められます。

正しく入力すれば、すべての作業を合わせたものをRaspberry Piに持ってこれるはずです。

pullをすれば持ってこられるはずなのですが、自分の場合正しいパスワードを入力しても

変なエラーメッセージが出て全然pullできませんでした。

どうやらgithubのセキュリティアプデで、違う何かを入れることになったらしい。

ということで、その違う何かを生成するためにGithubを開きましょう。

まずSSHと同様にアイコンメニューから「Settings」で設定ページに飛びます。

左下の方の「Developer settings」を開き、次に「Personal access tokens」。

右上の「Generate new token」から新しいログイン用Tokenを生成しましょう。

セキュリティのために、有効期限とアクセス制限がある鍵を生成する…らしいですが、

面倒なので全権限を渡した無期限の鍵を作ってやりました。ギャハハハハwwwwww

まずは管理用の「Note」には鍵の名前を入力しましょう。使わないので長くても良し。

「Expiration」を[No expiration]にし、左側から必要そうな権限全部にチェックを入れます。

そうして最後、一番下の「Generate token」を押せば生成完了です。

次の画面でTokenがページに表示されますが、これ以降アクセスしても表示されません。

忘れても削除して再生成できますが、万が一のために安全に保管してください。

このTokenもまたWinSCPなどでRaspberry Pi側に送ってあげましょう。

git pullなどをする際にパスワードを聞かれたら、Githubのパスワードの代わりに

今生成したTokenをコピペすればpull完了です。お疲れさまでした。

Pythonプログラムを書く

全ての動作環境を整え、開発環境と実行環境の接続を済ませ、やっとプログラムが書けます。

ということで、Repositoryで生成したファイルの中に適当なPythonファイルを作りましょう。

Pythonファイルとは、ファイル名の最後が「.py」で終わるファイルの事です。

この中に正しいPythonプログラムが書いてあると、実行していろいろ動かせます。

この時のファイル名は「discord.py」以外なら動作に得に影響しないので、適当でOKです。

プログラムの型

ある程度Botプログラムを完成させたので、ちょっと紹介したいと思います。

その前に、DiscordのBotを動かすPythonファイルはある程度型があるのでそれだけ先に。

以下の通り、最初と最後に以下のようなコードが必要です。絶対入れましょう。

import os
import discord.ext
from discord.ext import commands

client = commands.Bot(command_prefix='!')

// ここにコードを書く

client.run(os.environ.get('DISCORD_TOKEN'))

上三行はDiscordのBotに必要なライブラリのインポート、最後がDiscordのToken指定をし、

command_prefix=’!’ のところは、Botに指示できるコマンドの一番最初の文字を指定しています。

この5行さえ書いてあれば、実行するだけで作ったBotがオンラインになるはずです。試しましょう。

ここまででもうBotは完成しています。あとはどんな機能を実装するか考えて作るだけですね!

あ、機能の作り方とかPythonの文法は他サイトググるか公式ドキュメント見てください。

機能例

これで終わっちゃうのもなんか寂しいので、グループ内で作った機能の例とかを出して終わります。

きれいなコードではないかもしれないけど、少なくとも動いてるので参考にしてみてください。

command_prefixは’!’を仮定して説明します。他の文字が良ければ自由に’?’とか’/’に変えてください。

てすと

すのえが一番最初に作ったテスト用コマンドです。

@client.command()
async def test(ctx):
await ctx.send("hello, "+ctx.author.name+"!")

「!test」と送信すると、メッセージ送信者に挨拶をしてくれます。かわいいね。

今何時

ふぇすに頼んだらこんなん作ってくれました。

import time

@client.command()
async def now(ctx):
unix_time = time.strftime('%Y/%m/%d %H:%M:%S')
await ctx.send(unix_time)

コードの一番最初でtimeをインポートして、時間関係のいろいろができるようになりました。

「!now」と送信すると、「YY/MM/DD hh:mm:ss」の形式で時間を教えてくれます。優しいね。

さいころ

downmeltに頼んだらいい感じの作ってくれました。

import random

@client.command()
async def dice(ctx, arg = 6):
dice_limit = int(arg)
await ctx.send(random.randrange(dice_Limit) + 1)

コードの一番最初でrandomをインポートして、乱数関係のいろいろができるようになりました。

また、コマンド定義時に「arg = 6」とデフォルト値を設定することにより、

もしコマンドを送信された時に特に何も指定しなかった場合は6が代入されるようになっています。

これで「!dice 10」とか送信すると、1~10の中からどれかを渡してくれます。面白いね。

再起動通知

ということで最後にすのえがちょっと作ってみました。

@client.event
async def on_ready():
channel_bot = client.get_channel(【チャンネルのID】)
await channel_bot.send("正常に再起動が完了しました。")

【チャンネルのID】のところには、メッセージを送りたいチャンネルのIDを貼ってあげましょう。

チャンネルIDは、ブラウザ版discordで見るか、[設定]>[詳細設定]から開発者モードをオンにして、

IDを見たいチャンネルを右クリックして「IDをコピー」すれば入手できます。

これにより、再起動時に指定したチャンネルに正常に再起動できたことを報告してくれます。

これでこのDiscordBot製作記録は終了です。参考になりましたか?なれていれば嬉しいです。

この記事はラズパイでDiscordのBotを作る話なので、発展したプログラムとかは書けませんが、

ここまでに書いたことが、もし、どこかの誰かの力になれていればとても幸いです。

また、この記事内で分からないとした部分、解決策などありましたらコメントお願いします。

特に何も行動はできませんが、非常に感謝した後記事に加筆をさせていただきます。

コメント

タイトルとURLをコピーしました