MENU

【discord.py bot 制作 】会話するBOT Part7 ~時間帯によって違う反応するBOTを作ってみる~

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

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

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

目次

動機

ぼっとくんのオウム返しの挨拶はあまりに味気なくてさみしくなってきました。

起きる時間や寝る時間は時間帯によって意味合いも少し変わってくるので時間帯に合わせて挨拶を変更できたらいいなと思い改良していきます。

\ 前回の記事 /

動作環境

windows11

discord.py Version: 2.1.0

python 3.10

Visual Studio Code

動作コードの例

import discord
import datetime
import pytz

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():
        time = datetime.datetime.now(pytz.timezone('Asia/Tokyo'))
        if 8>(time.hour)>4:
            await message.channel.send("おはよう!\nいい朝だね!!!")
        if 12>(time.hour)>8:
            await message.channel.send("おはよう!\nゆっくりねれた?!")
        if 18>(time.hour)>11:
            await message.channel.send("おはよう…の時間じゃないねw\nこんにちは!")
        if 25>(time.hour)>17:
            await message.channel.send("聞いて驚け!\nいまは夕方なり!!!")
        if 5>(time.hour)>0:
            await message.channel.send("まだ寝てていい時間だよ\nゆっくりおやすみ")

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

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

実験時の時刻が午前1時だったため0時~5時の返答が返ってきています。

コードの解説

        if 8>(time.hour)>4:
            await message.channel.send("おはよう!\nいい朝だね!!!")

上の段で時間に条件を付けます。time.hourはその名の通り現在時刻の時間の部分を抜き出し時間を設定しています。

今回は8より小さく4より大きい、つまり5.6.7の時に動作します。

補足

・時間の指定の仕方 その1

if 8>(time.hour)>4:
if 4<(time.hour)<8:
if 5<=(time.hour)<=7:

上記3つのコードは同じ時間を指します。実際に動作をする時間は5:00~7:59です。

等号、不等号で指定できる時間が変動するため注意しましょう!

・時間の指定の仕方 その2

if 18<=(time.hour)<=24
 処理1
if 0<=(time.hour)<=7
 処理1

if 18<=(time.hour)<=24 or 0<=(time.hour)<=7
 処理1

上記二つのコードも同じ意味となる。間を開けて同じ動作をしたい場合や、日付変更線を超える場合は2つ目の方を使用するとコードがすっきりする。

2つ以上の条件設定を行う場合は or を使用して1行でかいてみよう!

サンプルコード

#取得
import discord
import datetime
import pytz

#定義
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 "おはよ" in message.content.lower():
        time = datetime.datetime.now(pytz.timezone('Asia/Tokyo'))
        if 8>(time.hour)>4:
            await message.channel.send("おはよう!\nいい朝だね!!!")
        if 12>(time.hour)>8:
            await message.channel.send("おはよう!\nゆっくりねれた?!")
        if 18>(time.hour)>11:
            await message.channel.send("おはよう…の時間じゃないねw\nこんにちは!")
        if 25>(time.hour)>17:
            await message.channel.send("聞いて驚け!\nいまは夕方なり!!!")
        if 5>(time.hour)>0:
            await message.channel.send("まだ寝てていい時間だよ\nゆっくりおやすみ")

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

今回は時間帯によって違う反応するためのコードでした。参考になれば幸いです。

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

間違っているところや、より良いコード等ありましたら教えていただけると嬉しいです。

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

コメント

コメントする

目次