Бот на bash в консоли

Сидел я от скуки в консоли и игрался с lolcat, как вдруг пришла идея написать бота прямо в оболочке.
“Хмм” — подумал я и начал думать как это так интересно и легко реализовать. Недолго поразмышляв, я понял, что интеллект на bash не напишешь, по этому бот должен уже заранее знать ответы на вопросы которые я буду ему задавать.
“Ну и ладно” — сказал я и создал файлик bot-create.sh

touch bot-create.sh ; chmod +x bot-create.sh

И занес туда код, с помощью которого можно будет учить бота отвечать на вопросы:

#!/bin/bash

SETCOLOR_SUCCESS="echo -en \\033[1;32m"
SETCOLOR_FAILURE="echo -en \\033[1;31m"
SETCOLOR_NORMAL="echo -en \\033[0;39m"


echo "Create BOT..."
echo "_____________________________Create:"

touch ./base.txt
if [ $? -eq 0 ]; then
$SETCOLOR_SUCCESS
echo -n "[Создание файла бота] $(tput hpa $(tput cols))$(tput cub 6)[OK]"
$SETCOLOR_NORMAL
echo
else
$SETCOLOR_FAILURE
echo -n "[Создание файла бота] $(tput hpa $(tput cols))$(tput cub 6)[fail]"
$SETCOLOR_NORMAL
echo
fi

echo -n "Привет. Для обучения Бота напишите [Да] или [Нет] в нажмите Enter: "

read item
case "$item" in
Да|да|дА|ДА|YES|yes|Yes|yEs|yeS|YEs|YeS|yES|y|Y|lf|LF|lF|Lf) echo "Вы ввели «ДА», продолжаем..."
;;
НЕТ|Нет|нет|нЕт|неТ|нЕТ|НЕт|НеТ|No|no|nO|ytn|Ytn|yTn|YTN|ytN|YTn|yTN|YtN) echo "Жаль,завершаем..."
exit 0
;;
*) echo "Вы ничего не ввели. Молчание - знак согласия."
;;
esac

echo -e "Сейчас Вы будите учить Бота.\nОн Будет Вам предоставлять 100 заданий, а вы их будете выполнять. Удачи :)"

name=''
while [ "$name" = "" ]; do
echo -n "Введите Ваше имя: "
read name

if [ -n "$name" ]; then
echo $name > creator.ti
fi
done

clear
Yname=$(cat creator.ti)
echo -e "Привет, $Yname\nИ так, начнем..."

for n in {1..100}; do
way="base.txt"
que1=''
while [ "$que1" = "" ]; do
echo -n "Введите вопрос или предложение: "
read que1
if [ -n "$que1" ]; then
echo "Понял"
fi
done
que2=''
while [ "$que2" = "" ]; do
echo -n "Введите ответ на Ваш вопрос или предложение: "
read que2
if [ -n "$que2" ]; then
echo "Принято"
fi
done
echo -e "Спасибо. Теперь когда у меня будут спрашивать <<$que1>>, я отвечу <<$que2>>"
echo "Дальше..."
echo "$que1 # $que2 #" >> $way
done
clear

Как видно по строчке

echo "$que1 # $que2 #" >> $way

Вопрос и ответ записываются в файл base.txt через символ #. Это нужно для того
чтобы сделать поиск вопроса, который я буду спрашивать, а потом бот будет отвечать. Ну, логика такова.

Ну что ж. Нафигачил я более 13к строчек. Только я Вам его не отдам, потому что я его очистил нечаянно. Ну да ладно… Теперь создам файлик run.sh и запишу туда код:

while [ 1 ]; do 
dialog=''
while [ "$dialog" = "" ]; do
echo -n "Вы #>: "
read dialog
if [ -n "$dialog" ]; then
exit=$(grep "$dialog" "base.txt" | cut -f2 -d "#")
echo -e "$exit" >> cashe.txt
RCOUNT=`wc -l "cashe.txt" | cut -f1 -d" "`
let "number = $RANDOM % $RCOUNT"
qu=$(sed -n ${number}p "cashe.txt")
echo "bot #> $qu"
echo >> cashe.txt
rm cashe.txt
fi
done
done

Ну, и собственно запускаю run и начинаю говорить с ботом.

Так как файлик с моими ответами я профукал, писать его заново было лень. Нашел я какую-то базу в инете. Открыл, и логика там была та же. Только разделяли ответ и вопрос символом “\”. Пришлось в файле run заменить символ # на \ и все готово.

Но спустя время я понял что это всё полная фигня. Бот как бот, их тысячи. Чтобы по реально начать делать ИИ нужно понять и разработать алгоритм, который не просто будет сохранять данные, а думать и анализировать. Как пример, нужно для начала разбить “мозг” на несколько частей, например: интересы, емоции, вкусы и т.д. И для каждой части свой алгоритм, который будет взаимодействовать с общим алгоритмом, который уже и будет как бы мыслить… Но оно мне надо?))) Пока)

Кстати, а еще можно такую штуку сделать. Ставим озвучку текста:

sudo apt-get install festvox-ru

И перед выводом сообщения в скрипте run дописываем команду:

echo "$qu" | festival --tts --language russian

И теперь наш бот будет еще и говорить)))
Правда очень стрёмно…