
Vaderoff
24.05.2017
18:41:14
и прийдет сообщение с буквой

Jonathan ?
24.05.2017
18:41:14

Vaderoff
24.05.2017
18:41:44
но как мне проверить на какое именно сообщение пришел ответ от пользователя?

Igor
24.05.2017
18:41:58

Google

Igor
24.05.2017
18:42:46
на какое именно - это тебе состояния для каждого юзера надо учитывать
сорри, не втичался

Stanislav
24.05.2017
18:42:52
И красиво и функционально

Igor
24.05.2017
18:43:08
машина состояний, все такое
можешь хоть дикт сделать - states[user_id] = "спросил у юзера хуйню №1"
и на входящие сообщения смотреть states[user_id]. если "спросил у юзера хуйню №1", а он ответил "a", то сделать a().

Stanislav
24.05.2017
18:44:19
машина состояний, все такое
Вот кстати интересно, если будет дойуха пользователей, то как на бэке бота, который должен отвечать молниеносно хранить стейты

Alex
24.05.2017
18:44:36

Vaderoff
24.05.2017
18:44:51

Igor
24.05.2017
18:44:52
да хоть редиска. чтоб не проебалось из памяти, если бот упадет. например

Stanislav
24.05.2017
18:45:03
БД
Да ясно, но по скорости надо оптимизировать

Igor
24.05.2017
18:45:03
сообщение. с текстом.

Google

Vaderoff
24.05.2017
18:45:20
АЛе
я понимаю что сообщение с текстом

Igor
24.05.2017
18:45:34
ну а в чем проблема тогда.

Rookie
24.05.2017
18:45:48
Он мне неприятен

Vaderoff
24.05.2017
18:46:08
Как мне проверить что ответ пришел на сообщение "выберите букву" , а не на сообщение "Скажите ваше имя" ?

Igor
24.05.2017
18:46:32
states = {}
send_msg("скажите имя")
states[user_id] = "спросил у юзера имя"
send_msg("выберите букву")
states[user_id] = "спросил у юзера букву"
def incoming_message:
if states[user_id] == "спросил у юзера имя":
pass
if states[user_id] == "спросил у юзера букву":
print("юзер #{} выбрал букву {}".format(user_id, msg))

Rookie
24.05.2017
18:49:29
Хм. А интересненько стало накидать вложенную структуру по состояниям на n вилок по ответам)

Vaderoff
24.05.2017
18:49:39

Сергей
24.05.2017
18:50:23
https://core.telegram.org/bots/api#answercallbackquery
в доках всё есть, так сложно прочитать?

Igor
24.05.2017
18:51:11
еще лучше)
(сорри, я плохо шарю в бот апи)

Rookie
24.05.2017
18:51:35
Я в глаза не видел

Сергей
24.05.2017
18:51:38
не много нето, но где-то рядом
ща

Stanislav
24.05.2017
18:51:42
Понял спасибо
Это хуйня для примера только, не делай так на боевом сервере
Читай про стейт машины ежжи

Igor
24.05.2017
18:51:54

Google

Igor
24.05.2017
18:52:24
хотя если ботом пользуется полтора человека, не вижу в дикте ниче плохого %)

Сергей
24.05.2017
18:53:05
https://core.telegram.org/bots#inline-keyboards-and-on-the-fly-updating
тебе нужны Callback buttons
в ответ будет приходить callback_query вместо обычного теста https://core.telegram.org/bots/api#callbackquery

Vaderoff
24.05.2017
18:55:53

Сергей
24.05.2017
18:56:22
сохранять состояние по любому где-то надо
но в случае с callback_query, если ничего не считаешь, то ничего дополнительно не надо, т.к. оно приходит отдельным типом.

Boris
24.05.2017
19:12:49
вшэ фкн пми
а в этом году соревнование по предсказанию доты на 3 курсе было на семинарах по ML :) и знаю несколько людей с курсачами по доте. а я по кс делаю

Aragaer
24.05.2017
19:14:08
В этом вашем вшэ занятия в бывшем миэме случаются?
... я уж не знаю, чего там и как переделали.

Boris
24.05.2017
19:15:35
в миэме занятия иногда случаются, а иногда не случаются :D

Aragaer
24.05.2017
19:16:33
я миэм заканчивал. Кафедру, которая называлась ЭВА, когда я там учился, переименована в ИКТ, когда я там был какое-то время аспирантом

Boris
24.05.2017
19:23:52
субъективно кажется что в миэме сидят деды, а на фкн все молодые
ну и темы исследований и предметы соответствующие

Eldar
24.05.2017
19:41:34

Aragaer
24.05.2017
19:43:02
это не знаю. У миэма два здания было - большой трехсвятительский (китай-город) и на павелецкой

Boris
24.05.2017
19:57:51

Aragaer
24.05.2017
19:58:07
угу
когда я поступал в миэм мы в какой-то газете читали, что он строится. Когда я заканчивал - еще ничего не было

Nikolay
24.05.2017
19:58:43
Че там чемпионат мира по спортивному программированию же идет

Google

Nikolay
24.05.2017
19:58:49
? пацаны ваще ребята
Через час резалты будут.

Boris
24.05.2017
19:58:58
в есть линк?

Vladislav
24.05.2017
19:59:12
zibada.ru/finals
или https://icpc.baylor.edu/scoreboard/

Nikolay
24.05.2017
19:59:24
https://www.youtube.com/watch?v=j3cjcPGhqUs

Admin
ERROR: S client not available

Vaderoff
24.05.2017
20:41:32
Я там выше спрашивал про машину состояний при работе с телегой, скажите я правильно понимаю логику? Как только юзер пишет '/start' моему боту, то я беру id этого пользователя и записываю его в бд ( id пользователя + состояние, допустим "start"), потом смотрю состояние, и если у этого юзера состояние "start", то я ему пишу сообщение и спрашиваю его имя, тем самым записывая в бд след состояние "registration" . Я правильно понял принцип машины состояний ?

Маришка
24.05.2017
20:44:55
Примерно

Vova
24.05.2017
20:49:57
Что за бота пишеш?

Скрудж
24.05.2017
20:53:25
Я там выше спрашивал про машину состояний при работе с телегой, скажите я правильно понимаю логику? Как только юзер пишет '/start' моему боту, то я беру id этого пользователя и записываю его в бд ( id пользователя + состояние, допустим "start"), потом смотрю состояние, и если у этого юзера состояние "start", то я ему пишу сообщение и спрашиваю его имя, тем самым записывая в бд след состояние "registration" . Я правильно понял принцип машины состояний ?
Говно получается. У тебя приходит нотифи, что id послал /start, ты добавил его в БД с полями по id, т.к. это его первый (не факт, кстате) вызов бота, а дальше кидаешь в очередь обработку запросов

b0g3r
24.05.2017
20:54:16
где говно получается?

Скрудж
24.05.2017
20:57:05

b0g3r
24.05.2017
20:57:20

Скрудж
24.05.2017
20:57:33
Только, я хз что ему надо

Vaderoff
24.05.2017
20:58:11

Vova
24.05.2017
20:58:14

b0g3r
24.05.2017
20:58:44
Так и не понял что говно - хранить состояния в бд, или что

Google

Скрудж
24.05.2017
20:59:10

Vaderoff
24.05.2017
20:59:39
Litesql какой-нибудь должен зайти

b0g3r
24.05.2017
20:59:39
нет, я ниче не понял из того что ты написал, поля какие-то, обработка запросов
обколются своими терминами, потом пытайся понять о чём они

Маришка
24.05.2017
21:00:00
Скулайт вполне подходит
Темпаче он умеет в памяти держать бдшку

Скрудж
24.05.2017
21:00:36

Rookie
24.05.2017
21:00:42
Редис умеет на диск, когда надо

b0g3r
24.05.2017
21:00:44
Лично моя рекомендация не обрабатывать /start никаким специальным образом - просто получать сообщение, смотреть id-шник, вытаскивать состояние из базы и передавать сообщение на обработку согласно состоянию.
А случай с первым сообщение от пользователя (/start) - когда в базе нет этого юзера ещё, а значит мы вместо вытаскивания - создаем пользователя в базе и прописываем ему стартовое состояние. А дальше - всё как и в обычном случае

Маришка
24.05.2017
21:01:10

b0g3r
24.05.2017
21:01:17
А, ок

Rookie
24.05.2017
21:01:22

Vaderoff
24.05.2017
21:01:28

b0g3r
24.05.2017
21:02:02
Ну тогда всё у тебя ок с пониманием, а уж как стейты реализовать - каждый дрочит как хочет
функциями, классами, отдельной стейт-машиной с условиями

Маришка
24.05.2017
21:02:23
Енам