@python_beginnersЭта группа больше не существует

Страница 1618 из 1885
Gabb
14.04.2017
16:54:17
нужны*

Pavel
14.04.2017
16:54:26
нет, не нужны.

Gabb
14.04.2017
16:54:40
тогда гайд по машине состояний :)

Pavel
14.04.2017
16:54:43
нужно состояние, правила перехода и набор внешних сигналов.

Google
Pavel
14.04.2017
16:55:21
то есть в другой последовательности: набор внешних сигналов, набор состояний и правила перехода.

Gabb
14.04.2017
16:56:14
что то типа: user написал член состояние xxx, user набрал старт состояние xxxx?

Pavel
14.04.2017
16:56:48
да, что-то типа того.

мы спросили "как тебя зовут" и перешли в состояние "ждём имя". Пока не придёт нормальное имя, мы находимся в этом состоянии. По команде "нормальнео имя" переходим в состояние "узнать расположение", потом - в состояние "узнать возраст". Ну, если в трёх словах

Gabb
14.04.2017
16:58:54
суть я понял

как реализовать не знаю

Igor
14.04.2017
16:59:22
воспользуйся поиском по чату в телеграме

Gabb
14.04.2017
16:59:33
я искал

Igor
14.04.2017
16:59:59
поищи за 12 число одного из месяцев этого года

Gabb
14.04.2017
17:00:09
это нашел

Давайте я в двух словах расскажу про машину состояний, коей бот и является. Хотел бы подольше, но обедать пора. Бот для каждого пользователя находится в каком-то состоянии: "ждём любимый цвет", "ждём имя юзера" и т.п. Для каждого состояния есть набор переходов: "из состояния А по команде 'x' переходим в состояние Б". Для начала стоит взять лист бумаги побольше, и расписать все состояния и все переходы. А потом поискать в гугле/гитхабе какой-нибудь фреймоворк для оформления этого дела, наверняка уже к ботам прикрутили что-нибудь.

Igor
14.04.2017
17:02:11
Грубо говоря, мы запомнили, что юзер №123 начал проходить тест, и запомнили, что мы спросили юзера про цвет. поэтому когда пришло новое сообщение от этого юзера, мы понимаем, что это сообщение - это ответ на вопрос про любимый цвет. Мы запоминаем, че ответил пользователь, или делаем с этим еще че-то, я хуй знает, что тебе надо там. Неважно. И отправляем юзеру от имени бота следующее сообщение - "какой любимый фрукт?". можем показать клавиатуру, можем не показывать, позволить юзеру ввести текстом хоть фейхоа ебаное. И когда бот получит следующее сообщение, он посмотрит - че за юзер отправил сообщение, задавали ли мы ему вопросы и если задавали, то какой последний. Агааа, №123, спросили про фрукт, вот получили какое-то сообщение, наверное это его ответ! запомнили, отправили следующее сообщение. и так хоть до усрачки можно этим заниматься.
скорее это

Google
Igor
14.04.2017
17:02:31
как мы можем запомнить, у какого юзера какое состояние?

Gabb
14.04.2017
17:03:57
юзать дб

Furt
14.04.2017
17:06:00


AbduCOM
14.04.2017
17:06:13
Такс такс... Вот отсюда https://github.com/aneeshktry/Url-Shortener получил нужные мне файлы. app.yaml: application: pythonurlshortner version: 1 runtime: python api_version: 1 handlers: - url: /.* script: urlshortener.py urlshortener.py: import random import cgi from google.appengine.ext import db from google.appengine.ext import webapp from google.appengine.ext.webapp.util import run_wsgi_app from google.appengine.ext.webapp import template class Redirect(webapp.RequestHandler): def get(self): var= self.request.path str1=var[1:] if "link"==str1: self.redirect("https://google.com/") application = webapp.WSGIApplication([('/',urlhandler),('/.+',Redirect)],debug=True) def main(): run_wsgi_app(application) if __name__ == "__main__": main() Теперь как запускать его? ??

Gabb
14.04.2017
17:07:14
как ты выделил код?)

AbduCOM
14.04.2017
17:07:36


Gabb
14.04.2017
17:08:18
'''

упс

AbduCOM
14.04.2017
17:08:25
Igor
14.04.2017
17:08:28
sorted(lines, key=lambda x: x.split()[1])

Furt
14.04.2017
17:08:39
спасибо

Igor
14.04.2017
17:08:55
или те надо отсортировать его не трогая первый?

Gabb
14.04.2017
17:08:57
`
где этот знак вообще

Igor
14.04.2017
17:09:05
где этот знак вообще
буква ё, другая раскладка

AbduCOM
14.04.2017
17:09:06
Igor
14.04.2017
17:09:18
где этот знак вообще
и об этом написано в faq, а faq в шапке чата

Gabb
14.04.2017
17:09:19
kek

Igor
14.04.2017
17:09:22
xyek

:(

Google
Igor
14.04.2017
17:09:55
юзать дб
можно проще и глупее

Gabb
14.04.2017
17:10:12
хм...

Igor
14.04.2017
17:10:24
? помогите, ребята
это wsgi приложение, его надо обернуть в uwsgi или gunicorn как минимум

Pavel
14.04.2017
17:10:30
давай уже, вываливай весь стикерпак, и закончим на этом.

Igor
14.04.2017
17:10:43
хм...
какие структуры данных знаешь в питончике

Pavel
14.04.2017
17:11:26
это wsgi приложение, его надо обернуть в uwsgi или gunicorn как минимум
я вот как-то уверен в правильности твоих слов.

Igor
14.04.2017
17:11:44
я вот как-то уверен в правильности твоих слов.
сарказм или ты "не" пропустил где-то?(

а, это вообще GAE

эх

Gabb
14.04.2017
17:13:04
я знаю список

Igor
14.04.2017
17:13:18
шикардос еще

Gabb
14.04.2017
17:13:26
словарчик

Igor
14.04.2017
17:13:44
че с ним можно делать

лан перечитай результаты поиска

Gabb
14.04.2017
17:14:59
перечитываю

зная ключ можно получить значение

это то что я перечитал

Furt
14.04.2017
17:16:20
только 2. А первый должен перемещаться за вторым

или те надо отсортировать его не трогая первый?

Google
Gabb
14.04.2017
17:17:10
я пока думаю

Igor
14.04.2017
17:17:12
только 2. А первый должен перемещаться за вторым
ну вроде sorted(.., key=lambda x:x[1]) как раз так и делает

я пока думаю
а можно почитать

Gabb
14.04.2017
17:17:31
можно

Igor
14.04.2017
17:17:56
так вот, ближе к сути. если ты хочешь сделать цепочку сообщений, алгоритм должен быть такой бот: проверяет все сообщения с текстом "Хочу начать тест!" юзер: пишет (отправляет команду, нажимает кнопку, похуй, главное что от юзера сообщение отправляется боту с определенным текстом) - "Хочу начать тест!" Бот пишет этому пользователю первый вопрос. Скажем, "Какой твой любимый цвет?". и показываем клавиатуру с тремя кнопками - "красный", "зеленый", "синий". затем бот запоминает, что пользователь с таким-то ID (id уникальны, имена - нет; номера телефонов недоступны, логины не у всех есть, поэтому ID) начал тест и бот задал ему первый вопрос. как запоминаем - дело твоё, реализовать можно разными способами. можно словарь впихнуть в самом начале файла с обработчиками сообщений и пользоваться им как глобальной переменной. кроме того, что бот проверяет сообщения с текстом "Хочу начать тест!", бот проверяет и все остальные сообщения. все-все-все. Когда он получает такое сообщение (отличное от "Хочу начать тест!"), бот смотрит в свою базу (словарик из примера выше) - а начинал ли такой пользователь прохождение теста? если начинал, то на каком этапе он щас? Смотрим, на каком этапе, и в зависимости от этапа понимаем, message.text в данном случае - это ответ на какой конкретный вопрос. (1/2, продолжение следует)
^

Gabb
14.04.2017
17:19:52
словарик и проверка text

пойду изучать словарик

Donaudampf
14.04.2017
17:21:36
ну вроде sorted(.., key=lambda x:x[1]) как раз так и делает
Лучше сразу приучать использовать itemgetter

Маришка
14.04.2017
17:22:51
словарик и проверка text
Что в моём гитхабе в принципе и реализовано...

Gabb
14.04.2017
17:23:05
да я не могу разобраться в твоем коде

Alex
14.04.2017
17:25:47
Gabb
14.04.2017
17:25:54
https://github.com/Marina-chan/telegram_poster_bot/blob/master/bot/main.py

Ща кину все стикеры

Alex
14.04.2017
17:27:22
правда что все в одном модуле...

лучше бы дробить на модули...

Gabb
14.04.2017
17:28:03
конечно лучше

помогите gabbsuckу найти словарик в коде

Alex
14.04.2017
17:30:04
Google
Gabb
14.04.2017
17:30:54
"реализовать можно разными способами. можно словарь впихнуть в самом начале файла с обработчиками сообщений и пользоваться им как глобальной переменной."

Маришка сказала что она так делает

по крайней мере мне так показалось

Alex
14.04.2017
17:32:10
для обработки команд у нее точно не словарь.

Gabb
14.04.2017
17:32:26
а что у нее

Alex
14.04.2017
17:33:05
разве что она имела в виду список keyboard_commands_list

Вадим
14.04.2017
17:37:59
так и не разобрался, подскажите какими способами вытащить ссылки из яндекса, попробовал но ниже какого то класса не могу уйти не поимаю как вот такое обработать link organic__url link link_cropped_no i-bem link_js_inited

или если блок берешь div class = content__left то ниже уже не спутситься и ссылки не вытащить

selenium

Gabb
14.04.2017
17:40:36
а юзать словари для запонимания состояния юзера хорошая идея?

Страница 1618 из 1885

Эта группа больше не существует Эта группа больше не существует