[Модуль] ChatBox (app_chatbox)

Разработка дополнительных модулей, подключение различных приложений.

Модератор: immortal

Аватара пользователя
Rifmik
Сообщения: 19
Зарегистрирован: Чт мар 16, 2017 11:07 pm
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Re: Альтернативный модуль лога сообщений Алисы

Сообщение Rifmik » Сб дек 23, 2017 8:48 pm

Jager писал(а):Можно ли добавить функцию запрета отображения сообщений от определенных отправителей, ну или возможность выводить сообщения только от выбранных ?
С помощью этой функции можно было бы например получить отдельный лог для сообщений от железа, которые не нужны остальным пользователям и лишь захламляют чат.
Вот у меня точно такое же желание, а может и проще - хочу сделать что бы Алиса ежечасно говорила время, но оно не отображалось в чате.
Нашел данный модуль, изменил формат стандартной говорилки на

Код: Выделить всё

saydym (timeNow(),1,1,2);

Как теперь сделать так, что бы не отображались сообщения от пользователя номер 2 в чатах?
Видео ролик моей Алисы
CONNECT
Аватара пользователя
Rifmik
Сообщения: 19
Зарегистрирован: Чт мар 16, 2017 11:07 pm
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Re: Альтернативный модуль лога сообщений Алисы

Сообщение Rifmik » Пн фев 05, 2018 1:22 am

Немного разобрался в модуле:
убрать лишние сообщения получилось, вставив пропуск сообщений от пользователя с известным ID. В моем случаи ID=2 (из примера выше)
Тогда код

Код: Выделить всё

    if ($res[$i]['MEMBER_ID']==0) {
     $res[$i]['NAME']=$comp_name;
     $res[$i]['AVATAR']=$this->config['AVATAR'];
     $res[$i]['COLOR']=$this->config['COLOR'];
     $left_right="class=\"left clearfix\"";
     $img_left_right="<span class=\"chat-img pull-left\">";
     $time_block="<small class=\"pull-right text-muted\">";
     $nic_block="class=\"primary-font\"";} 
Принимает следующий вид (добавить две первые строки к имеющемуся):

Код: Выделить всё

    if ($res[$i]['MEMBER_ID']==2) {
        continue;}
        
    if ($res[$i]['MEMBER_ID']==0) {
     $res[$i]['NAME']=$comp_name;
     $res[$i]['AVATAR']=$this->config['AVATAR'];
     $res[$i]['COLOR']=$this->config['COLOR'];
     $left_right="class=\"left clearfix\"";
     $img_left_right="<span class=\"chat-img pull-left\">";
     $time_block="<small class=\"pull-right text-muted\">";
     $nic_block="class=\"primary-font\"";} 
Правда данный вариант работает с общим числом строк лога, скрывая "лишние". Т.е. в отображенной истории не всегда будет равно указанному в настройке. Разбираюсь как это исправить
Видео ролик моей Алисы
CONNECT
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Альтернативный модуль лога сообщений Алисы

Сообщение nick7zmail » Пн фев 05, 2018 6:06 am

Это надо указывать при выборке из sql.

Код: Выделить всё

$res=SQLSelect("SELECT shouts.*, DATE_FORMAT(shouts.ADDED, '%H:%i') as DAT, TO_DAYS(shouts.ADDED) as DT, users.NAME, users.COLOR, users.AVATAR FROM shouts WHERE MEMBER_ID==0 OR MEMBER_ID==2 LEFT JOIN users ON shouts.MEMBER_ID=users.ID ORDER BY shouts.ADDED DESC, ID DESC $limit");
(не проверял...может не совсем правильный синтаксис...но суть такая.

При этом даже не надо править $res[$i]['MEMBER_ID']==2, т.к. выборка будет только по 2 и 0 пользователю.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
Rifmik
Сообщения: 19
Зарегистрирован: Чт мар 16, 2017 11:07 pm
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Re: Альтернативный модуль лога сообщений Алисы

Сообщение Rifmik » Ср фев 07, 2018 11:20 pm

Ваш запрос не работает, выдает ошибку синтаксиса, а за идею поиска спасибо! Буду изучать построения запросов.

У меня задача - выводить все события кроме ID==2
Видео ролик моей Алисы
CONNECT
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Альтернативный модуль лога сообщений Алисы

Сообщение nick7zmail » Чт фев 08, 2018 6:42 am

Возможно не == а просто = надо...а если кроме, то !=. Я говорил что не проверял)) но суть примерно такая. Дома могу составить рабочий запрос, если не забуду.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
Rifmik
Сообщения: 19
Зарегистрирован: Чт мар 16, 2017 11:07 pm
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Re: Альтернативный модуль лога сообщений Алисы

Сообщение Rifmik » Чт фев 08, 2018 11:28 pm

nick7zmail писал(а):Возможно не == а просто = надо...а если кроме, то !=. Я говорил что не проверял)) но суть примерно такая. Дома могу составить рабочий запрос, если не забуду.
Отрицание это первое что я проверял - не сработало, тогда стал пробовать вариации с равно. Выдает ошибку.
На сколько понял проблема в синтаксисе исключений.
Если будет возможность - посмотрите )
Видео ролик моей Алисы
CONNECT
fandaymon
Сообщения: 1553
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: Альтернативный модуль лога сообщений Алисы

Сообщение fandaymon » Пт фев 09, 2018 12:48 am

Насколько я понимаю sqlselect просто передаёт запрос mysql, а у него свой синтаксис. Не равно записывается например так <>, а WHERE должен быть после джойнов... Равно в условии должно быть одинарным

SELECT shouts.*, DATE_FORMAT(shouts.ADDED, '%H:%i') as DAT, TO_DAYS(shouts.ADDED) as DT, users.NAME, users.COLOR, users.AVATAR FROM shouts LEFT JOIN users ON shouts.MEMBER_ID=users.ID WHERE MEMBER_ID<>2 ORDER BY shouts.ADDED DESC, ID DESC $limit
За это сообщение автора fandaymon поблагодарил:
Rifmik (Пт фев 09, 2018 8:57 am)
Рейтинг: 1.16%
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Альтернативный модуль лога сообщений Алисы

Сообщение nick7zmail » Пт фев 09, 2018 6:31 am

Конечно в sql синтаксисе всё...точно...<> =D...запамятовал, т.к. не было под рукой системы...А вот про порядок не знал...джойнами как то в своих модулях не пользовался.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
Rifmik
Сообщения: 19
Зарегистрирован: Чт мар 16, 2017 11:07 pm
Благодарил (а): 2 раза
Поблагодарили: 1 раз

Re: Альтернативный модуль лога сообщений Алисы

Сообщение Rifmik » Пт фев 09, 2018 9:00 am

fandaymon писал(а):Насколько я понимаю sqlselect просто передаёт запрос mysql, а у него свой синтаксис. Не равно записывается например так <>, а WHERE должен быть после джойнов... Равно в условии должно быть одинарным

SELECT shouts.*, DATE_FORMAT(shouts.ADDED, '%H:%i') as DAT, TO_DAYS(shouts.ADDED) as DT, users.NAME, users.COLOR, users.AVATAR FROM shouts LEFT JOIN users ON shouts.MEMBER_ID=users.ID WHERE MEMBER_ID<>2 ORDER BY shouts.ADDED DESC, ID DESC $limit
ДА! Это работает, спасибо!
Вот бы не подумал что не равно описывается как <>. В стравках по SQL указывается !=
Век живи век учись )
Видео ролик моей Алисы
CONNECT
pdmitry2
Сообщения: 90
Зарегистрирован: Ср фев 06, 2013 1:12 pm
Откуда: Россия, Москва
Благодарил (а): 35 раз
Поблагодарили: 6 раз

Re: Альтернативный модуль лога сообщений Алисы

Сообщение pdmitry2 » Вт фев 20, 2018 12:14 pm

После одного из последних обновлений (альфа), модуль стал выглядеть вот так:
СпойлерПоказать
Безымянный.jpg
Безымянный.jpg (198.26 КБ) 4216 просмотров
.
Как поправить?
Ответить