justdmitry / NetTelegramBotApi

C# client library for building Telegram bot
MIT License
74 stars 28 forks source link

Как сделать чтобы бот ждал моих действий? #8

Closed Radzhab closed 9 years ago

Radzhab commented 9 years ago

В демо примере подсказок не нашел.

if (text == "/Погода")
                    {
                        bot.MakeRequestAsync(new SendMessage(update.Message.Chat.Id, "Введите название города в котором хотите посмотреть погоду.")).Wait();

// Как сделать так чтобы он ждал отправки текста?
                        System.Threading.Thread.Sleep(500);
                        if (text != "")
                        {
                         ....
                       }
justdmitry commented 9 years ago

Надо просто ждать следующего Update-a, запомнив где-то на сервере что "текущая команда Погода". Или можно просить ввести город сразу в первой команде: "/Погода Москва".

Увы, но "мозги" бота это совершенно другая тема. State-машины для сложных команд, валидация результатов и т.п. - там много всего интересного. А эта библиотека - всего лишь транспортный уровень.

Radzhab commented 9 years ago

) Ну что нибудь типа WaitNewMessage можно же добавить? Вот например https://github.com/FloodCode/MonsterBot/tree/5909c97dd2f4dfc4d38456ef6b1eab743a141e65

justdmitry commented 9 years ago

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

Нужно на серверной стороне делать отдельную логику по разделению пользователей на чаты и ведению "переписки" раздельно по чатам. А иначе получится все остальные пользователи будут "висеть" пока бот будет ждать пока первый придумает название города.