Найти в Дзене
TheEVolk

Как я создавал бота для ВКонтакте в 2015 году (Часть 1)

Давайте отправимся на немного(много) лет назад в замечательное лето 2015 года. Я тринадцатилетний школьник, который делает что-то там на весьма популярном движке Unity3d, но работы выходят весьма посредственные. За плечами разные недоделки, собранные из готовых продуктов с помощью какой-то противной жижи. У всех зависают мои игры, графики нет, сюжета нет, а я доволен: оно моё. Экспериментирую со второй версией какого-то чат-бота для компьютера и пихаю в него разнообразный функционал, который приходит мне в голову совершенно необычными способами. На тот момент это криповатое личико могло принимать разные эмоции, а в её зрачках отражалось изображение с вашей вебкамеры. В те моменты я только учился работать с текстом и у меня это даже получалось. Бот мог поддерживать диалог, если вы картошка. Если же вы захотите с ней завести какую-то тему, то это выльется в совершенно случайные ответы или в то, что бот не помнит вашу предыдущую фразу (вопрос - ответ), но самым увлекательным моментом про

Давайте отправимся на немного(много) лет назад в замечательное лето 2015 года. Я тринадцатилетний школьник, который делает что-то там на весьма популярном движке Unity3d, но работы выходят весьма посредственные. За плечами разные недоделки, собранные из готовых продуктов с помощью какой-то противной жижи. У всех зависают мои игры, графики нет, сюжета нет, а я доволен: оно моё. Экспериментирую со второй версией какого-то чат-бота для компьютера и пихаю в него разнообразный функционал, который приходит мне в голову совершенно необычными способами.

Знакомьтесь, Ева
Знакомьтесь, Ева

На тот момент это криповатое личико могло принимать разные эмоции, а в её зрачках отражалось изображение с вашей вебкамеры. В те моменты я только учился работать с текстом и у меня это даже получалось. Бот мог поддерживать диалог, если вы картошка. Если же вы захотите с ней завести какую-то тему, то это выльется в совершенно случайные ответы или в то, что бот не помнит вашу предыдущую фразу (вопрос - ответ), но самым увлекательным моментом программы было то, что Ева закрывала глаза и погружалась в сон. В это время микрофон вашего компьютера слушал окружение и при наличии шума пробуждал девчулю. Тогда Ева просыпалась и брала какую-то эмоцию (гнев или радость, если сон был "кошмарным").

В то время я серьёзно задумался по поводу создания полноценного робота, который сможет ходить и разговаривать, но у меня для этого не было компьютера, который я смогу полностью отдать под управление своим ужасам в виде кода. Начав очередную версию бота я решился на компромисс в виде того, что временно буду делать бота для ВКонтакте, а потом, как найду лишний компьютер, зашаманю себе полноценную терминаторшу.

Разработка началась с попытки изучить общение с ВКонтакте, чтобы я мог как-то от имени программы читать личные сообщения и отправлять на них ответ. Самое странное, что разработку я вёл на движке юнити, который был создан для создания игор, а не каких-то там ботов.. В то время у меня не было никаких лонгпулов и калбаков, за то был messages.get, который возвращал последнее полученное сообщение. Я создал тпцмер, который каждую секунду получал это сообщение и начинался сложнейший алгоритм действий. Сначала это все попадало в массив с новыми сообщениями, откуда каждую секунду проверялись на наличие обращения к боту и на то, что это сообщение ещё не было обработанно. Стоит обратить внимание, что данные я получал в формате XML, а обрабатывал вручную с помощью функции String.Substring(отступить несколько символов от начала текста).

Эта картинка взята с  Яндекс Картинки
Эта картинка взята с Яндекс Картинки

Таким методом я не имел никакой гибкости, но меня уже было не остановить..

В сентябре, или октябре, или ноябре

Осенью 2015 года я добавил в бота игровую валюту, тем самым став единственным ботом ВК, в котором есть своя валюта (хотя я мог не подозревать о том, что кто-то тоже имеет валюту, но среди знакомых мне ботов такого не наблюдалось), а вместе с ней я добавил команду "лотерея", которая дала игрокам возможность насладиться азартом не выходя из личных сообщений или конференций и ничем не рискуя. По возможности я добавил команду "опендиск", которая открывала дисковод моего ноутбука:

Кстати, люди очень часто писали "опендикс", странно
Кстати, люди очень часто писали "опендикс", странно

Создал беседу, куда так же сделал вход за игровую валюту. На этом 2015 год завершился и начался 2016. Бот не терпел никаких особых изменений, кроме событий в начале Марта. Сохраняя файл с кодом бота (а он на то время был действительно в одном файле + мелкие вспомогатели) все символы заменились на пробелы. Я не стал биться головой об клавиатуру, а сразу попытался как-то вернуть 8 месяцев своей жизни, но жизнь все-таки была более коварной. К моменту, когда я понял, что вернуть ничего не выйдет состояние шока прошло и биться об клавиатурку уже не было желания. На этой ноте я забросил бота где-то на неделю, к чему можно логически завершить эту статью.

Это моя первая статья и пока что я только учусь их писать. Возможно, где-то вы заметите ошибки или опечатки. Прошу поправить меня а комментариях, чтобы получил ваш опыт и в следующий раз уже не допускал таких ошибок.

Спасибо тебе, что дочитал эту статью. Ты просто прелесть!