Thursday, June 28, 2018

Хорошо посидели бот (часть 2)

Проблема

В первом посте был описан алгоритм "Хорошо посидели" бота. В данном посте будет описан интерфейс взаимодействия пользователя с ботом.


Зачем тут эта картинка? Люди могут тратить вместе деньги при организации пикника)


Интерфейс взаимодействия


1. Команда /start


Эта команда, с которой всегда начинается общение с ботом. При запуске бот отправляет сообщение пользователю:
"Привет! Это хорошо посидели бот. 😎

1️⃣ 
Бот помогает разобраться кто, кому и сколько должен после того как хорошо посидели.

2️⃣
Подразумевается, что суммарный счет делится поровну.

3️⃣
Все округления справедливо ложатся на плечи тех, кто заплатил меньше в начале. Подробный алгоритм тут: http://webdev2018.blogspot.com/2018/05/dereban-1.html

4️⃣
Есть вопросы и предложения? Наша команда:
@vadimcpp - программирование и маркетинг
@oleg - программирование

5️⃣
Нажмите кнопку «Новый расчет»
"

У пользователя есть возможность нажать одну кнопку «Новый расчет»

2. Команда «Новый расчет»


Бот отправляет сообщение пользователю:
"Введите имя первого участника"

Пользователь вводит имя.

Бот отправляет сообщение пользователю:
"Сколько денег потратил?"

Пользователь вводит сумму.

Бот рассчитывает сумму минимум между двумя людьми, поэтому...

Бот отправляет сообщение пользователю:
"Введите имя второго участника"

Пользователь вводит имя.

Бот отправляет сообщение пользователю:
"Сколько денег потратил?"

Бот отправляет сообщение пользователю:
"
Имя1 потратил: Сумма1
Имя2 потратил: Сумма2
"

Когда пользователь ввел данные двух и более человек, меню содержит три кнопки:
  1. Добавить еще
  2. Расчет
  3. Сброс

3. Команда «Добавить еще»


Бот отправляет сообщение пользователю:
"Введите имя следующего участника"

Пользователь вводит имя.

Бот отправляет сообщение пользователю:
"Сколько денег потратил?"

Пользователь вводит сумму.

Бот отправляет сообщение пользователю:
"
Имя1 потратил: Сумма1
Имя2 потратил: Сумма2
"

Когда пользователь ввел данные двух и более человек, меню содержит три кнопки:
  1. Добавить еще
  2. Расчет
  3. Сброс

4. Команда «Расчет»


Бот отправляет сообщение пользователю:
"
 Имя1 → Имя2: 💰Сумма1
 Имя2  Имя3: 💰Сумма2
 Имя4  Имя1: 💰Сумма3
 Имя5  Имя2: 💰Сумма4
...
"

Когда пользователь ввел данные двух и более человек, меню содержит три кнопки:
  1. Добавить еще
  2. Расчет
  3. Сброс

5. Команда «Сброс»


Бот очищает данные.

У пользователя есть возможность нажать одну кнопку «Новый расчет»


Итого


Имея под рукой алгоритм расчета и интерфейс взаимодействия пользователя и бота мы готовы к разработке. Бот можно протестировать в телеграме: https://t.me/HoroshoPosideliBot 

upd 26.12.2020: бот удален из телеграма, исходники лежат у Олега: https://github.com/sylvan008/hadGoodTime

Tuesday, June 26, 2018

GDG Цензура Bot, REST API (часть 4)

 

Проблема

Цензор бот работает только в приложении Telegram. Появилась идея вынести цензуру из телеграмма в интернет. В этом посте детали реализации, а в следующем - первая интеграция со сторонним ресурсом!

Решение

Telegram-бот - это на самом сайт. Вот он: http://gdg-censor-bot.herokuapp.com/

На этот сайт приходят уведомления от Telegram. А сторонние приложения посылают запросы на модерацию.

Я добавил на сайт метод «parse», который взаимодействует со всеми остальными интернет ресурсами. Это, пожалуй, все технические детали.

Пример запроса

//
// Всего 10 секунд займет
// - открыть консоль сайта vadimcpp.ru
// - скопировать, вставить и выполнить текст ниже 👇
//

$.ajax({
url: 'http://gdg-censor-bot.herokuapp.com/parse',
type: 'POST',
data: {
key: 'A7A034AF8C960D1CD322622BDC9C45B23FA7CEFB01B451386BBCFDB4E3A1A5AE',
text: 'хуй пизда джигурда'
},
success: function(data) {
console.log('Success:', data);
}
});

Пример ответов

Нецензурные слова найдены 🗣:
{
    "text": "хуй пизда джигурда",
    "result": "*** *** джигурда",
    "censored": true,
    "client": "Vadim Cpp personal website"
}

Цензура в порядке 😎:
{
    "text": "Хочешь идти быстро - иди один. Хочешь идти далеко - лучше идти вместе.",
    "result": "Хочешь идти быстро - иди один. Хочешь идти далеко - лучше идти вместе.",
    "censored": false,
    "client": "Vadim Cpp personal website"
}

Если вы читаете этот пост с мобильного, то лучше открыть сайт vadimcpp.ru и протестировать UI:


Итого

− «Это же просто. Я могу интегрировать цензуру в свой сайт всего в один REST запрос!» — подумает умный читатель. Да, это так. Бота можно интегрировать. Получите ключ доступа и пользуйтесь.

Контакты для связи для получения ключей:
Телеграм: @vadimcpp
Email: vadim.cpp(at)gmail.com

О том, как реализована фича Антиспам, можно почитать в части 5.