MENU

【discord.py bot 制作 】会話するBOT Part2 ~特定の言葉に対して反応するBOTを作ってみる~

この記事はdiscord.pyを使用したdiscordのbotの備忘録です。

実際に使用しているコードもサンプルコードとして掲載しています。

BOT作りの参考の一つになればいいなと思います。

目次

動機

個人製作botっていうだけですごく強そうでかっこいい。単純だけどとっても大事な理由。

コンセプトは常に楽しく、bot開発・改良する上で激励してくれる相棒。

前回作ったぼっとくんは言葉は返してくれるのは嬉しいけど、完全一致は少し面倒だなと感じたので文章中に含まれている言葉を読み取って反応してほしいと思い改良します。

\ 前回の記事 /

動作環境

windows11

discord.py Version: 2.1.0

python 3.10

Visual Studio Code

動作コードの例

import discord

intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)

@client.event
async def on_message(message):
    if message.author.bot:
        return
    if "おはよ" in message.content.lower():
        await message.channel.send("おはよう!")

@client.event
async def on_ready():
    print(f'{client.user} が起動しました。')
TOKEN = "botのTOKENを入力する"
client.run(TOKEN)

実際に動かしてみると下記のようになります。

コードの解説

    if "おはよ" in message.content.lower():

今回追加したコードはこちら!

 この部分で条件を設定!“おはよ”という言葉がメッセージに入っているか検知してくれます。

 つまり、“おはよ”の部分を変更すれば他の言葉に反応させることが可能になります。

問題のあったコード

    if "おは" in message.content.lower():
        await message.channel.send("おはよう!")

→”おはよ”以外にも”おはし”といった返したい言葉以外にも返答してしまう

返答したい言葉を明確にして条件を設定しましょう!

Botの醍醐味としてとらえるのであれば遊んでみるのもありですね!

補足

    if "emoji_1" in message.content.lower():
        await message.channel.send("じゃあああん!!")

応用すればサーバー独自の絵文字に反応することも可能に!

注意点はemoji_のままだと他に追加した絵文字にも反応してしまうため絵文字の名前を変更するのが◎!

サンプルコード

#取得
import discord

#定義
intents = discord.Intents.default()
intents.message_content = True
client = discord.Client(intents=intents)

#-----------------------
#on_message(message)
#-----------------------
@client.event
async def on_message(message):
    if message.author.bot:
        return
#返答 完全一致
    if message.content == "あ":
        await message.channel.send("正常に動いてるよ!")
#返答 部分一致
    if "おはよ" in message.content.lower():
        await message.channel.send("おはよう!")
    if "こんにち" in message.content.lower():
        await message.channel.send("こんにちは!")
    if "おやすみ" in message.content.lower():
        await message.channel.send("おやすみなさい!")
    if "emoji_1" in message.content.lower():
        await message.channel.send("じゃあああん!!")

#基本動作 
@client.event
async def on_ready():
    print(f'3. 2. 1. ぽかん !!{client.user} が 起動 した !!')
TOKEN = "botのTOKENを入力する" #コピペを行う際はここを変更する
client.run(TOKEN)

今回はBOTが特定の言葉を検知して反応してくれるためのコードでした。参考になれば幸いです。

自分もまだまだ発展途上ですのでぼっとくんと共に成長していければなと思います。

ご意見やアドバイス等ありましたらお待ちしております。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次