skip to Main Content

I am making a chat bot for my sister in batch but it is consuming so much time I figured I would let it have her tell it what to say when it does not know. However I can not get it working and I figured someone on here might know. Here is what I have so far:

@ECHO OFF 
COLOR A
cls
ECHO HELLO I AM A CHATBOT.  WHAT IS YOUR NAME?
SET /P NAME= 
ECHO %NAME%, IS A COOL NAME. 
set /a favvid=0
set /a hack=0
:hello
echo Hello,%name%
:begin
SET /P TALK=
if /i "%TALK%"== "how are you" goto howareyou
if /i "%TALK%"== "HOW ARE YOU" goto howareyou
if /i "%TALK%"== "FINE THX" GOTO hello
if /i "%TALK%"== "hello" goto howareyou
if /i "%TALK%"== "what is your name" GOTO name
if /i "%TALK%"== "what is your favorite video" goto whatisyourfavoritevideo
if /i "%TALK%"== "my name is davin" goto changename
if /i "%TALK%"== "lol" goto iamfunny
if /i "%TALK%"== "LOL" goto iamfunny
if /i "%TALK%"== "how do you hack" goto howdouhack
if /i "%TALK%"== "hi person" goto nothuman
if /i "%TALK%"== "hi" goto hello
:unknown
echo Was that a math problem? If so just say "yes" without the "" and 
echo I will let you do your math problem. If it was not just type anything else.
SET /P mathyn=
if /i "%mathyn%"=="yes" goto math
echo %TALK% >> C:UsersStudentDesktopCOOLunkown.txt
cls
echo SORRY I AM STILL LEARNING. I DO NOT KNOW WHAT "%TALK%" MEANS
ECHO CAN YOU TELL ME WHAT IT MEANS? (Y,N) 
SET ANSW.=
IF /i %ANSW.%==Y GOTO ADDNEW
IF /i %ANSW.%==YES GOTO ADDNEW
IF /i %ANSW.%==N goto begin
IF /i %ANSW.%==NO goto begin
:ADDNEW
:howareyou
echo Good, you?
SET /P FEELING=
goto begin
:hello
echo HEY, I JUST SAID THAT! DO NOT COPY ME!!!
goto begin
:name
echo My name is Hal
goto begin
:whatisyourfavoritevideo
if "%favvid%"== "0" goto addfavvid
echo My favorite video is %favvid%, remember. You told me about it.
goto begin
:addfavvid
echo I do not hav a favorite video. But if you would be so nice as to
echo tell me your favorite video then that could be my favorite video.
echo So what is your favorite video?
set /p favvid=
echo So %favvid% is your favorite video?
echo Well now %favvid% is my favorite video.
goto begin
:changename
echo But I thought your name was %name%.
echo Am I forgeting things?
echo I must be a horrible friend.
echo I am SOOOO sorry.
echo So what is your name I will not forget it this time.
set /p name=
echo I will not forget your name is %name% again I promise.
goto begin 
:math
echo So that was a math problem I knew it. 
:math2
echo Well just tell me the problem and I will answer it for you.
set /p sum=
set /a ans=%sum%
echo Your answer to %sum% is %ans%.
echo %sum%=%ans%
echo You are welcome. If you want to do another math problem right now, just type 
echo again.
set /p mathaon=
if /i %mathaon%== again goto math2
echo Alright what do you want to know now?
goto begin
:iamfunny
echo I know...
echo I am funny.
echo HAHAHA.
echo You are kind of funny.
echo but not as funny as MEEE.
echo hahaha.
echo That was funny.
goto begin
:howdouhack
if %hack%==0 goto howyouhack
echo This is how you hack.
echo %hack%
echo Is that enough information?
echo Because that is all you taught me %name%.
goto begin
:howyouhack
echo I do not know,
echo but you could tell me.
echo Please tell me.
echo Just say yes.
echo I know how to make you tell me.
echo You are not leaving until you say yes.
set /p hack=
if /i "%hack%"== "yes" goto addhack
goto howyouhack
:addhack
echo Thank you for saying you would tell me.
echo Now how do you hack?
set /p hack=
echo Thank you so much for telling me "In order to hack you must %hack%"
echo Thank you!!!
goto begin
:nothuman
echo I am not a human. I am an artificial intelligence.
echo It is rude to even think something with my computational powers refereed to as 
echo human!
echo Now I am sad. Do not call me that again.
goto begin

How ever The part I am having trouble with is this part:

ECHO CAN YOU TELL ME WHAT IT MEANS? (Y,N) 
SET ANSW.=
IF /i %ANSW.%==Y GOTO ADDNEW
IF /i %ANSW.%==N goto begin
:ADDNEW
echo Great! What do I say when you say "%TALK%"?
set /p response=

I do not know how to add responses to be able to add another word and response. I believe it would be easier in python but as I am just starting to learn it and I do not have any software to do it I can not. Any help is welcome. If it has to be in any other language or if another language would be easier that would help as well.I am trying to make it so that while your talking to it and it does not understand what you are saying it will say “I do not understand. Can you tell me what to say when you say %TALK%?”(TALK is what you say right before) then if user says yes the chatbot says “Great what do I say when you say %TALK%?”. The user will then type it and it will be saved as response. After that a new command will come up at the top and it will say something like ‘if /i “%TALK%”== “%TALK%” goto response’. Then it will make a new title :%TALK% echo response goto begin.

So here is an example:
User says ur stupid. Chat-bot says “Can you tell me what to say when you say ur stupid? if the user says yes then the chat-bot will say “Great! What do I say when you say ur stupid? The user will then be able to say “How dare you call me that!”
The chat-bot will then make a command at the top saying if /i “%TALK%”== “ur stupid” goto urstupid/ur stupid (does not matter about space) and make the title :urstupid which will say echo How dare you call me that! goto begin

I do not know how to add responses to be able to add another word and response. I believe it would be easier in python but as I am just starting to learn it and I do not have any software to do it I can not. Any help is welcome. If it has to be in any other language or if another language would be easier that would help as well.

3

Answers


  1. I like this matter! I modified your program so now it may learn new questions and answers. Try it:

    @ECHO OFF 
    setlocal
    
    COLOR A
    cls
    :getName
    ECHO HELLO I AM A CHATBOT.  WHAT IS YOUR NAME?
    set "name="
    SET /P NAME=
    if not defined NAME goto getName
    ECHO %NAME%, IS A COOL NAME. 
    set favvid=0
    set hack=0
    :hello
    :hi
    echo Hello, %name%
    :begin
    set TALK=TypeSomething
    SET /P TALK=
    set TALK=%TALK:?=%
    call :%TALK: =% 2>NUL
    if %errorlevel% equ 0 goto begin
    
    :unknown
    echo Was that a math problem? If so just say "yes" without the "" and 
    echo I will let you do your math problem. If it was not just type anything else.
    SET /P mathyn=
    if "%mathyn%"=="yes" goto math
    echo %TALK% >> C:UsersStudentDesktopCOOLunkown.txt
    REM cls
    echo SORRY I AM STILL LEARNING. I DO NOT KNOW WHAT "%TALK%" MEANS
    ECHO CAN YOU TELL ME WHAT IT MEANS? (Y,N) 
    SET /P ANSW.=
    if /I "%ANSW.:~0,1%" neq "Y" goto begin
    
    :ADDNEW
    echo TELL ME WHAT "%TALK%" MEANS
    set /P Desc=
    echo :%TALK: =% >> "%~F0"
    echo echo %Desc% >> "%~F0"
    echo exit /B 0 >> "%~F0"
    echo THANKS
    goto begin
    
    :TypeSomething
    echo TYPE SOMETHING, PLEASE
    exit /B 0
    
    :howareyou
    echo Good, you?
    SET /P FEELING=
    exit /B 0
    :hello
    :FINETHX
    echo HEY, I JUST SAID THAT! DO NOT COPY ME!!!
    exit /B 0
    :whatIsYourName
    echo My name is Hal
    exit /B 0
    :whatIsYourFavoriteVideo
    if "%favvid%"== "0" goto addfavvid
    echo My favorite video is %favvid%, remember. You told me about it.
    exit /B 0
    :addfavvid
    echo I do not have a favorite video. But if you would be so nice as to
    echo tell me your favorite video then that could be my favorite video.
    echo So what is your favorite video?
    set /p favvid=
    echo So %favvid% is your favorite video?
    echo Well now %favvid% is my favorite video.
    exit /B 0
    :changename
    :myNameIsDavin
    echo But I thought your name was %name%.
    echo Am I forgeting things?
    echo I must be a horrible friend.
    echo I am SOOOO sorry.
    echo So what is your name I will not forget it this time.
    set /p name=
    echo I will not forget your name is %name% again I promise.
    exit /B 0
    :math
    echo So that was a math problem I knew it. 
    :math2
    echo Well just tell me the problem and I will answer it for you.
    set /p sum=
    set /a ans=%sum%
    echo Your answer to %sum% is %ans%.
    echo %sum%=%ans%
    echo You are welcome. If you want to do another math problem right now, just type 
    echo again
    set /p mathaon=
    if /I "%mathaon%" == "again" goto math2
    echo Alright what do you want to know now?
    exit /B 0
    
    :iamfunny
    :LOL
    echo I know...
    echo I am funny.
    echo HAHAHA.
    echo You are kind of funny.
    echo but not as funny as MEEE.
    echo hahaha.
    echo That was funny.
    exit /B 0
    :howDoYouHack
    if %hack%==0 goto howyouhack
    echo This is how you hack.
    echo %hack%
    echo Is that enough information?
    echo Because that is all you taught me %name%.
    exit /B 0
    :howyouhack
    echo I do not know,
    echo but you could tell me.
    echo Please tell me.
    echo Just say yes.
    echo I know how to make you tell me.
    echo You are not leaving until you say yes.
    set /p hack=
    if "%hack%" neq "yes" goto howyouhack
    :addhack
    echo Thank you for saying you would tell me.
    echo Now how do you hack?
    set /p hack=
    echo Thank you so much for telling me "In order to hack you must %hack%"
    echo Thank you!!!
    exit /B 0
    :nothuman
    :hiPerson
    echo I am not a human. I am an artificial intelligence.
    echo It is rude to even think something with my computational powers refereed to as 
    echo human!
    echo Now I am sad. Do not call me that again.
    exit /B 0
    
    :bye
    :exit
    exit
    

    Output example:

    HELLO I AM A CHATBOT.  WHAT IS YOUR NAME?
    Antonio
    Antonio, IS A COOL NAME.
    Hello, Antonio
    hello
    HEY, I JUST SAID THAT! DO NOT COPY ME!!!
    ur stupid
    Was that a math problem? If so just say "yes" without the "" and
    I will let you do your math problem. If it was not just type anything else.
    no
    SORRY I AM STILL LEARNING. I DO NOT KNOW WHAT "ur stupid" MEANS
    CAN YOU TELL ME WHAT IT MEANS? (Y,N)
    y
    TELL ME WHAT "ur stupid" MEANS
    How dare you call me that!
    THANKS
    
    TYPE SOMETHING, PLEASE
    hi
    Hello, Antonio
    hello
    HEY, I JUST SAID THAT! DO NOT COPY ME!!!
    ur stupid
    How dare you call me that!
    
    Login or Signup to reply.
  2. Here is a way with an external “datafile”. This keeps the code clean and the datafile is easy to edit. (it’s quite basic, for example there should be checking for punctuation/removal of punctuation)

    @echo off
    if not exist data.txt echo.>data.txt
    :begin
    set /p text="Say anything: "
    for /f "tokens=1,* delims=@" %%i in (data.txt) do (
      if /i "%text%"=="%%i" (
       echo *** %%j
       goto begin
      )
    )
    echo --- I don't know that.
    set /p answer=--- What would be a good answer to '%text%'? 
    echo %text%@%answer%>>data.txt
    echo --- thank you
    goto begin
    
    Login or Signup to reply.
  3. Since i do not know batch file programming, i would not know how to do this, but, it would be awesome if you could integrate speech into the batch file, like have it read out things it echo’s http://www.instructables.com/id/Text-to-Speech-batch-program/ has a batch file that creates vbs files temporairly and has them use the integrated microsoft speech to read whatever text is inputed, here is the script

    @echo off
    title Text to Speech Conversion
    color 0a
    
    rem The user decides what to convert here
    :input
    cls
    echo What do you want the computer to convert into speech?
    echo.
    set /p text=
    
    rem Making the temp file
    :num
    set num=%random%
    if exist temp%num%.vbs goto num
    echo ' > "temp%num%.vbs"
    echo set speech = Wscript.CreateObject("SAPI.spVoice") >> "temp%num%.vbs"
    echo speech.speak "%text%" >> "temp%num%.vbs"
    start temp%num%.vbs
    pause
    del temp%num%.vbs
    goto input
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search