
Artemiy
12.07.2017
12:56:57
@randmath_bot команда /number <число>.

o
12.07.2017
12:57:05
/number

Artemiy
12.07.2017
12:58:33
Игра идёт в виде "/number целое число".

Serg
12.07.2017
13:00:19
Ниудобно.. писать каждый раз /number

Google

C
12.07.2017
13:00:23
не угадал
я

Artemiy
12.07.2017
13:01:03

Serg
12.07.2017
13:01:09
сделай сразу - раз ты ожидаешь число, то запоминай состояние игрока - что он находится в состоянии угадывания

C
12.07.2017
13:01:09
да, надо просто число /34

Serg
12.07.2017
13:01:18
без слеша

C
12.07.2017
13:01:26
можно и без слеша

Serg
12.07.2017
13:01:33
я понимаю, что ты упираешься в команды )

C
12.07.2017
13:02:17
просто без слеша - нужно давать боту полный доступ ко всем сообщениям

Artemiy
12.07.2017
13:02:18
Но главное, что сейчас одновренно сыграло несколько человек, и у каждого свой сеанс был.
Всем спасибо за тест. :)

Serg
12.07.2017
13:04:02

Google

Artemiy
12.07.2017
13:04:36
Бот будет в публичном чате.

Serg
12.07.2017
13:04:44

Artemiy
12.07.2017
13:04:54
(Я надеюсь)

Serg
12.07.2017
13:05:06
/number 100
а где??? ответ

C
12.07.2017
13:06:03
нафига?
по умолчанию вроде бот получает только со слешем, чтобы получал все нужно выставить в ботфазере все сообщения

Artemiy
12.07.2017
13:06:06
Чего?

C
12.07.2017
13:06:40
хотя могу и ошибаться, хз

Aztwin LK
12.07.2017
13:06:44
Настройки бота открой
Через отца ботов

C
12.07.2017
13:07:09
ты кому?

Serg
12.07.2017
13:11:17
а кстати... в общем чате можно ли каждому человеку отправить свое сообщение, чтоб видел только он это сообщение
или только через приват?

b0g3r
12.07.2017
13:11:49
только приват. тут вам не слэк :)

Serg
12.07.2017
13:12:34
т.е. типа тут чел пишет команду типа /botCmd
далее бот подхватывает и конкретно челу на эту команду в ответ тут редактит приватное сообщение, которое видно только одному челу
т.е. каждый чтоб писал и окунался в сообщение боту свое - со свое работой

Zaur
12.07.2017
13:14:46

Serg
12.07.2017
13:17:46
is_personal Boolean Optional Pass True, if results may be cached on the server side only for the user that sent the query. By default, results may be returned to any user who sends the same query
или я так понимаю это относится вот к таким ботам
http://prntscr.com/furp91

b0g3r
12.07.2017
13:19:09
да

Google

Artemiy
12.07.2017
13:34:48
Traceback (most recent call last):
File "./mm-randbot.py", line 14, in <module>
myBot = telebot.TeleBot(data.myToken, threading=False)
TypeError: __init__() got an unexpected keyword argument 'threading' Что?

b0g3r
12.07.2017
13:37:24
RTFM
https://github.com/eternnoir/pyTelegramBotAPI/blob/master/telebot/__init__.py#L68
» threaded

Artemiy
12.07.2017
13:40:42
Да, я понял уже. Сложно.
Спасибо.

stonepig
12.07.2017
13:55:50
threaded=False
Как лучше хранить последнее сообщение, при вызове определенной команды, если бот работает на вебхуке?
например, у бота есть функционал:
ответить на сообщение “1 ли 2?” выбором случайного варианта ответа. бот отвечает “1 не 2”. я хочу прикрутить ему, если спрашиваешь дальше “а 2?”, то он отвечает “а 2 == 2!”
я думал в системной переменной может

b0g3r
12.07.2017
14:09:26

stonepig
12.07.2017
14:09:39
да.согласен

b0g3r
12.07.2017
14:09:40
в простых случаях - словарь в памяти {id: last_message}
в более сложных - словарь в памяти {id: state}

Карабанов
12.07.2017
14:10:03
я в словаре храню, но есть костыль

stonepig
12.07.2017
14:10:06
так скрипт же запускается начисто после апдейта от телеги

Magic
12.07.2017
14:10:06

Alex
12.07.2017
14:10:14
И каким боком сюда вебхук приплетен?

b0g3r
12.07.2017
14:10:15

stonepig
12.07.2017
14:10:18
не?

Magic
12.07.2017
14:10:21
Ты же не от балды ему вопрос задал

Google

Magic
12.07.2017
14:10:36
назовем это "опрос", "диалог"
Как хочешь
создаешь диалог с ним

b0g3r
12.07.2017
14:10:42

Magic
12.07.2017
14:10:49
и в нем пишешь состояния твоего опроса

b0g3r
12.07.2017
14:10:55
в случаях, когда критично не потерять историю - хранить не в памяти, а в персистентном хранилище (базе, файле, ...)

Карабанов
12.07.2017
14:11:11
обсуждали буквально недавно =) можно и в бде хранить =)

stonepig
12.07.2017
14:11:26
ну бд есть
прикручена, в смысле)

Alex
12.07.2017
14:11:48
Ну вот там и храни

stonepig
12.07.2017
14:11:49
думал, мб есть какой-то другой способ

Карабанов
12.07.2017
14:12:04
словари, файлы, память, бда

b0g3r
12.07.2017
14:12:07
в чате можно поискать по ключевым словам "стейт", "состояние", "FSM", ...

stonepig
12.07.2017
14:12:16
понел. спасибо

Карабанов
12.07.2017
14:13:07
понел. спасибо
но лучше делай сразу основательно - потом перепиливать и загонять все стейты в новое место - ох... =)

stonepig
12.07.2017
14:14:01
у меня бот чисто для одной конфы конкретно запилен, так что ен страшно
один стейт всего хранить
общий

b0g3r
12.07.2017
14:14:57
ну тогда обычной переменной в памяти
никаких системных не нужно, процесс не умирает с уходом каждого запроса :)

stonepig
12.07.2017
14:16:14
я думал, что когда приходит пост от телеги с апдейтом, то он запускает скрипт с ботом и пробегается по декораторам

Google

b0g3r
12.07.2017
14:16:39
почти

Serg
12.07.2017
14:16:41
как вы тогда принимаете данные

b0g3r
12.07.2017
14:17:45
там крутится бесконечный луп, который ожидает прихода апдейта от телеги. когда апдейт приходит - он передает его соответствующему декоратору
это конечно зависит от реализации: например если твой бот запущен в нескольких увсги-воркерах, то будет плохо (во-первых синк-воркеры могут умирать сами по себе, во-вторых переменные в памяти не общие между процессами, естественно)

Serg
12.07.2017
14:18:24
приходит куда?
веб сервер стоит? или как вообще устроен то прием?
Т.е. есть ссылка - а по ссылке что отвечает?

Oleg
12.07.2017
14:18:48
если вы про словарь со стейтом, то он умирает только при перезапуске бота

stonepig
12.07.2017
14:18:51
фласк + нджинкс

Serg
12.07.2017
14:18:54
или все таки getUpdates крутится бесконечно?

b0g3r
12.07.2017
14:18:59
flask.run()?

stonepig
12.07.2017
14:19:02
ага

b0g3r
12.07.2017
14:19:05
ага
должно работать с переменной в памяти

stonepig
12.07.2017
14:19:21
круто, попробую

Serg
12.07.2017
14:21:17
flask.run()?
т.е. запущенный скрипт не умирающий тупо подписан на событие ез некоего абстракного POST запроса и бесконечно крутит. А nginx просто отрабатывает и пишет в некую очередь пришедшие сообщения
я так понимаю технологию?

b0g3r
12.07.2017
14:21:51
я только в общих чертах это могу объяснять, так как сам не сервер-маг :)

Sergey
12.07.2017
14:22:09

b0g3r
12.07.2017
14:22:42
но да, питон-скрипт ловит запросы от нгинкс, а нгинкс из интернета, как там очередь устроена - я хз

Serg
12.07.2017
14:22:55
в любом случае если nginx - Это однозначно дискретные запросы с поднятием некоего cgi обработчика - любого - php-fpm - это один из обработчиков например
отработал запрос, сдал результаты, ушел из памяти, все забыли