
Aztwin LK
27.06.2017
19:08:21
И документация по либе тоже нормальная
Ни в чём
Либа это набор функций класса
Вот и всё

Google

Aztwin LK
27.06.2017
19:08:55
Ну или классов

Serg
27.06.2017
19:09:00
тебе по сути нужно
- отправка команды (саму команду собрать легко),
- отправка картинок, аудио
и все
команда - это по сути массив с парой-тройкой стандартных элементов массива + опциональные
и либа нафиг не нужна

Aztwin LK
27.06.2017
19:10:10
Ну по сути да

Serg
27.06.2017
19:10:14
вернее ты пишешь сам свою для себя. Заодно разбираешься с апи

Aztwin LK
27.06.2017
19:10:18
Когда тебе нужно просто пару функций
Легче самому написать
Делов на полчаса-час

Fedor
27.06.2017
19:17:12
и еще вопрос...
вот допустим юзер писал боту и бот ждет от него какого-то ответа (на каком-то из так называемых состояний)... и через несколько дней он ему заново пишет, забыв что когда-то с ним общался.. не нужно предусматривать то, что это уже как бы новый диалог?
понятно, юзер может историю читать и все такое

Serg
27.06.2017
19:20:10
chatId - вот твой диалог с юзером. Просто храни его у себя

Google

Ajdar
27.06.2017
19:20:14
незнаете случайно почему @U_Furan игнорит?

Fedor
27.06.2017
19:21:18
еще вопрос... Допустим моему боту пишут два человека. И я одному человеку хочу сообщить как связатсья с другим - я могу написать ему username другого человека. А если у этого ДРУГОГО нет username? Можно сделать что-то типа ссылки на его профиль?
если я перешлю id второго пользователя - толку ноль

Богдан
27.06.2017
19:32:47
вроде как нельзя
Публичный юзернейм как раз сделан для тех, кто хочет общаться с незнакомыми людьми без шейринга номера
Если человек не хочет, чтобы ему писали - он не ставит ник

Serg
27.06.2017
19:33:12

Fedor
27.06.2017
19:45:40

Serg
27.06.2017
19:46:30
если рассылки - то чатID это равно самому userId - который ты и так сохраняешь в базу
в общем виде канеш кошернее хранить отдельно chatId - т.к. не всегда оно будет совпадать. например, твоего бота добавят в группу, тогда ты будешь рассылкой писать по сути в группу

Vaderoff
27.06.2017
19:51:52
У кого нибудь есть рабочий опенсорсный бот на питоне желательно на телеботе со стейт машиной , мне пример просто посмотерть, как стейты реализованы

sardelkin
27.06.2017
19:52:24
поцоны, switch backend в андроиде что делает? гугол не помог
есть у кого бетки на андроиде продолжают незапускаться?

Rocket
27.06.2017
19:54:08

You
27.06.2017
19:54:16
второй

sardelkin
27.06.2017
19:54:45
второй
более модный и прогрессивный? у него название есть чтобы загуглить?

You
27.06.2017
19:54:58
нет названия
просто второй апи

sardelkin
27.06.2017
19:55:13

Google

Fedor
27.06.2017
19:56:52
по БД подскажет кто-то?

Скрудж
27.06.2017
19:57:31

Ilya
27.06.2017
20:01:27
А кто какие пеймент провайдеры подключал к ботам, какие появлялись нюансы?

Elena
27.06.2017
20:04:27

sardelkin
27.06.2017
20:05:04

Elena
27.06.2017
20:05:35
ну хотть какая-то инфа
Ну это полупустой сервер, как бы отдельный от основного инстанса, там нет ничего из того что есть здесь, отдельный аккаунт регаешь.
по такому же принципу работает TamTam от мейл.сру
потому что ТамТам простой форк телеграма

sardelkin
27.06.2017
20:06:13

Benyomin
27.06.2017
20:17:15

Евгений
27.06.2017
20:17:38
Блин, код старый, но рабочий
https://github.com/MasterGroosha/telegram-reminder-bot

Sergey
27.06.2017
20:20:03
подскажите 401 ошибка в чем проблема?
{"ok":false,"error_code":401,"description":"Unauthorized"}

Serg
27.06.2017
20:20:27
не авторизован

Sergey
27.06.2017
20:20:56

Vaderoff
27.06.2017
20:21:15

Евгений
27.06.2017
20:22:50
что то не очень понял как у тебя стейты сделаны, можешь описать?
В StateMachine описаны возможные состояния (через Enum)
В хранилище Shelve (key-value) хранятся пары user_id <--> состояние
Далее у меня стоят хэндлеры на определённые состояния.
т.е. бот получает сообщение от юзера, сразу смотрит, на каком этапе у них общение, и дальше отвечает нужным образом, изменяя или сохраняя имеющееся состояние

Vaderoff
27.06.2017
20:23:41
Блять, а нормально что у меня стейты храняться в бд ?

Евгений
27.06.2017
20:24:06
Почему нет? Я просто вынес в отдельное хранилище, ибо мне так было проще, ну и чтоб не ебашить постоянно SQLite запросами

Google

Евгений
27.06.2017
20:24:25
Вместо Shelve рекомендую либо TinyDB, либо (мой выбор) Vedis

Vaderoff
27.06.2017
20:24:45
у меня clearDB

Евгений
27.06.2017
20:25:01
Я хз, что это, и даже не хочу вникать, если честно

Vaderoff
27.06.2017
20:25:09
mysql

Elena
27.06.2017
20:25:43

Vaderoff
27.06.2017
20:25:50
А что такое Enum?

Elena
27.06.2017
20:25:52
Я пытался вникнуть в стейт монад, но ебнулся головой

Serg
27.06.2017
20:25:55
жируете вы на питоне )))
на пыхе если скрипт запускается через nginx, то в памяти всегда стартует новая версия кода
а потому стейты вынуженно нужно хранить где-то отдельно - файлы, бд, кеш...

Elena
27.06.2017
20:26:02

Евгений
27.06.2017
20:26:11

Fedor
27.06.2017
20:26:24
состояние юзера в базу лучше числом писать (1,2,3) и потом сравнивать или текстом (vvod_imeni)?

Евгений
27.06.2017
20:26:36

Elena
27.06.2017
20:27:05
А что такое Enum?
ну типо у тебя есть типы сообщения Voice, Text, Video, Photo, Document, вот при обращении
MessageType == Voice и т.д. Voice/Text/Video/Photo будут enum
Простой пример

Евгений
27.06.2017
20:27:21
Эм..вряд ли речь об этом
Так, ща запилю реально простой пример на псевдокоде

Benyomin
27.06.2017
20:27:52

Elena
27.06.2017
20:28:14
изи делается конечный автомат

Yury
27.06.2017
20:28:58

Google

Serg
27.06.2017
20:30:18
Redis же, или memcached
Миллион лет как все используют
нее, я не про то.
Редис понятно, что внешнее
Но если у вас запущен скрипт постоянно висящий в памяти, то у него есть "постоянное хранилище переменных" в памяти. И хранить временное состояние достаточно просто в локальном массиве.

Vaderoff
27.06.2017
20:30:22

Serg
27.06.2017
20:30:57

Евгений
27.06.2017
20:31:20
======== Состояния ==========
ЮЗЕР_НАЧАЛ_ДИАЛОГ = 1
ЮЗЕР_ВВОДИТ_ИМЯ = 2
ЮЗЕР_ВВОДИТ_ФАМИЛИЮ = 3
====== Псевдокод =======
Если пользователя нет в БД или его состояние = "ЮЗЕР_НАЧАЛ_ДИАЛОГ":
Отправить сообщение "Привет! Введите Ваше имя!"
Задать пользователю состояние ЮЗЕР_ВВОДИТ_ИМЯ
Если пришло сообщение от пользователя, а его состояние = "ЮЗЕР_ВВОДИТ_ИМЯ"
Если имя корректное:
Отправить сообщение "Спасибо! Теперь введите фамилию!"
Задать пользователю состояние ЮЗЕР_ВВОДИТ_ФАМИЛИЮ
Если имя некорректное:
Отправить сообщение "Некорректное имя, введите другое" (состояние при этом не меняется)
Если юзер ввёл "Отмена":
Отправить сообщение "Действие отменено"
Задать пользователю состояние ЮЗЕР_НАЧАЛ_ДИАЛОГ
(аналогично для следующего шага)

Vaderoff
27.06.2017
20:31:42

Fedor
27.06.2017
20:32:05

Benyomin
27.06.2017
20:32:51

Евгений
27.06.2017
20:33:25

Serg
27.06.2017
20:33:37
https://tproger.ru/translations/finite-state-machines-theory-and-implementation/

Vaderoff
27.06.2017
20:34:28

Benyomin
27.06.2017
20:34:43
а в редисе есть возможность хранить данные после перезагрузки?

Fedor
27.06.2017
20:34:52
партнерской программы :D
найти заказ, поиск заказа))

Serg
27.06.2017
20:35:15

Elena
27.06.2017
20:35:23
из него восстановить изи

Benyomin
27.06.2017
20:35:37
фига
буду курить, спасибо

Serg
27.06.2017
20:35:48
потому я лучше педпочту связку мемкеш + mysql