Только twitter. Желательно Python3, другие варианты можно рассмотреть. Хостинг на VPS или Heroku, доступ к исходному коду для заказчика.
Нужен бот, который будет вести диалог с пользователем в DM (Личных сообщениях) Twitter, давать администратору просматривать отправленные сообщения пользователей (в DM, 3 из 3 шагов диалога выполнены), публиковать от аккаунта бота одобренные администратором посты.
Все кнопки под полем ввода сообщения (reply keyboard):
New post начало диалога с состояниями (3 шага в диалоге);
Saved posts редактирование незавершенных диалогов;
Add later сохранение сообщения без последней записи (3 из 3);
Cancel сброс состояний диалога, возврат к "главному меню" 0. Welcome message;
Back возвращение на предыдущий шаг диалога;
Publish отправка сообщения на модерацию;
0. Welcome Message: При отправке первого сообщения боту, бот должен показать кнопки: New Post, Saved posts
1. Нажатие на кнопку New Post, бот должен вывести клавиатуру с кнопкой Cancel:
a) написать сообщение: "Share your idea in one sentence: it can be inspired by a book, article, blog post, podcast or video. Try to write less than 160 symbols, you can add details to the idea later."
b) Принять сообщение пользователя и выполнить проверку на ограничение в 160 символов и минимум 1 символ. Если больше 160, написать
"Please make your reply shorter less than 160 symbols".
Если меньше 1, написать: "Reply is less than 1 symbol".
Если меньше 160 и больше 1, перейти к шагу и сохранить ответ в переменную c)
c) Вывести клавиатуру с кнопками Back и Cancel написать сообщение:
"Add the source in the following format: Title * Author (for books), or Headline * URL (for podcasts, videos, articles). For example:
2-Minute Neuroscience: Beta-Endorphin *
youtu.be/tsjwHWDCT0Q or The Culture Map * Erin Meyer"
d) Принять сообщение пользователя и выполнить проверку на наличие разделителя "*". Если разделителя нет отправить сообщение: "Please add a * symbol, example: 2-Minute Neuroscience: Beta-Endorphin *
youtu.be/tsjwHWDCT0Q or The Culture Map * Erin Meyer" Если есть разделитель, записать ответ в переменную и перейти к шагу e)
e) написать сообщение и вывести кнопки Add later, Back, Cancel: "Expand this idea in detail so that everyone can understand and appeal to it, even if they are unfamiliar with the source of your inspiration. Try writing the idea as simple as possible, in your own words, sharing your experience of living through it. You can always come back to this step later by pressing Add later button"
f) принять сообщение и выполнить проверку: если add later, вывести 0. Welcome message, если не add later, записать текст сообщения пользователя в переменную и перейти к пункту g).
g) ответить пользователю:
✅ {{текст переменной из пункта b)}}
n(новая строка) 📚{{текст переменной из пункта d}}
n(новая строка)💡{{текст переменной из пункта f}}
вывести клавиатуру: Publish, Add Later
h) При нажатии на Publish сообщение отправляется администратору, при нажатии на Add Later в базу для меню кнопки Saved Posts. В обоих случаях, после нажатия, вывести клавиатуру New Post, Saved posts
2. Нажатие на кнопку Add Later
a) Вывести все посты, где пользователь нажал на кнопку add later, с inline (под постом) кнопками: Thesis, Source, Idea
b) Нажатие на Thesis: написать сообщение, принять ответ и выполнить проверку, как в 1. a,b. По окончании вывести 0. Welcome message и клавиатуру
с) Нажатие на Source: написать сообщение, принять ответ и выполнить проверку, как в 1. c,d. По окончании вывести 0. Welcome message и клавиатуру
d) Нажатие на Idea: использовать последовательность из 1. e,f,g,h.