16

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

Хотите за вечер запустить бота и повеселить друзей игрой с геолокацией? Да нет ничего проще) Минимальные требования к пользователю: уметь запускать 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) и спрятать сокровище)

Дубликаты не найдены

+10

вторую часть не читал, но это что-то про закладки?

+1
Если не подозревать ничего противозаконного - очень интересно сыграть бы)
+1

геолокация, фото ? ..

как то давно кое кто из Украины такую же игру предлагал.. Ток фоткать там надо было мосты и шлюзы ...

0
Raspberry Pi для такого бота по ресурсам нормально вполне, но вот на домашнем интернете бот телеграмм теряет примерно 1 сообщение из 20-30, при том, что пинги достаточно маленькие и 100МБит (проверено на Ростелекоме и МТС). Ещё Raspberry Pi умудряется раз в несколько дней виснуть, причину не нашел, но грешу на скачки напряжения в сети. У меня для данных целей VPS в Европе, который по совместительству через VPN сидит в домашней сети и является домашним сервером и окном на заблокированные серверы
раскрыть ветку 3
0

у меня на RPi пачка ботов, невысоко нагруженных, конечно, но никто ничего не теряет и не виснет)

раскрыть ветку 2
0
Ну, то что виснет - это чисто моя проблема, либо зарядник начал сдаваться, либо в сети шум появился, раньше такой фигни не было, а вот потерю сообщений объясняю удаленностью от серверов телеграмм, всё-таки я из Сибири. Может быть, в европейской части России это не актуально.

Из дома:
~$ ping -c 3 api.telegram.org
PING api.telegram.org (149.154.167.220) 56(84) bytes of data.
64 bytes from 149.154.167.220: icmp_seq=1 ttl=45 time=106 ms
64 bytes from 149.154.167.220: icmp_seq=2 ttl=45 time=113 ms
64 bytes from 149.154.167.220: icmp_seq=3 ttl=45 time=111 ms

--- api.telegram.org ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 106.026/110.303/113.410/3.125 ms

VPS:
PING api.telegram.org (149.154.167.220) 56(84) bytes of data.
64 bytes from 149.154.167.220: icmp_seq=1 ttl=53 time=16.5 ms
64 bytes from 149.154.167.220: icmp_seq=2 ttl=53 time=16.4 ms
64 bytes from 149.154.167.220: icmp_seq=3 ttl=53 time=16.5 ms

--- api.telegram.org ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 16.429/16.491/16.535/0.155 ms
раскрыть ветку 1
0

Большое спасибо. Схоронил. Эффект баадера майнкрафта в действии

раскрыть ветку 1
0

пожалуйста;)

0

или еще какие-нибудь плюшки

Пиво. Халявное. В каждой точке. Ябвыдул.

0
Закладки и там про телеграмм было еще
0
Закладки плюс какая-то игра, некогда популярная, каких-то монстриков искать надо было
0

Товарищ майор, ну где вы, когда так нужны!:)

-1

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

раскрыть ветку 1
0

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

Похожие посты
Похожие посты закончились. Возможно, вас заинтересуют другие посты по тегам: