Re: Модуль "Telegram"
Добавлено: Пн ноя 21, 2016 6:25 am
Странно. Этим сценарием кроме меня ещё один человек пользуется - полёт нормальный.
TelegramID заполнено у пользователя?
TelegramID заполнено у пользователя?
1. Исправилskysilver писал(а):С emoji на кнопках и размещением их на кнопках разобрался. Сделал себе динамическую клавиатуру. По ходу дела всплыло несколько нюансов.
1. Высота кнопок! Почему-то они выше, чем в других ботах (тот же Сбер или Яндекс). Если три ряда кнопок, то еще терпимо. А вот если два, то уже жесть. Надо что-то делать с этим.
2. При добавлении emoji перестают работать команды. При этом события при поиске ключевого слова через strripos() отрабатываются хорошо. Думаю надо команды тоже допилить, чтобы игнорировались emoji.
3. Из-за этих emoji опять же в общий чат Алисы пишутся пустые команды от пользователя.
4. Правильно понял, что у событий нет настроек безопасности (контроля доступа) и этим нужно заниматься на уровне кода? Может, вынести это в настройки по аналогии с командами? Сам не проверял, но вдруг события будут обрабатывать сообщения от левых пользователей, которые найдут моего бота. Не хотелось бы такого допустить.
Даhavenofear писал(а):Чтобы заработало нужно в классе User создать параметр TelegramID и вбить в него значения.
1. Все отлично. Кнопки теперь обычные.Eraser писал(а):1. Исправил
4. Сделал, чтобы обработка была только от зарегистрированных пользователей
Сделана блокировка обработки любого сообщения (кроме /start) для всех пользователей, которых нет в модуле.skysilver писал(а): 4. Вот тут не понял. Сделана обработка именно шаблонов поведения Мажордомо от зарегистрированных пользователей или событий модуля Телеграм (вкладка События)? Я имел в виду именно последнее. Сейчас галочки "Шаблоны" у пользователей не стоят, а команды с клавиатуры все равно обрабатываются. Обработчики у меня прописаны в событии messageHook (тип текстовое сообщение).
В принципе этого достаточно. Главное отсеять всех левых, а разграничивать между авторизованными пользователями можно уже на уровне кода события, если сильно захочется. ))Eraser писал(а):Сделана блокировка обработки любого сообщения (кроме /start) для всех пользователей, которых нет в модуле.
И не знаю имеет ли смысл делать для событий те же разрешения, что и для команд.
Вот это полезно. Не знал.Eraser писал(а):Для того чтобы после обработки кода в событии прекратить дальнейшую обработку команд и шаблонов, надо в коде задать значение переменной $skip=true;
это решается настройкой "Приоритет истории" для пользователей и say("test",1);havenofear писал(а):У меня небольшой вопрос. Сейчас как я понял все сообщения, которые говорит Алиса отправляются Администратору. Правильно? Возможно ли ввести в глобальную функцию Say аргумент (0-1), отправлять в телеграм или нет? Или как-то по-другому это реализовать, потому что не очень правильно, когда она шлёт всё подряд.
В этом то и вопрос... Что хотелось бы отключить только некоторые уведомления. Я понимаю, что можно отлючить все, а там где нужно - просто дублировать отправкой вручную. Но вот если бы ввести аргумент в функцию say...Eraser писал(а):это решается настройкой "Приоритет истории" для пользователей и say("test",1);havenofear писал(а):У меня небольшой вопрос. Сейчас как я понял все сообщения, которые говорит Алиса отправляются Администратору. Правильно? Возможно ли ввести в глобальную функцию Say аргумент (0-1), отправлять в телеграм или нет? Или как-то по-другому это реализовать, потому что не очень правильно, когда она шлёт всё подряд.
Не смог удержатьсяhavenofear писал(а):В этом то и вопрос... Что хотелось бы отключить только некоторые уведомления. Я понимаю, что можно отлючить все, а там где нужно - просто дублировать отправкой вручную. Но вот если бы ввести аргумент в функцию say...Eraser писал(а):это решается настройкой "Приоритет истории" для пользователей и say("test",1);havenofear писал(а):У меня небольшой вопрос. Сейчас как я понял все сообщения, которые говорит Алиса отправляются Администратору. Правильно? Возможно ли ввести в глобальную функцию Say аргумент (0-1), отправлять в телеграм или нет? Или как-то по-другому это реализовать, потому что не очень правильно, когда она шлёт всё подряд.
Код: Выделить всё
say("Тревога! Прорвало батарею!!!",1); -- будет отправлено в телеграм
say("Точное время восемь утра",0); -- не будет отправлено в телеграм