Day3 PythonでDiscordBOTを作るなら?
早めにネタを潰しておくことで逃げないという私の雄姿.
まずDiscordって?
とある場所の説明を引用すると,ゲーマー向けのLINE.通話が便利とかなんとか.
もうすこし大衆向けに説明するならSlackとかTeamsをもっとカジュアルにしたような感じのものです.
じゃあBOTって?
結構BOTっていう単語も割と覇権を握っているのではないでしょうか.Slackにもありますし,LINEにもありますし.もっと言うとTwitterには昔からありますよね.
BOTというのは,中に人がいるのではなく,プログラミングによって作られた存在のことです.
プログラムなので,例えば「〇〇時に教えて」とかって言ったらその時間に教えてくれたりします.
また,いろんな人が作れる・作っているというのも特徴ですね.
選択肢: 言語
「PythonでDiscordBOTを作るなら?」としていますが,私の中では「DiscordBOTを作るならPython」とかってに紐づけちゃってます.
もちろん,JavaScriptやC#,RustにだってDiscordBOTを作れるポテンシャルはあります.
ただ,ヒヨコが最初に目に入ったものを親だと思い込むように,私もDiscordBOTにはPythonを使えと刷り込まれているんです.というより,Pythonをコテコテに触ってしまったせいでほかの言語を触りたくないというだけなんですけどね.
(私の思うPythonの嫌いなところは無名関数がなんか気に食わないところぐらい.)
ただ,PythonでのDiscordBOT作成は擦りに擦られているので,資料が沢山あります.日本語でも英語でも.
資料は多いに越したことはありません.しかしまぁ慣れてる言語でやるのが一番いいでしょう.
選択肢: ライブラリ
頑なにライブラリという言葉を使いませんでしたが,ここで初登場させました.
まず,DiscordBOTを作る純粋な方法は,DiscordのサーバーとWebSocketを張って,必要な時にHTTPでリクエストを行って処理をしてという感じです.
ただ,型ヒントもありませんし,バリデーションとかなんかそこらへんもありませんし.(何より資料は英語だし.)
そこで,有志が扱いやすいようにPythonのクラスとかいろんなものをごたごた使ってWebSocketとかHTTPリクエストをラッピングした…というのがDiscordBOTでいう所のライブラリです.
私はあるタイミングからnextcordというものを使用しています.
あるタイミングというのは,DiscordにSlashCommandが実装されたりしたタイミングです.
PythonでDiscordBOTを作るといえば,Discord.pyというライブラリが主要でしたが,開発が滞ってしまったり,色々あってnextcordに乗り換えたらなんか割といい感じじゃね…?ってなって使ってます.
ただ,多くのライブラリは基本的に使い方が変わらないのでどれでもいっちゃどれでもいいんじゃないんですかね.ただ,個人的に使い方を覚えてしまったのでnextcordを使っています.
あと名前かっこいいもん.nextだってさ…
サンプルコード
import nextcord
from nextcord.ext import commands
bot = commands.Bot()
@bot.slash_command(description="Greet")
async def hello(interaction: nextcord.Interaction):
await interaction.send("こんにちは!!!!", ephemeral=True)
bot.run("TOKEN")
(ほぼ引用: https://github.com/nextcord/nextcord?tab=readme-ov-file#quick-example)
これだけといえばこれだけです.簡単でしょ?
もし,DiscordBOTを作る気になったなら以下のアドベントカレンダーがおすすめですよ.(隙有宣伝)
それではあなたも
Python+nextcordでDiscordBOTを作ってみてはいかがでしょうか.難しくなくてちょうどいいですよ.