myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 
 
Ответить в данную темуНачать новую тему

> RusHub: Запрет неразрывного пробела, rushub

Теги
Нет тегов для показа
ShadoWx
сообщение 26.1.2012, 16:34
Сообщение #1


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 216
Регистрация: 23.10.2008
Из: Саратов
Пользователь №: 865
Спасибо сказали: 60 раз




Автор: Setuper
Название: Запрет неразрывного пробела в чате или ПМ.
Описание:
Этот символ не распознается хаб-клиентами и им могут воспользоваться спамеры для рассылки любой рекламы, обхода антимата и пр.
Идею буквально вчера предложил Andrean, когда проверял мои RegEx'ы.

Если не хотите перегружать хаб скриптами, то просто добавьте этот символ в антирекламу.
Символ неразрывного переноса виден в блокноте, просто скопируйте и поставьте этот символ в вашу антирекламу.

Код
local sBot = Config.sHubBot
    
function OnChat(UID, sData)
  if UID.iProfile == -1 or UID.iProfile == 3 then
    local sText = sData:sub(#UID.sNick + 4, -1)
    if sText:find"\160" then
      Core.SendToUser(UID, "*** Использование неразрывного пробела в тексте запрещено!", sBot)
      return true
    end
  end
end
    
function OnTo(UID, sData)
  if UID.iProfile == -1 or UID.iProfile == 3 then
    local sTo, sText = sData:match("^%$To:%s+(%S+)%s+From:%s+(.*)")
    if sText:find"\160" then
      Core.SendToUser(UID, "*** Использование неразрывного пробела в тексте запрещено!", sBot, sTo)
      return true
    end
  end
end


P.S. Надеюсь вместе, мы шаг за шагом увеличим функционал нашего хаб-сервера .. Спасибо Илье за правку черновой копии скрипта.


Спасибо сказали:
Go to the top of the page
+Quote Post
Ksan
сообщение 26.1.2012, 17:21
Сообщение #2


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




ShadoWx, разве в АПИ Русхаба нет возможности объединить в одной функции и чат и приват?
Если есть, сделай это, так как код один и тот же, только шапка разная.
При одинаковой функциональности кода будет 2 раза меньше.
И ещё - делай сразу так:
Код
if sData
вместо
Код
if sText
и удали предыдущую строку, где ты получаешь sText.
Для твоего кода совершенно ни к чему захватывать сообщение отдельно.
Go to the top of the page
+Quote Post
Setuper
сообщение 26.1.2012, 17:31
Сообщение #3


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Ksan,

Код
Core.SendToUser(tUser, "*** Использование неразрывного пробела в тексте запрещено!", sBot)


Код
Core.SendToUser(tUser, "*** Использование неразрывного пробела в тексте запрещено!", sBot, sTo)


чуешь разницу?
Go to the top of the page
+Quote Post
Ksan
сообщение 26.1.2012, 17:34
Сообщение #4


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




Setuper, я это видел. К тому же, там вообще не sTo должно быть, а sFrom, если уж на то пошло.
Но разве ты не делал возможность объединять функции, делая разницу только в аргументах?
Я что-то такое помню из твоих давних разговоров.
Ты вроде говорил, что подставляешь один аргумент - сообщение идёт туда.
Ведь sFrom = tUser.sNick (или как там он у вас в Русхабе пишется)

В соообщении от бота sTo совершенно ни к чему, это же ник того, кому пытался юзер отправить сообщение.
А нужен ли вообще вместо sTo - sFrom, я не могу сказать, ибо в АПИ Русхаба не разбираюсь.
В Птоке точно не нужен, так как направление уже указано через tUser.
Go to the top of the page
+Quote Post
ShadoWx
сообщение 26.1.2012, 17:56
Сообщение #5


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 216
Регистрация: 23.10.2008
Из: Саратов
Пользователь №: 865
Спасибо сказали: 60 раз




Сейчас протестировал скрипт, у меня он пропускает текст с неразрывным интервалом ... просто копирую из блокнота этот символ в чат или пм

я запутался.. what1.gif
Go to the top of the page
+Quote Post
Setuper
сообщение 26.1.2012, 20:28
Сообщение #6


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Ksan, ну если не разбираешься, то зачем советы давать?

В русхабе в функции Core.SendToUser четвёртый аргумент отвечает за личку, то есть команда:
Код
Core.SendToUser(tUser, sMsg, sBot, sTo)
отправит сообщение sMsg в личку между пользователем tUser и ником sTo с именем бота sBot в сообщении.

По NMDC протоколу это будет выглядеть так:
Код
$To: [tUser.sNick] From: [sTo] $<[sBot]> [sMsg]|
Go to the top of the page
+Quote Post
Ksan
сообщение 26.1.2012, 20:29
Сообщение #7


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




Setuper, как у тебя всё запутано!
Извини, даже после твоего пояснения я не понял, то ли ты там описал небрежно, то ли что..Не хочется развивать разбор этих нюансов..
Что до обвинений меня - так помогайте сами, человек уже запарил чат хаба Майдц, мой приват там же, я хоть пытаюсь помочь, а те, кто занимается Русхабом, упорно делают вид, что не замечают его просьбы. И тут ты появился только после того, когда я что-то не так подсказал. Как понимаю, так и подсказываю.

ShadoWx, вот тебе работающий на Птоке код:
Код
function ChatArrival(tUser, sData)
    local sMsg = sData:match("^%b<>%s(.-)$")
    if sMsg:find"­" then
        Core.SendToNick("ShadoWx", "Неразрывный перенос")
        return true
    elseif sMsg:find" " then
        Core.SendToNick("ShadoWx", "Неразрывный пробел")
        return true
    end
end
Попытайся переделать его под себя. Хотя вроде они похожи.


Спасибо сказали:
Go to the top of the page
+Quote Post
Setuper
сообщение 26.1.2012, 20:39
Сообщение #8


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




ShadoWx, подправил твой первый пост, теперь должно работать
Go to the top of the page
+Quote Post
ShadoWx
сообщение 26.1.2012, 21:27
Сообщение #9


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 216
Регистрация: 23.10.2008
Из: Саратов
Пользователь №: 865
Спасибо сказали: 60 раз




Ksan, Setuper, большое спасибо surrender.gif
Go to the top of the page
+Quote Post
Setuper
сообщение 26.1.2012, 21:38
Сообщение #10


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




Ksan, Ты думаешь я ему ни подсказываю?

Пожалуйста не обижайся на мою критику, я иногда бываю резок, когда дело касается нюансов. Отчасти я так сказал только для того чтобы ты обратил внимание на нюансы, а не пытался заменить код на более простой, но менее функциональный.

Теперь аналог этого кода для птохи, для того чтобы можно было попробовать как это работает:

Код
local sBot = "Bot"

function ChatArrival(tUser, sData)
  if tUser.iProfile == -1 or tUser.iProfile == 3 then
    local sText = sData:sub(#tUser.sNick + 4, -2)
    if sText:find"\160" then
      SendToUser(tUser, "*** Использование неразрывного пробела в тексте запрещено!", sBot)
      return true
    end
  end
end
    
function ToArrival(tUser, sData)
  if tUser.iProfile == -1 or tUser.iProfile == 3 then
    local sTo, sText = sData:sub(1, -2):match("^%$To:%s+(%S+)%s+From:%s+(.*)")
    if sText:find"\160" then
      SendToUser(tUser, "*** Использование неразрывного пробела в тексте запрещено!", sBot, sTo)
      return true
    end
  end
end

function SendToUser(tUser, sMsg, sNick, sSender)
  if sSender and sNick then
    Core.SendToUser(tUser, (("$To: %s From: %s $<%s> %s"):format(tUser.sNick, sSender, sNick, sMsg)))
  elseif sNick then
    Core.SendToUser(tUser, (("<%s> %s"):format(sNick, sMsg)))
  end
end


P.S. Для того чтобы набрать неразрывный пробел нужно включить Num Lock и, удерживая alt, набрать 0160 на расширенной клавиатуре, после этого отпустить alt.


Спасибо сказали:
Go to the top of the page
+Quote Post
Enyby
сообщение 26.1.2012, 21:58
Сообщение #11


Освоившийся участник
*****

Группа: Пользователи
Сообщений: 391
Регистрация: 4.11.2009
Из: Дом
Пользователь №: 4 923
Спасибо сказали: 239 раз




Setuper, можно набрать ALT+255 - эффект будет тот же. Просто в первом случае набор идет через юникод, а во втором через win1251.
Go to the top of the page
+Quote Post
Ksan
сообщение 26.1.2012, 22:20
Сообщение #12


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 723
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 657 раз




Да знаю я, как эти символы набрать на клавиатуре..
Go to the top of the page
+Quote Post

Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No new ВАЖНО: Topic has attachmentsМодули для скриптов RusHub
26 Setuper 45 394 21.3.2017, 17:31 Посл. сообщение: Alexey
No new Topic has attachmentsАнтитор, API2 | Запрет Tor
14 KCAHDEP 16 602 21.8.2016, 1:10 Посл. сообщение: 000000
No New Posts RusHub.org
Решаем судьбу домена
12 Nickolya 21 307 19.5.2016, 4:58 Посл. сообщение: DEN 007
No New Posts Перенос базы пользователей с RusHub на PtokaX
3 Angel_D 8 908 5.12.2015, 2:11 Посл. сообщение: Saymon21
No new ВАЖНО: Topic has attachmentsСкрипт банов для RusHub
тестим и комменьтруем
79 Wariner 104 604 28.9.2015, 13:34 Посл. сообщение: NeirRon
No new Topic has attachmentsRusHub. Пакеты для Debian/Ubuntu
47 KT315 62 248 24.5.2015, 23:14 Посл. сообщение: KT315
No New Posts Запрет наказаний админов (ОПов) в одинаковых рангах
Банит один мастер другова
2 AndreiDC 5 720 31.10.2014, 20:30 Посл. сообщение: Артём
No New Posts ВАЖНО: Topic has attachmentsХаблист RusHub
13 ShadoWx 25 379 7.10.2014, 8:08 Посл. сообщение: mod
No new Topic has attachmentsУстановка rushub на ubuntu 12.04
для домохозяек и пенсионеров
43 hjet 48 436 2.10.2014, 12:16 Посл. сообщение: kotuk
No New Posts RusHub Сжатие
Не работает
1 ShadoWx 7 098 23.9.2014, 10:48 Посл. сообщение: PPA
No new Topic has attachmentsВопросы по RusHub
Технические вопросы
316 Jaska 269 300 19.12.2013, 13:59 Посл. сообщение: mod
No New Posts RusHub через экран, как?
Коннект на хаб во внутренней сети.
3 INTROVERT 8 615 16.6.2013, 17:17 Посл. сообщение: dj hoodo
No New Posts RusHub & Erlang
0 -Гость_ghost_*- 6 368 5.2.2013, 1:34 Посл. сообщение: -Гость_ghost_*-
No New Posts Запрет на скачивания у интернет пользователей
Как запретить что бы пользователи с интерента не могли искать и скачив
1 reidel_viktor 7 144 12.1.2013, 16:19 Посл. сообщение: Артём
No New Posts RusHub english v
3 SnowBOSS 8 650 7.1.2013, 21:17 Посл. сообщение: Артём

 



RSS Сейчас: 27.11.2024, 2:59