
Klim
07.07.2017
22:02:33

Vitaly
07.07.2017
22:04:25
микробо - просто раннер, чтобы только логику бота описать и запустить, без этой еботы с полингом и вэбхуками

Сергей
07.07.2017
22:06:52
Привет всем. Подскажите как скрыть кнопки

pride
07.07.2017
22:07:57

Google

Карабанов
07.07.2017
22:09:59
Ребята, почитал вас - спасибо! Подумал, что в случае, если уйду за 10+ к строк - это уже будет успехом и поводом передать все в управление настоящим кодерам =))

Klim
07.07.2017
22:11:18
Все работает как часы в первом случае, но почему второй способ не работает?

Карабанов
07.07.2017
22:11:49
АА!! вопрос формата "рукалицо". В PyCharm как свернуть все развернутые функции? :))))) есть хоткеи? :)

Yury
07.07.2017
22:12:22

Vitaly
07.07.2017
22:12:43

Klim
07.07.2017
22:13:05

Vitaly
07.07.2017
22:13:37
это работает если глобально установить, или если в npm скрипте прописать

Klim
07.07.2017
22:13:40
Я у себя еще пробую микробота
понял

pride
07.07.2017
22:14:22

Vitaly
07.07.2017
22:14:23
проще глянуть исходники micro-bot - там строк 100

Google

Карабанов
07.07.2017
22:15:01

pride
07.07.2017
22:16:25

Карабанов
07.07.2017
22:16:37
А не не - работает, спасибо огромное!

b0g3r
07.07.2017
22:16:46

Карабанов
07.07.2017
22:17:09
ага, там и нашел cmd+shift -/+

b0g3r
07.07.2017
22:17:26
есть ещё магия с ctrl+shift+a

pride
07.07.2017
22:17:27

b0g3r
07.07.2017
22:18:34

Yury
07.07.2017
22:29:05
где?
Ну типо этот скрипт скорее всего не установлен глобально, поэтому путь где он лежит отсутствует в $PATH, поэтому запустить его вот так как, как показано в мануале, не получится
И нужно либо через npm bin запускать, либо через export path, либо через абсолютный/относительный путь
Как то так
Пофиг

Vitaly
07.07.2017
22:33:40

Klim
07.07.2017
22:47:27
Vitaly, micro-bot на хероку все равно отваливается

Vitaly
07.07.2017
22:47:53
покажи package.json

Klim
07.07.2017
22:49:04
{
"name": "smart-bot",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"start": "micro-bot -d https://ancient-taiga-58221.herokuapp.com/",
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"micro-bot": "^1.3.0"
}
}
тут тоже что ли node надо прописать?

Vitaly
07.07.2017
22:50:51
слеш в конце урла ненужен
но то такое
а дерни getWebhookInfo
и еще, сделай вот так "start": "micro-bot -d ${URL} - как в доке

Klim
07.07.2017
23:01:47
"start": "micro-bot -d ${URL} поправил и тогда пришли сообщения

Google

Klim
07.07.2017
23:02:04
но все равно
2017-07-07T22:58:09.940830+00:00 app[web.1]: μ-bot :: Bot started
2017-07-07T22:59:06.964946+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2017-07-07T22:59:06.964946+00:00 heroku[web.1]: Stopping process with SIGKILL
2017-07-07T22:59:07.055193+00:00 heroku[web.1]: Process exited with status 137
2017-07-07T22:59:07.068534+00:00 heroku[web.1]: State changed from starting to crashed

Vitaly
07.07.2017
23:15:31
попробуй "start": "micro-bot -d ${URL} -p ${PORT}

Klim
07.07.2017
23:19:37
та же проблема

Vitaly
07.07.2017
23:20:58
странно
гляну вечерком

Klim
07.07.2017
23:22:21
? Спасибо!

Карабанов
07.07.2017
23:22:54
Народ, ракую, спасайте =(
Надо одновременно выдать 2 кнопки. (не инлайн)
Одна - запрашивает геолокацию, вторая просто "Вернуться".
Первая -
button_geo = types.KeyboardButton(text="Отправить местоположение", request_location=True)
Как смонтировать вторую!? ну это ппц просто упоролся

pride
07.07.2017
23:23:34

Карабанов
07.07.2017
23:24:13

pride
07.07.2017
23:25:13
ну keyboardbutton умеет в текст, контакт и гео
больше нихуя
передавай текст, по которому бот будет рисовать другую клавиатуру
например команду /back

Карабанов
07.07.2017
23:31:23
Какой я тупой
bk = types.KeyboardButton(text="Назад")
не думал, что так можно =)

pride
07.07.2017
23:31:35
вут
https://core.telegram.org/bots/api#keyboardbutton


Карабанов
07.07.2017
23:33:06
ага, оттуда и забрал =( ... я вечно изобретаю колесо =(
Стал ловить баг KeyError. Грабля. Причина - пользователь проходит регистрацию путём анкетирования. Все передаваемые ими данные пишутся в словарь. Словарь соответственно декларируется при запуске скрипта, как пустой. Дальше уже user_id набивает его при регистрации. В случае, если он доходит до финала - из словаря все данные уходят в БД и его словарь "опустошается". И все было хорошо... и тут вы сами понимаете - упал бот по таймауту (пример) - перезапуск = пустой словарь для всех. Обновление - перезапуск во время чьей-то регистрации = пустой словарь для всех.
Начал ловить KeyError, а тут такое ... только перезапускаешься, человек получает ответ бота - начинает дальше кормить его инфой и снова KeyError - попоболь.
Сейчас я обернул KeyError в try/except и возвращаю пользователя в старт регистрации, если словарь был ликвидирован =) , но понимаю, что это не панацея и костыль. Я полагаю, что имеет смысл "конечные автоматы" (если это можно так назвать) при регистрации хранить в БД. Или я не прав про БД?

Google

Илья
08.07.2017
00:00:51
Создай отдельную таблицу для временных результатов, по крону отбрасывай устаревшие результаты
Это дешевле чем держать процесс пока пользователь не родит

Карабанов
08.07.2017
00:02:30
ну просто да - я думал - оп-оп и регистрацию прошли, но некоторые на паузу ставят аж на несколько дней (отвлекли, забыли и прочее), потом возвращаются, а я уже накатил пару версий новых и KeyError - снится уже, мать его

Yury
08.07.2017
00:02:49
Если критично хранить состояние юзера - то да, можно хранить в бд, в Redis например

Карабанов
08.07.2017
00:03:18
а почему не в sqlite в котором я и работаю?

Yury
08.07.2017
00:03:33
Но имхо лучше хранить в переменной и просто проверять, типа if user_id not in states:
Если юзер забил на работу с ботом, то ему все равно будет через несколько дней проще начать сначала

Карабанов
08.07.2017
00:05:33

pride
08.07.2017
00:13:53
или держи состояние регистрации in_progress \ finished в бд и лей данные по мере ввода, когда всё заполнено - меняй статус на finished, если брейк был или юзер через два дня вспомнил - по статусу продолжай спрашивать с незаполненного поля
а не окончивших регу и висящих чисти из бд по таймеру

Карабанов
08.07.2017
00:15:19
вот я к этому варианту больше склонен - спасибо! =)

Valera
08.07.2017
05:06:25
Народ, как в Golang получить Update по Вебхуку. То есть вебхук уже установлен и нужно в коде получить то, что мне отправил Telegram . Типа аналог в PHP file_get_contents("php://input")

Vitaly
08.07.2017
05:15:01
https://www.google.com/search?q=golang+http+server

b0g3r
08.07.2017
07:19:16


Klim
08.07.2017
07:56:39

Sergey❄️
08.07.2017
10:53:39
Когда слишком много денег
Thank you for your generosity, we currently no longer accept donations via this bot.

b0g3r
08.07.2017
11:04:59
как они это аргументируют?)

Oleg
08.07.2017
11:06:48
как они это аргументируют?)
Когда ты тратишь больше миллиона долларов в месяц на Telegram и собираешь 500 через донаты - то смысла это делать нет.

b0g3r
08.07.2017
11:07:22
а зачем изначально тогда делали? в качестве презентации?
так у них вроде был бот такой же

Google

Oleg
08.07.2017
11:07:55

b0g3r
08.07.2017
11:08:27
чет по воспоминаниям у них был бот без реальной отправки денег, но показывающий интерфейс

Vaderoff
08.07.2017
11:09:46
Есть ли какая нибудь рекламная сеть в телеграме? Ну чтобы через моего бота была реклама, а мне платили за это

Shaman
08.07.2017
11:31:37
Создатель беседы не может из неё ливнуть?

Евгений
08.07.2017
11:34:26

Shaman
08.07.2017
11:35:01

Евгений
08.07.2017
11:35:11

Shaman
08.07.2017
11:35:14
Ок

Alex
08.07.2017
14:15:59

Yury
08.07.2017
14:37:38

Alex
08.07.2017
14:38:47

Pavel
08.07.2017
14:39:11
Во-первых никто из баз сейчас не хранит данные только на диске, у всех есть буферизация и кеширование в памяти. Во-вторых, так ли важно - будет стейт загружен из потсгреса за 0.001 секунду или из редиса за 0.0001 секунду?

Yury
08.07.2017
14:39:43

Sergey
08.07.2017
14:40:26
? твое лицо когда хванишь стейты в sqlite

Vaderoff
08.07.2017
14:42:43
Я вообще помйму обычный mysql юзаю

Yury
08.07.2017
14:44:50