どうもこんにちは、いろぱずというものです。今回は、discordに搭載されているbotをつかって色々遊んで開発してまいりましたので、その行ったことを記事にまとめようと思います。
開発環境
+VScode
+python
+py-cord
VScodeとpythonの開発環境はは実装済みと勝手に決めつけて
まずは、py-cordの開発環境です。VScode内のターミナルで以下のように入力します。
pip install py-cord
ここは人によって違うと思いますが、私はこの方法で行けました。
その次に、適当な.pyファイルを作成します。(私はdiscordbot.pyで作りました。)
ここまで終わったら、次にbotを作成しますが、こちらのサイトが分かりやすかったのでご参照ください。
こちらで設定等おわりましたら、いよいよ書き込んでいきます!
作った.pyに書き込む
まずは起動確認とHello Worldを出そう
まずは、1行目にこちらを入力します。
1 import discord
こちらの入力により、discordモジュールを使用できるようになります。
次に、トークンというものを設定します。トークンとは、誰のbotであるかを判別するIDみたいなものです。逆に言えば、これを知られてしまった場合、そのbotを誰でもあつかえるということになります。絶対に誰にも教えないでください。 以下のように入力します。
2
3 TOKEN = ##自分のトークンを入力
4
botが何の操作を行うことができるかの権限を設定します。よくわからない人はとりあえず下のように打っておけばOKです。
5
6 bot = discordBot(intents = discord.Intents.all())
7
次に、botが起動したときにお知らせするために、ターミナルに文字を出力するようにします。
8
9 @bot.event
10 async def on_ready():
11 print("botが起動しました!")
12
これで一旦動かしてみましょう...と言いたいのですが、動かすためのコマンドをまだ未入力です。
以下のように打つことで動かすための準備ができます。
13
14 bot.run(TOKEN) ##TOKENを取得して動かす
15
これで、準備は完了です。動かしてみましょう!
動かすときはターミナルに次のように打ち込みます。
python ##自分の.pyファイル 私の場合はdiscordbot.py
これで動きます!起動すると"botが起動しました!"という表示がターミナルに出力されます!
次に、ある文字を入力した際にHello World と出すプログラムを作成しましょう。
13行目から書いていきます。
12
13 @bot.event
14 async def on_message(message: discord.message)
15 if message.author.bot:
16 return
17 if message.content == "/hello":
18 await message.channel.send("Hello World")
19
これで起動してみましょう!botが入っているサーバーで/helloと入力すると"Hello World"と返ってくるはずです!
ガチャシステムを作ってみよう
次に、ガチャシステムを作ってみたいと思います。pythonにはrandomモジュールがあり、それを利用して書いていきます。
モジュールの追加
1行目に加えて、以下のように記述します。
1 import discord
2 from discord.ext import commands
3 import random
2行目のものはのちに出てくる@bot.commands を動かすために必要なモジュールですので、忘れずに記入ください。
リストの作成
ここでは、自分がガチャで出したいものを記入していきます。
(確率等々もいじれますが、説明が難しくなるので今回は割愛します。)
以下のように書きます。
10 gatya_list = ["1", "2", "3", "4", ]
11 ## 1,2,3,4には、自分が入れたいガチャの中身を入力、増やしたい場合は単語ごとに ","で区切る
これで、中身の作成が完了しました。
コマンド作成
さて、いよいよコマンドを作っていくわけですが、今回は数指定もしたいので、@bot.command を使います!
24
25 @bot.command(description = ##説明を入力 )
26 async def gatya(ctx: discord.ApplicationContext, number: str)
27 try:
28 number = int(number)
29 except:
30 await ctx.respond("数字を入力してください")
31 if number < 1:
32 number = 1 ##0連やマイナスなどの対策
33 if number > 10:
34 number = 10 ##11連以降は10連にする
35 while number >= 1:
36 await ctx.respond(random.choice(gatya_list)) ##gatya_listから一つランダムで取得して返す
37 number -= 1
38
これで、ガチャの処理が完成しました!起動して、実際に動かしてみましょう!
終わりに
しめくくり
今回は、discordbotをpythonで作成してみました。discordはゲーム通話などによく使われるイメージが多いですが、そのときに欲しい機能をいろんな機能を使うことで実現することができます。ぜひ皆さん作成してみてください!
以下、雑談
今回が記事作成初めてなのですが、難しかった...
これを応用してとある人の迷言をガチャで出るようにしましたが、意外と評判でした。
頑張ればゲームも作ることができます。ぜひやってみてください。