Своя геолокационная игра за вечер

Хотите за вечер запустить бота и повеселить друзей игрой с геолокацией? Да нет ничего проще) Минимальные требования к пользователю: уметь запускать python-скрипты.

Своя геолокационная игра за вечер Python, Игры, Воздух, Своими руками, Linux, Длиннопост

Идея


Мой друг — большой любитель искать какую-нибудь фигню. А я любитель кодить. Так почему не совместить приятное с приятным? Идея такая: запускаем бота, который проведет игрока по нескольким точкам города, показывая ему фотографии и заставляя искать указанные места. В конце — сундук с сокровищами, оплаченный обед в кафе или еще какие-нибудь плюшки.


Реализация


Во-первых, писать этого бота самому мне не пришлось, всего-то и надо было заяндексить «treasure hunt bot» — и готовое красивое решение на Python сразу нашлось. Красиво оно тем, что сразу понятно, как его допилить под свои нужды, в проекте использована самая популярная библиотека для работы с Telegram API, и код вполне красив.

Я сделал форк проекта, добавил возможность отправлять фото, исправил мелкие проблемы с совместимостью с третьей версией Python, создал конфигурационный файл с тестовыми игровыми шагами; все работает достаточно стабильно.


Запуск бота


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


Дальше скачиваем исходники и создаем конфигурационный файл config.json типа такого.


Параметры:

TOKEN_BOT — токен вашего бота (как его получить см. документацию).
authorized_users — список id пользователей, допущенных к игре
logging_user — id пользователя, которому бот будет отправлять лог событий игры

Сами стадии игры описываются в списке states, как видите я создал два тестовых «уровня», оба содержат фотографию (должна лежать в директории pic) и описание к ней, а также подсказку, координаты, которые игрок должен прислать, погрешность и сообщения для правильного и неправильного ответов. Поэкспериментируйте, и все сразу станет ясно)


Как же запустить бота? О, это чудовищно сложно: нужно убедиться, что в системе установлен Python 3, открыть командную строку в вашей ОС, установить единственный требуемый python-пакет:

$ pip3 install python-telegram-bot

Теперь можно перейти в каталог с ботом:

$ cd путь/к/боту

и запустить

$ python3 manage.py

Если вы никогда этого не делали, что ж, добро пожаловать в консольный мир, когда-то нужно начинать)


Ну а если вы захотите сделать из этого процесса демон, в репозитории уже лежит пример конфига для systemd. Как демонизировать скрипты в Windows я понятия не имею)


Вот и все, осталось только придумать интересные места, сфотографировать их, сохранить координаты (и записать это все в config.json) и спрятать сокровище)

Вы смотрите срез комментариев. Показать все
Автор поста оценил этот комментарий

Наркоторговцы придумали такую игру до вас. И не удивляйтесь, когда ваших "игроков" будут задерживать ППСП

раскрыть ветку (1)
Автор поста оценил этот комментарий

эм, моих точно не за что, не переживайте)

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку