
Zart
05.02.2017
17:35:31
они дерьмо

Vadim
05.02.2017
17:36:08
Попробуй на досуге хромиум собрать

Zart
05.02.2017
17:36:14
зачем?
мозиллу я собирал, а хромиум может идти нахуй

Google

Vadim
05.02.2017
17:37:00
Там как раз вот это все, чекаут на полтора часа

Zart
05.02.2017
17:38:55
я конечно порой похож на гентоёба, но просто так йа компелирую редко

Igor
05.02.2017
18:09:55
Ребятки, подскажите пожалуйста какой-нибудь проект может, может какие-нибудь руководства по Python, где можно новичку тренироваться. Может быть статьи где на примерах пишется что-нибудь. Я тут видел по руби туториалс. А вот по питону есть чо хорошее?

Igor
05.02.2017
18:10:41
@python_beginners
checkio, stepic, codewars, вот это все

Igor
05.02.2017
18:11:17
Чекио говно какое-то непонятное. Кодворс сразу заставляют решить что-то.

Igor
05.02.2017
18:11:45
статьи где на примерах что-нибудь пишется есть в документации питончика и интернетах
вон серия постов про то, как сайт на фласке накатать
https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world
ну правильно, зачем лезть решать сразу что-то, если ты вообще ничего не знаешь?

Трусов
05.02.2017
18:24:50
Привет,может кто знает, использую telebot для ботов телеграм.
Делаю примерно так:
@bot.message_handler(regexp='что то')
def handler_start_help(message):
bot.send_message(message.chat.id, 'Вопрос?')
Как мне получить то, что напишет юзер после срабатывания handler'а?

Danil
05.02.2017
18:26:25
скорее всего надо хранить переписку с пользователем локально

Трусов
05.02.2017
18:26:47
Знаю, что можно использовать register_next_step_handler, но это немного не то. В данном случаи просто произойдет передача ответа на метод, который будет его обрабатывать.

Stanislav
05.02.2017
18:27:53
Чет хуйня какая-то происходит с питоном
В неком методе класса в котором используется рекурсия и ретурн неких данных. Если не юзать рекурсию - все возвращает, если она происходит по условиям программы - в локальном скопе все ок, данные нужные - но снаружи возвращает None

Denis
05.02.2017
18:28:09
Код го

Google

Stanislav
05.02.2017
18:28:34
Я щас видео запишу нахуй

Milton
05.02.2017
18:29:16

Трусов
05.02.2017
18:29:38
а если мне надо будет 10 раз посмотреть что чел написал?

Milton
05.02.2017
18:30:14
Ну в конце своего хэндлера вкорячиваешь next_step_handler тот, что вкорячил перед этим
Получаешь цикл

Трусов
05.02.2017
18:30:32
10 раз что ли register_next_step_handler юзать? Да и тогда я не смогу посмотреть что мне чел ответит. смогу конечно, но это будут ifы и прочее говно, что либа говорит не юзать ибо есть handler

Milton
05.02.2017
18:31:25

Трусов
05.02.2017
18:32:00
вот я и спрашиваю, может у меня лыжи не едут и есть более правильный способ. значит нету
во, пример нашел, может кому пригодится https://github.com/eternnoir/pyTelegramBotAPI/blob/master/examples/step_example.py

Milton
05.02.2017
18:36:56

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

Milton
05.02.2017
18:38:04
Я бы не смог зарегаться. Мой гендер — Боевой вертолет Апач

Igor
05.02.2017
18:38:12
это и многие другие интересные факты о написании ботов - в соседнем канале!

Трусов
05.02.2017
18:38:54
соседнем канале?можно название

Igor
05.02.2017
18:39:31
в @python_beginners часто ботов обсуждают
ну и вообще @botoid есть

Zart
05.02.2017
18:39:41
а здесь ботов осуждают

Трусов
05.02.2017
18:39:55
да почему, они хорошие

Igor
05.02.2017
18:39:58
не знаю, я на днях таки не удержался и написал первого

Google

Igor
05.02.2017
18:40:26

Milton
05.02.2017
18:40:58
А фразы разные?

Трусов
05.02.2017
18:41:04
"не пробовал, но осуждаю"
понятно

Milton
05.02.2017
18:41:18

Igor
05.02.2017
18:42:24
А фразы разные?
да какая разница, это вопрос random.choice'а (а вообще одна)
у меня бомбануло, я его запустил, подержал в чатике с полчаса и выкинул за ненадобностью, потому что в bot api нельзя удалять чужие сообщения в чатах. это с tg-cli ебаться придется и нормальным человеческим аккаунтом

Stanislav
05.02.2017
18:42:31
Код го
https://www.youtube.com/watch?v=SehokaoPm6I

Milton
05.02.2017
18:43:30

Igor
05.02.2017
18:43:57

Stanislav
05.02.2017
18:44:20
Баг питона?

Zart
05.02.2017
18:44:24

Igor
05.02.2017
18:44:34
да, как раз хотел дополнить.

Zart
05.02.2017
18:45:51

Stanislav
05.02.2017
18:46:00

Zart
05.02.2017
18:46:29
ну я не умею читать серый на сером, поэтому предоставлю слово дальтоникам
https://twitter.com/sadserver/status/674264875259052032


Stanislav
05.02.2017
18:50:19
ну я не умею читать серый на сером, поэтому предоставлю слово дальтоникам
Я тут напишу еще
class OnlineSimApiSession:
def __init__():
#логинимся там кароче хуйня
def _compile_url(self, method_name, query=None):
base_url = '%s/%s.php?' % (API_URL, method_name)
query['apikey'] = self.apikey
return base_url + urlencode(query)
def get_state(self):
r = self.get(self._compile_url('getState', {'message_to_code': 1}))
r_json = r.json()
if type(r_json) == list:
if int(r_json[0]['time']) <= 20:
r = self.get(self._compile_url('setOperationOk', {'tzid': self.tzid}))
self.tzid, self.number, self.msg_id = None, None, -1
sleep(5)
self.get_state()
return r_json
else:
if r_json.get('response') == 'ERROR_NO_OPERATIONS':
self.tzid, self.number = self.new_number()
sleep(3)
self.get_state()
def new_number(self):
r = self.post(API_URL+'/getNum.php',
json={'apikey': self.apikey, 'service': "Steam", 'form': 1})
r_json = r.json()
print('Getting number: '+str(r_json))
if r_json['response'] == 1:
tzid = r_json['tzid']
number = '+7%s' % r_json['params']['number']
self.msg_id = 0
return tzid, number
else:
raise Exception('Cannot resolve new number.', r_json)
def get_number(self):
kek = self.get_state()
return self.number
s = OnlineSimApiSession(*DATA)
s.get_number()
Изначально при вызове get_state от сервера получаем говно респонс, по одному из условий если говно - сделать не говно. Оно делает не говно и вызывает get_state из себя. После чего получаем охуенный респонс и возвращаем его, но возвращается None.
Во второй раз при изначально охуенном ответе оно возвращает охуенный ответ, а не None


dmks
05.02.2017
18:51:59

Stanislav
05.02.2017
18:52:27

Google

Stanislav
05.02.2017
18:52:39
Я просто нихуя не понял
Почему оно ведет себя так

dmks
05.02.2017
18:52:59

Zart
05.02.2017
18:53:02
а этот self.get он синхронный аще?

Stanislav
05.02.2017
18:53:41

Igor
05.02.2017
19:07:47
Парни, а может кто-нибудь проект подсказать? Или в свой взять? Хотелось бы практики много и учиться со знающим человеком.

Denis
05.02.2017
19:09:02
Могу свой говнокод показать, только ты там ничему не научишься


Stanislav
05.02.2017
19:10:19
Я тут напишу еще
class OnlineSimApiSession:
def __init__():
#логинимся там кароче хуйня
def _compile_url(self, method_name, query=None):
base_url = '%s/%s.php?' % (API_URL, method_name)
query['apikey'] = self.apikey
return base_url + urlencode(query)
def get_state(self):
r = self.get(self._compile_url('getState', {'message_to_code': 1}))
r_json = r.json()
if type(r_json) == list:
if int(r_json[0]['time']) <= 20:
r = self.get(self._compile_url('setOperationOk', {'tzid': self.tzid}))
self.tzid, self.number, self.msg_id = None, None, -1
sleep(5)
self.get_state()
return r_json
else:
if r_json.get('response') == 'ERROR_NO_OPERATIONS':
self.tzid, self.number = self.new_number()
sleep(3)
self.get_state()
def new_number(self):
r = self.post(API_URL+'/getNum.php',
json={'apikey': self.apikey, 'service': "Steam", 'form': 1})
r_json = r.json()
print('Getting number: '+str(r_json))
if r_json['response'] == 1:
tzid = r_json['tzid']
number = '+7%s' % r_json['params']['number']
self.msg_id = 0
return tzid, number
else:
raise Exception('Cannot resolve new number.', r_json)
def get_number(self):
kek = self.get_state()
return self.number
s = OnlineSimApiSession(*DATA)
s.get_number()
Изначально при вызове get_state от сервера получаем говно респонс, по одному из условий если говно - сделать не говно. Оно делает не говно и вызывает get_state из себя. После чего получаем охуенный респонс и возвращаем его, но возвращается None.
Во второй раз при изначально охуенном ответе оно возвращает охуенный ответ, а не None
Так че, тикет писать?


Eugine
05.02.2017
19:35:17
Так че, тикет писать?
в "автостопом по галактике" был прекрасный момент на эту тему:
- А по-моему, когда наступает конец света, нужно лечь
и натянуть на голову бумажный пакет или что-то в этом роде.
- Да, если хочешь
- А это поможет?
- Нет

Zart
05.02.2017
19:38:37
Far out in the uncharted backwaters of the unfashionable end of
the western spiral arm of the Galaxy lies a small unregarded
yellow sun.
Orbiting this at a distance of roughly ninety-two million miles
is an utterly insignificant little blue green planet whose ape-
descended life forms are so amazingly primitive that they still
think Django is a pretty neat webframework.

Roman
05.02.2017
19:57:38

b0g3r
05.02.2017
20:09:39

Stanislav
05.02.2017
20:10:09

b0g3r
05.02.2017
20:10:19
насколько тактично просить помочь с фрилансом?)

Stanislav
05.02.2017
20:11:01

Zart
05.02.2017
20:11:37
а там точно питон виноват, а не твои кривые лапы?

Stanislav
05.02.2017
20:12:03

b0g3r
05.02.2017
20:12:07
конечно питон
это же баг питона!!!

Zart
05.02.2017
20:14:23
type(r_json) == list # мудак

Google

Milton
05.02.2017
20:14:46

Zart
05.02.2017
20:15:14

Milton
05.02.2017
20:16:58
днк
Так это у всего компьютерного

Zart
05.02.2017
20:18:17
решил таки посмотреть сраный видос...

Stanislav
05.02.2017
20:22:02

Zart
05.02.2017
20:23:19
чота я бага не вижу
если не считать того что какой-то мудак часть данных передает через присваивание self.* а часть через ретурн

Stanislav
05.02.2017
20:24:21

Zart
05.02.2017
20:24:25
во втором трае time: 1046, от чего условие if time < 20 пропускает апдейт self.number и вот этого всего
в чем именно баг я не понял

Stanislav
05.02.2017
20:25:32

Zart
05.02.2017
20:25:46
где?

Stanislav
05.02.2017
20:26:19
где?
return r_json
Он должен выполнится

Zart
05.02.2017
20:27:01
он и выполнился...
ты можешь внятно объяснить проблему?

Stanislav
05.02.2017
20:27:19

Zart
05.02.2017
20:27:36
чо?

Stanislav
05.02.2017
20:28:49
чо?
Я поправил код, как на видео
Там оно не возвращает r_json

Zart
05.02.2017
20:29:27
логично же

Stanislav
05.02.2017
20:30:02
if condition:
return r_json

Zart
05.02.2017
20:30:15
в первом случае ты трассируешь гет_стейт. тебе прилетает дикт и ты попадаешь в ветку else в которой нет сраного return вообще