LINEチャットボット

Lineチャットボット(小5男子/作)
チャットボットっぽく見せるための工夫がされていますね。ボットが先に質問し、ユーザに答えさせるという発想がいいと思います。


ユーザが先に質問し、それをボットが答えるにはエンジンが必要になります。アプリ開発編の講義まで終われば、チャットGPTのAPIを連結する方法が学べます。


GPT4のエンジンがあれば、最強のチャットボットが作れます。現時点で自分の持てる知識を最大限に使ったプログラムに敬意を表します。仕事するうえでそういうのって本当に大切です。


Pythonで記述したコード
import tkinter,pygame
#変数定義
i=5 #メッセージの座標を管理する変数
会話=0
秒数=0

#pygameの初期化
pygame.init()

#音声ファイルのアップロード
投稿音=pygame.mixer.Sound(file="sound\投稿音.mp3")
通知音=pygame.mixer.Sound(file="sound\通知音.mp3")

#関数定義
def 送信():
    global i,テキスト,会話
    i=i+35
    キャンバス.create_image(280,i+16,image=吹き出し) 
    送信メッセージ=tkinter.Label(ウィンドウ,text="",bg="#C3F69D",fg="black")
    テキスト=テキスト入力.get()
    送信メッセージ["text"]=テキスト
    送信メッセージ.place(x=215,y=i)
    会話=会話+1
    投稿音.play()
    テキスト入力.delete(0,tkinter.END)
    ウィンドウ.after(1000,受信)

def 受信():
    global i,テキスト,会話,秒数
    秒数=秒数+1
    if 秒数>40:
        秒数=0
    
    if 会話==1:
        i=i+35
        キャンバス.create_image(20,i+10,image=ボット)
        受信メッセージ=tkinter.Label(ウィンドウ,text="こんにちは。"+テキスト+"さん"
                              ,bg="#8cabd8")
        受信メッセージ.place(x=45,y=i)
        会話=会話+1
        通知音.play()
        
    if 会話==2 and 秒数==10:
        i=i+35
        キャンバス.create_image(20,i+10,image=ボット)
        受信メッセージ=tkinter.Label(ウィンドウ,text=テキスト+"さん"+"の好きな食べ物は?"
                              ,bg="#8cabd8")
        受信メッセージ.place(x=45,y=i)
        会話=会話+1
        
    if 会話==4 and 秒数==30:
        i=i+35
        キャンバス.create_image(20,i+10,image=ボット)
        受信メッセージ=tkinter.Label(ウィンドウ,text="私も「"+テキスト+"」が大好きです!"
                              ,bg="#8cabd8")
        受信メッセージ.place(x=45,y=i)
        会話=会話+1
        通知音.play()

    if 会話==5 and 秒数==30:
        受信メッセージ=tkinter.Label(ウィンドウ,text="「"+テキスト+"」の専門店を探します。"
                              ,bg="#8cabd8")
        
        i=i+35
        キャンバス.create_image(20,i+10,image=ボット)
        受信メッセージ.place(x=45,y=i)
        
        受信メッセージ=tkinter.Label(ウィンドウ,text="探したい場所を入力してください。"
                              ,bg="#8cabd8")
        i=i+30
        キャンバス.create_image(20,i+10,image=ボット)
        受信メッセージ.place(x=45,y=i)
        会話=会話+1

    if 会話==7 and 秒数==40:
        
        受信メッセージ=tkinter.Label(ウィンドウ,text="「"+テキスト+"」周辺に1件ありました。"
                              ,bg="#8cabd8")
        i=i+35
        キャンバス.create_image(20,i+10,image=ボット)
        受信メッセージ.place(x=45,y=i)
        キャンバス.create_image(175,450,image=地図)
        会話=会話+1
        通知音.play()
    ウィンドウ.after(100,受信)
    
#ウィンドウの作成
ウィンドウ = tkinter.Tk()
ウィンドウ.title("チャットボット")
ウィンドウ.geometry("350x600")
ウィンドウ.resizable(False,False)
ウィンドウ.option_add("*font",("メイリオ",11))

#画像アップロード
地図=tkinter.PhotoImage(file="image\地図.png")
吹き出し=tkinter.PhotoImage(file="image\吹き出し.png")
ボット=tkinter.PhotoImage(file="image\ボット.png")
背景画像=tkinter.PhotoImage(file="image\ライン背景.png")

#キャンバスの作成
キャンバス=tkinter.Canvas(ウィンドウ,width=350,height=550)
キャンバス.place(x=0,y=0)
キャンバス.create_image(175,275,image=背景画像)

#エントリー欄の作成
テキスト入力=tkinter.Entry(ウィンドウ,width=23)
テキスト入力.place(x=20,y=560)

#ボタンの作成
送信ボタン=tkinter.Button(ウィンドウ,text="送信する",font=("Calibri",12),command=送信,
                  bg="#30bf55",fg="white")
送信ボタン.place(x=250,y=560)

#最初のメッセージの作成
キャンバス.create_image(20,i+10,image=ボット) 
受信メッセージ=tkinter.Label(ウィンドウ,text="はじめまして。ロボ太です。",bg="#8cabd8")
受信メッセージ.place(x=45,y=i)
i=i+30
キャンバス.create_image(20,i+10,image=ボット)
受信メッセージ=tkinter.Label(ウィンドウ,text="あなたのお名前は?",bg="#8cabd8")
受信メッセージ.place(x=45,y=i)

ウィンドウ.mainloop()