Трибуна Igor Volokitin
5 478

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

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

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

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

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

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

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

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

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

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

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

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

#боты_телеграм #чат_боты #secret_santa #secret_santa_telegram_bot #secrethappysantabot #chat_bots_community

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

Написать
{ "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": 35, "likes": 68, "favorites": 54, "is_advertisement": false, "subsite_label": "tribuna", "id": 52272, "is_wide": false, "is_ugc": true, "date": "Sun, 02 Dec 2018 20:36:23 +0300" }
{ "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, "possessions": [] }

35 комментариев 35 комм.

Популярные

По порядку

Написать комментарий...
8

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

Ответить
2

Спасибо))

Ответить
0

А почему сигнал бедствия?

Ответить
2

"my day" и "mayday"

Ответить
3

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

Ответить
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

пых 7 + мускул

Ответить
0

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

Ответить
0

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

Ответить
0

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

Ответить
0

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

Ответить
0

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

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

Ответить
0

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

Ответить
0

Не пугайте)

Ответить
0

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

Ответить
0

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

Ответить
0
{ "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": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "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, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Голосовой помощник выкупил
компанию-создателя
Подписаться на push-уведомления
{ "page_type": "default" }