
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

Gabb
14.04.2017
17:09:19
kek

Igor
14.04.2017
17:09:22
xyek
:(

Google

AbduCOM
14.04.2017
17:09:51

Igor
14.04.2017
17:09:55

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

Igor
14.04.2017
17:10:24

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

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

Pavel
14.04.2017
17:11:26

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

Igor
14.04.2017
17:16:29

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

Igor
14.04.2017
17:17:12

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

Маришка
14.04.2017
17:22:51

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

Igor
14.04.2017
17:33:10

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

Alex
14.04.2017
17:40:23

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