HappySecretSantaBot — Телеграм бот для игры «Тайный Санта»

Привет, хаброжители!

bnq0rth_z9f4mrq3z_64x9x2bkg.png

Немного истории


Когда я был еще школьником, я открывал периодами Хабр, и одна из статей которая мне на то время запомнилась — была Клуб анонимных Дедов Морозов 2013 — 2014. На то время мне показалось одной из самых крутых идей организовывать такие акции, где ты можешь побывать в роли Деда Мороза для совсем незнакомого человека, и в то же самое время получить подарок от такого же совсем незнакомого человека. После данного хабропоста я узнал что такое вообще существует, что в принципе и дало в дальнейшем толчок на написание этого бота.

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

Так вот, захотелось мне перейти с VK (что там ловить собственно уже?) в Telegram, по-скольку наслышан о том, что это отличнейшая платформа для ботов. И конечно же, для того, чтобы сделать бота — нужна идея. Идея пришла практически сразу, потому что близится Новый Год, и бот в виде «Секретного Санты» не распространенная вещь в Telegram, а желание написать его было еще давно. Просто в виде сайтов, как по мне, не имеет смысла этого делать, потому что таких сайтов пруд пруди. И в периоде какого то время я сел читать документацию Telegram BOT API (т.к. был совсем незнаком, это мой первый проект на этой платформе), искал Open Source ботов на Github, смотрел как люди разрабатывают, какое-то время сел, расписал, как хочу чтобы это выглядело. Собственно дальше, хочу познакомить Вас со своим творением.

Как это выглядит сейчас


Встречает пользователя перед началом игры приветственное сообщение, в котором ему объясняется, что в игре есть два режима: одиночный и командный.

Одиночный под собой предусматривает то, что пользователь находит совершенно случайного Санту (в пределах его страны). Пользователь жмёт кнопку, что хочет найти совершенно случайного Санту, система регистрирует его, и каждый час ходит и объединяет в пары тех, у кого ее нет. В течение часа (если, конечно на этот момент есть пользователи с Вашей страны также без Санты) пользователю придет сообщение с данными о его получателе, а также о том, что Санта найден.

Командный дает право пользователям объединяться в комнаты. Это хорошо подойдёт тем, кто например в офисах, или в большой команде друзей хочет сделать друг-другу подарки. Один человек создает комнату в боте, бот даёт номер комнаты лидеру комнаты, по которому он может пригласить остальных людей. Люди вводят номер этой комнаты и попадают в неё. Для начала игры, в комнате должно быть четное количество пользователей, и лидер комнаты должен нажать /play. После этого, бот перемешает всех пользователей и каждому достанется его Санта, каждому человеку в комнате придёт личное сообщение от Бота, с данными, куда доставлять подарок. Покидать комнату нельзя, если пользователю уже достался Санта. Однако, комнату можно покинуть, если пользователь еще не получил Санту. Лидер (создатель) комнаты не может покинуть комнату, если там есть хоть кто-то помимо него.

После старта игры, бот запрашивает у пользователя данные о его стране, городе, адресе, ФИО, вишлист (каждый пользователь может написать список желаний, к которому может прислушаться Санта). Дальше же, человек либо присоединяется к комнате, либо создает ее, либо находит случайного Санту вне комнат. После того, как Вы пришлете подарок на адрес Вашего получателя, необходимо нажать /sent (бот оповестит получателя, что Вы отправили посылку, и ждать осталось недолго). Когда Вам придет посылка, то Вы можете нажать /delivered (все эти команды есть в командах бота в навигации), и Вашему Санте придет уведомление, с «плюсом в карму и уважухой».

Бот раз в месяц также напоминает тем, кто еще не отправил подарок, что уже вот скоро Новый Год, и не нужно быть плохим Сантой, нужно поторопиться.

Ниже оставляю несколько скриншотов работы бота.

Парочка скринов бота


На чем реализовывал


На технической части вообще останавливаться не буду (возможно, тема другого поста), просто для заинтересованных назову, с помощью чего разрабатывал.

ЯП: PHP 7
СУБД: MySQL
SDK: Telegram BOT PHP SDK

Всех заинтересованных в боте — его можно найти в Telegram как @HappySecretSantaBot

Всех с первым днём зимы, отличного декабря, пишите ботов (это круто), и с «наступающим» Новым Годом!

© Habrahabr.ru