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

Сегодня хочу представить свой проект - бот для Telegram - HappySecretSantaBot, который позволяет найти своего персонального Санту.

В закладки
Аудио

Всем привет, меня зовут Игорь, мне 22 года, я из Одессы, люблю создавать чат-ботов, и год как работаю веб-девелопером. В школьные времена (а точнее, в 2013 году), я наткнулся на статью на Хабре, которая в своё время дала толчок на создание моего бота, о котором я расскажу сегодня тут. В той статье рассказывали о своей тусовке. Это было так: сайт, на котором можно найти случайного Санту, люди регистрируются, предоставляют свои данные, и им в обмен на это дают данные другого человека, для которого уже Вы будете являться Сантой. Вы должны пойти на почту, указать адрес незнакомого человека, прислать какой-то подарок (пусть даже и символический). На то время мне это показалось нереально прикольно, потому что в те года это очень неплохой плюсик новогодней атмосфере придавало (может я странный). Также, на прошлый Новый Год у нас на работе сделали также Секретного Санту, каждый из шапки вытянул имя того, кому будет дарить подарок. По-моему такие события это реально круто в преддверии самого светлого праздника.

@HappySecretSantaBot был запущен мною вчера, 1 декабря, и хочется немного рассказать собственно о нем: когда человек заходит впервые в бота, бот рассказывает о себе вкратце, и объясняет правила. Есть два режима: одиночный и командный.

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

В командном режиме бот сразу запрашивает только ФИО, и вишлист (никакого сбора инфы в этот раз). После этого, пользователь может создать комнату, или присоединиться к существующей. Как это работает: допустим, Вы с коллегами в офисе захотели поиграть в Секретного Санту и в преддверии Нового Года сделать друг-другу подарок. Один из пользователей создает комнату, и в обмен получает номер комнаты, по которому могут присоединиться остальные коллеги. Когда Вы готовы играть (и в комнате как минимум больше одного человека), лидер (создатель) комнаты должен написать /play. После этого, бот присылает каждому участнику письмо о том, что ему нашелся Санта, и присылаего его имя (ФИО), и вишлист, который указал человек ранее.

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

В течение беседы с пользователем, бот старается отвечать стикерами и смайликами с Сантой.

А еще, раз в месяц, бот напоминает Сантам какие еще не отправили подарок, что пора поторопиться бы, ибо праздник на носу :)

Из потраченных инвестиций: заплатил фрилансеру 1000 руб, чтобы он нарисовал рисунок, какой я прикрепил в самом верху, на сервер потратил примерно столько же, и взял выходной на работе, чтобы успеть первого числа сделать релиз :)

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

Вы тоже можете рассказать о своём проекте, как автор этого материала. Соберите побольше информации — и публикуйте материал в подсайте «Трибуна».

Материал опубликован пользователем.
Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Igor Volokitin", "author_type": "self", "tags": ["\u0447\u0430\u0442_\u0431\u043e\u0442\u044b","\u0431\u043e\u0442\u044b_\u0442\u0435\u043b\u0435\u0433\u0440\u0430\u043c","secret_santa_telegram_bot","secret_santa","secrethappysantabot","chat_bots_community"], "comments": 40, "likes": 71, "favorites": 53, "is_advertisement": false, "subsite_label": "tribuna", "id": 52272, "is_wide": false, "is_ugc": true, "date": "Sun, 02 Dec 2018 20:36:23 +0300", "is_special": false }
0
{ "id": 52272, "author_id": 92252, "diff_limit": 1000, "urls": {"diff":"\/comments\/52272\/get","add":"\/comments\/52272\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/52272"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199116, "last_count_and_date": null }
40 комментариев
Популярные
По порядку
Написать комментарий...
8

Ю мейд май дей. Ты молодец, парень!
Люди, пишите здесь, поднимайте в топ его!

Ответить
2

Спасибо))

Ответить

Комментарий удален

2

"my day" и "mayday"

Ответить
2

О отлично как раз задумались на работе о проведении, оч полезно

Ответить
1

Проект классный, и я даже в нем участвуют. Но есть НО: парниша, которому я пошлю подарок, просит колонку или электронную книгу, а я попросила открытку с новогодним пожеланием или книгу, которая нравится моему Санте. Может какую-то максимальную стоимость подарка установить? А то такое знаете.
Надо было писать лего замок хогвартс, если вы понимаете о чем я 😅😁

Ответить
1

Тот парниша это я:) и я буду рад любому подарку) главное весь этот движ:) и можно же найти альтернативу допустим электронной книги на обычную:)

Ответить
1

Интересует 2 вопроса:

1) Если в комнате нечетное количество игроков, и каждому создается пара, получается, кто-то 1 не получит подарка? Или кто-то отправит и получит сразу 2? Как данную ситуацию разруливает бот?

2) Не боитесь ли вы пользователей, которые будут участвовать, получать подарки, но при этом не отправлять их взамен? Как планируется регулировать данный кейс?

Ответить
0

1. Позавчера (1 декабря) как запаблишил, изначально было, что обязательно только четное количество игроков, и это было обязательным условием. Однако, потом мне подсказали, что количество игроков может быть любое, подарки дарятся по кругу внутри комнаты.
Пример: есть в комнате Вы, я, и Василий.
Василий дарит подарок мне, я дарю Вам, а Вы - Василию.
Все при подарках )
2. Не боимся, потому что ни чему нельзя верить) Ездить и вычисялть по IP не будем, тут как и везде в версиях "Секретного Санты" - на честное слово (а иначе то как?)

Ответить
1

Просто генерируй перестановку без переходов элемента в себя

Ответить
0

Комментарий удален по просьбе пользователя

Ответить
1

Чёт ничего не понял, но я из тех кто пробует 👻

Ответить
1

1. Позавчера (1 декабря) как запаблишил, изначально было, что обязательно только четное количество игроков, и это было обязательным условием. Однако, потом мне подсказали, что количество игроков может быть любое, подарки дарятся по кругу внутри комнаты.
Пример: есть в комнате Вы, я, и Василий.
Василий дарит подарок мне, я дарю Вам, а Вы - Василию.
Все при подарках )
2. Не боимся, потому что ни чему нельзя верить) Ездить и вычисялть по IP не будем, тут как и везде в версиях "Секретного Санты" - на честное слово (а иначе то как?)

Ответить
1

Good Project!

Ответить
1

Огромное спасибо! Настоящий подарок на НГ))))

Ответить
–19

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

Ответить
4

На чем?)) даже намека на деньги не было в самом боте, и всегда делаю все не на материальной основе

Ответить
0

Чет не работает х(

Ответить
1

Привет)
Ну, как обычно, когда покажешь что-то своё, нужно припозориться, в том плане что оно скоро упадёт)
Бота починил, нужно по новой к нему /start нуться) спасибо

Ответить
0

Тоже самое и у меня

Ответить

Комментарий удален

0

Пушка

Ответить
0

Добавьте Узбекистан и к вам польётся огромный трафик. Если хотите, могу помочь даже с переводом.

Ответить
0

Игорь, написал в телегу

Ответить
0

Спасибо, все работает :) Оч крутая штука

Ответить
0

на чем бэкенд?

Ответить
0

пых 7 + мускул

Ответить
0

Как-то сложно что ли:) Не слишком интровертно:) Лучше было бы сделать заказ через какой-то сайт, оплатить доставку и подарок и уже сайт занимается доставкой. Даже если это совершенно какой-то левый интернет магазин. Это было бы значительно проще, чем еще и заниматься покупкой, доставкой подарков. Неужели такого ресурса еще нет?

Ответить
0

Бот -- огонь! Развлекаловка, но видно, что вложено немало сил и продуманность по сценариям, копирайтингу и дизайну отличная.

Ответить
0

Интересный проект😎

Ответить
0

хорошая попытка, военком)

Ответить
0

Можно ли сказать "Великолепный чат-бот", если после запуска видишь такое объявление:
Проводятся технические работы, моем оленей и готовим подарки ;)
возвращайтесь ко мне 4 декабря
хо-хо-хо

Конечно! Даже в таком состоянии поднимает настроение!😁 😁 😁

Ответить
0

Я, наверное, ошиблась, перешла не в тот бот

Ответить
0

Не пугайте)

Ответить
0

Нда, народ в подарках не стесняетцо....

Ответить
0

Подобрал человека без данных, а теперь поменять его я не могу((( как поменять человека??

Ответить
0

Молодец,идея супер!Успехов тебе

Ответить
0

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

Ответить
0

Никто и не знает кто является его Сантой. Человеку говорится «мы нашли вам санту. Кстати, а вот инфа для того, для кого вы будете сантой» :)

Ответить
0

Игорь, ссылка на твой фейсбук, к сожалению не работает, поэтому придется тут комментом.
Мне пришел подарок! От незнакомого мне человека! Моему удивлению не было предела. И отсюда возникает некоторое пожелание на расширение функционала:
Боту не хватает функционала, позволяющего отправить фидбек тайному санте. То есть мне пришла посылка, я отметил что пришла, и написал тому человеку, свою благодарность и теплые пожелания к новому году. Можно даже контактные данные в соц сетях отправить, и если на том конце, неизвестный мне человек, захочет пообщаться уже там дальше соориентируется, найдет меня и мы пообщаемся.
А сейчас, к сожалению, я не могу никому сказать свое спасибо или как-то попытаться связаться с тем человеком.
Еще есть недочет у бота: то ли это баг, то ли человек не написал свои пожелания, но тот для кого я тайный санта не имеет списка пожеланий. И не понятно что ему дарить, какой у него возраст, какое у него положение дел. Может это 45-летний дядька и его совершенно не зацепят подарки для молодых людей. Может он живет в элитных апартаментах, и подарок в виде каких-нибудь обычных наушников совершенно не удивит получателя и нужно искать что-то более экстравагантное. То есть тут нужно от человека выцеплять больше инфы, чтобы подарок подобрать лучше, и конечно, пустое поле с пожеланиями пустое - это не дело, надо чтобы кто-то хоть что-то там вписал, чтобы можно было ориентироваться не только на ФИО и адрес, а на что-то еще. Хотя бы возраст! Это уже бы сильно помогло бы в выборе.

Бот оч крутой, совершенно не надеялся что мне кто-то что-то отправит. А мне не просто отправили, да еще прям смогли в точку попасть.

Ответить
0

И в догонку, непонятно как уведомить получателя о посылке. Например если ты отправляешь посылку с озона, надо хотя бы предупредить когда прибудет курьер, что не произошло «внезапностей».

Ответить
0

странно, что не работает фб. /i.volokitin
за пожелания - спасибо, исправим в декабре 2019 :)
приятно, что с помощью бота люди таки получают и отправляют подарки ))

Ответить
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovx", "p2": "glug" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Баннер в ленте на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "disable": true, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } }, { "id": 20, "label": "Кнопка в сайдбаре", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cgxmr", "p2": "gnwc" } } } ] { "page_type": "default" }