占い、返事機能付きBOTプログラミング DiscordBOT
さあいよいよプログラムを書いていきます!
今回紹介するのは「占い」と送るとBOTから大吉から大凶までの占いをしてくれる機能と「おはよう」と送ると「Hello world!!」と返ってくる返事機能、オウム返し機能です!
*BOTからのレスポンス速度はローカルで動かしているならばWIFIの通信速度に依存します
https://note.mu/kenshoaka113/n/nd6bbdf4d8a4c
https://note.mu/kenshoaka113/n/n3ef38d09e8db
*最初に紹介した記事のツール等をインストールしてあるていで話を進めます
今回だけ話しておくことがあります
ここに記載されているトークンはBOTを判別するためのもので毎回必ず使いますので、毎回コピーしに行くのが面倒であればメモしておきましょう
それでは、まずは返事機能からです
*テキストエディタはAtomを使用しています
Atomを起動しNew Fileで新しいFileを作ります
*pythonでは#の後にコメントが書けます、メモなどに使いましょう!
###ここからプログラム###
import discord #discordでBOTを使うのにこれが必ずいる
client = discord.Client()
@client.event #BOT起動時にCMDに表示される部分で無くてもよい
async def on_ready():
print('Logged in as')
print(client.user.name)
print(client.user.id)
print('------')
@client.event
async def on_message(message): #メッセージを受け取る関数なので必ず必要
if message.content == "おはよう":
#:(コロン)を忘れずつけよう!Enterを押すと自動で改行されるよ!
await client.send_message(message.channel, "Hello world!!")
# この***に自分のトークンを書き替える
client.run('*******************')
ここまで出来たら保存してcmd(コマンドプロンプト)を開きます
保存先はどこでもいいですが、なるべく一か所に保存するほうがAtomでの作業もしやすいのでおすすめです
僕はローカルディスクのCにpyフォルダを作ってそこに保存しています
保存するファイル名は???.pyのようにファイル形式をpyとしてください
起動するコマンドは
python 保存したファイル名.py
BOTを起動するときにPATHが通ってないとエラーがでますので、pythonまで書いたらファイルをドラッグしましょう
ファイル名が.pyで保存されてないと起動できないのでそこも注意です
このようなレスポンスがこれば起動完了です!
早速ためしてみましょう
ここまで出来たらBOTの導入は成功です!
ここからはプログラムを書き換えていろいろ試していきましょう!
では次へ!
次はこのBOTに占い機能をつけましょう
この機能にはrandomモジュールが必要になるので、cmdから
pip install random
と、コマンドを入力してインストールしてください
import random
と一番上のimport discordの次の行に書きます
if message.content == "占い":
#レスポンスされる運勢のリストを作成
unsei = ["大吉", "中吉", "吉", "末吉", "小吉", "凶", "大凶"]
choice = random.choice(unsei) #randomモジュールでunseiリストからランダムに一つを選出
await message.send_message(message.channel, choice) #結果を出力
次の行に書き込みます
全体コードは
import discord ##discordでBOTを使うのにこれが必ずいる
import random ##運勢リストからランダムに出力するために必要
client = discord.Client()
@client.event #BOT起動時にcmdに表示される部分で無くてもよい
async def on_ready():
print('Logged in as')
print(client.user.name)
print(client.user.id)
print('------')
@client.event
async def on_message(message): #メッセージを受け取る関数なので必ず必要
if message.content == "おはよう": #:を忘れずつけよう!Enterを押すと自動で4文字分あけて改行されるよ!
await client.send_message(message.channel, "Hello world!!")
if message.content == "占い":
#レスポンスされる運勢のリストを作成
unsei = ["大吉", "中吉", "吉", "末吉", "小吉", "凶", "大凶"]
choice = random.choice(unsei) #randomモジュール使用
await message.send_message(message.channel, choice)
# この***に自分のトークンを書き替える
client.run('*********')
となります!
cmdを一度終了してBOTを起動しなおし、試してみましょう
こんな感じなりましたでしょうか?
さあ長くなってしまいましたが次で最後です!
最後はオウム返しBOTなのですがとても簡単です
しかし注意点もありますのでしっかりよんでくださいね!
@client.event
async def on_message(message): #メッセージを受け取る関数なので必ず必要
if message.author.id != client.user.id:
await client.send_message(message.channel, message.content)
コードはたったこれだけです!
注意点が、文末の
message.content
です
これはなにかというと送られたメッセージを意味します
これのどこが注意しないといけないのかと思いますが全てのメッセージに反応してしまいます
なので、今回書いたプログラムのおはようや占いと同じファイルに書いてしまうとおはように反応してHello world!!とオウム返しのおはようの両方のレスポンスがきてしまい大変なことになります
ですので、オウム返しBOTにするならばこの機能だけで作ることをおすすめします
あ、最後に一つインデントには気をつけましょう!
長々と書いてしまいましたが、最後まで読んでいただきありがとうございました!!