Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Kорзина _ От: Бан за злоупотребление смайлами

Автор: Setuper 8.5.2009, 0:31

Смайлов полно, и все они разные. Все смайлы предусмотреть нельзя. Какова идея этого скрипта? Как реализовывать не понятно.

Автор: valdis73 8.5.2009, 2:25

Да идея на самом деле супер. Защита от флудерастов.

Автор: Lesh™ 8.5.2009, 3:03

Поддерживаю идею...
Можено ли сделать бан на повторяющееся фразы или слова, например за:
:роза: :роза: :роза:
или
:роза: :цветы: :роза: :цветы: :роза:
Надеюсь смысл понятен.

Автор: valdis73 8.5.2009, 12:03

Вот сделал следущее:

Код
--bot of hub
botname = "Антибот"
--Запрещенные слова
trigs = {
  "!say",":lol:","=)",":-D",":)",";-)","LOL"
}
--наблюдение за чатом
function ChatArrival(user,data)
  Core.GetUserAllData(user)
  local data = string.sub(data,1,-2)
  local s,e,msg = string.find(data,"^%b<>%s(.*)$")
  if not user.bOperator then -- простой плохой пользователь в главном чате
    for i = 1,#trigs do
      if (string.find(msg,trigs[i]) ~= nil) then
        Core.SendPmToNick(user.sNick,botname, user.sNick..": ты написал: "..msg.." Эта команда запрещена к использованию на хабе, т.к. ботам запрещено швырять смайлы в чат ." )
        Core.SendPmToOps(botname,user.sNick.." пытался использовать запрещенную команду флуда смайлами")
        return true
      end
    end
  end
end


Слова нужно или смайлы запрещённые добавлять самому. Смайлы передаются всей кучей в личку хулигана. Но реагирует и на один и на сотню.
А как сделать , что бы реагировал на 2 подряд а не на один ?

Автор: Setuper 8.5.2009, 12:34

Данный код вообще запрещает всем использовать смайлы, кроме операторов.
Так не пойдёт.

Считаю идею тухлой.

Автор: fixx 8.5.2009, 12:52

Думатся, что нужен скрипт, запрещающий повторение слова в сообщении более определенного количества раз.
Сюда же прикрутить повторение символов и одинаковых сообщений подряд.
Вроде так? big_smile.gif

Автор: valdis73 8.5.2009, 13:49

Конечно так. Но вот кто это сделает?. И было бы неплохо ограничивать по профилям.

Автор: Qwert 8.5.2009, 21:06

Цитата(Setuper @ 8.5.2009, 12:34) *
Данный код вообще запрещает всем использовать смайлы, кроме операторов.
Так не пойдёт.

Считаю идею тухлой.

Я не согласен. Не знаю, как у других, но на моем хабе полно любителей разбрасываться смайлами. Идея проста: суть ее я четко и ясно изложил в начале. А разве нельзя сделать так, чтобы смайлы самому можно было добавлять!?

P.S. Поздравляю всех с Днем великой победы!!!

Автор: D-tox 10.5.2009, 7:48

Видел такой скрипт SmilesLimiter под API1 от автора Niсkolya.


Нашел его, вариант переправленный под API2, и свою его переработку с заменой сообщения без бана, но что-то не работает "Прикрепление файлов"

Автор: Qwert 10.5.2009, 10:41

Покопался и нашел этот скрипт в инете. Работоспособность проверена на PtokaX 0.4.1.1.
 Бан_за_смайлы_API_2.rar ( 3.62 килобайт ) : 42

Автор: Nickolya 10.5.2009, 12:59

Цитата(D-tox @ 10.5.2009, 8:48) *
но что-то не работает "Прикрепление файлов"

Как не работает??? Опиши проблему, ошибку, какой клиент, работает ли в нем js и т.д.

Автор: valdis73 10.5.2009, 15:50

Ошибок не показывает. Просто тупо пропускает смайлы

Автор: D-tox 10.5.2009, 16:58

Цитата(Nickolya @ 10.5.2009, 12:59) *
Как не работает??? Опиши проблему, ошибку, какой клиент, работает ли в нем js и т.д.

Не работает в клиентах Opera9.62 (в Опере, еще понятно, js с особенностями) и IE6. При ответе, ниже поля ввода есть надпись "Прикрепление файлов", но никакого элемента управления рядом нет. Я думал, это так и должно быть у новичков...

valdis73, Файлик с описаниями смайлов привёл в соответствие со своим набором смайлов? Впрочем...

Nickolya, а не нужно поменять
Код
Core.TempBan(tCurUser,iBanTime,sBanReason,sBot,0)

на
Код
BanMan.TempBan(tCurUser,iBanTime,sBanReason,sBot,true)

?

Автор: Qwert 10.5.2009, 21:54

Цитата(valdis73 @ 10.5.2009, 15:50) *
Ошибок не показывает. Просто тупо пропускает смайлы

Не знаю, у меня все пашет. Вот второй день не могу нарадоваться! Только флудеры чуть огорчены. big_smile.gif

Автор: Setuper 10.5.2009, 21:57

ага, надо так:

Код
BanMan.TempBan(tCurUser,iBanTime,sBanReason,sBot,true)

Автор: Lesh™ 10.5.2009, 22:23

Цитата(Qwert @ 10.5.2009, 10:41) *
Покопался и нашел этот скрипт в инете. Работоспособность проверена на PtokaX 0.4.1.1.
 Бан_за_смайлы_API_2.rar ( 3.62 килобайт ) : 42


10.05.2009 22:12:09 - c:\DC\scripts\51_SmilesLimiter.lua:112: bad argument #1 to 'pairs' (table expected, got nil)

beat_plaster.gif

Автор: Derk_B_P 11.5.2009, 0:41

Думаю, это ваше решение проблемы. Скрипт не банит, но, флуд искореняет.

Код
-- Стоп Треп - запрещает говорить больше N сообщений подряд в чате
-- Автор Nickolya
-- 06.11.08

sMsg = "Вы разговариваете сам с собой. Дождитесь пока кто-то вам ответит!"
iCnt = 5 --количество пропускаемых сообщений

function Main()
    sOne = 1
    sBot = frmHub:GetHubBotName()
    Core = {}
    Core.SendToUser = function(tUser, sData)
        tUser:SendData(sData)
    end
end

function OnStartup()
    sBot = SetMan.GetString(21)
end

iCounter = 0
sNick = ""

function ChatArrival(tUser)
    local sUserNick = tUser.sNick or tUser.sName
    if sNick == sUserNick then
        if iCounter >= iCnt then
            Core.SendToUser(tUser, "<"..sBot.."> "..sMsg)
            return sOne or true
        else
            iCounter = iCounter + 1
        end
    else
        sNick = sUserNick
        iCounter = 1
    end
end

Автор: Nickolya 11.5.2009, 1:20

Цитата(D-tox @ 10.5.2009, 17:58) *
Не работает в клиентах Opera9.62 (в Опере, еще понятно, js с особенностями) и IE6. При ответе, ниже поля ввода есть надпись "Прикрепление файлов", но никакого элемента управления рядом нет. Я думал, это так и должно быть у новичков...


А вот это глюк, причем у тебя, все отлично пашет везде, сам пользуюсь оперой 9.63, ие 6 и 7, в гугл хроме и фаерфоксе тоже все ок, так что ищи проблему у себя, в жабабаскриптах, а может еще глубже... Система выглядит вот так:


Цитата(D-tox @ 10.5.2009, 17:58) *
Nickolya, а не нужно поменять
Код
Core.TempBan(tCurUser,iBanTime,sBanReason,sBot,0)

на
Код
BanMan.TempBan(tCurUser,iBanTime,sBanReason,sBot,true)

?

Нужно, давно это было, не судите стого big_smile.gif

Автор: Lesh™ 11.5.2009, 23:19

Цитата(Qwert @ 10.5.2009, 10:41) *
Покопался и нашел этот скрипт в инете. Работоспособность проверена на PtokaX 0.4.1.1.
 Бан_за_смайлы_API_2.rar ( 3.62 килобайт ) : 42


Помогите...

Цитата
11.05.2009 22:54:04 - c:\DC\scripts\51_SmilesLimiter.lua:112: bad argument #1 to 'pairs' (table expected, got nil)
11.05.2009 22:56:18 - c:\DC\scripts\51_SmilesLimiter.lua:112: bad argument #1 to 'pairs' (table expected, got nil)
11.05.2009 22:57:14 - c:\DC\scripts\51_SmilesLimiter.lua:112: bad argument #1 to 'pairs' (table expected, got nil)
11.05.2009 22:57:59 - c:\DC\scripts\51_SmilesLimiter.lua:112: bad argument #1 to 'pairs' (table expected, got nil)

Автор: Nickolya 12.5.2009, 0:38

Попробуй заменить

Код
    -- Папка бота:
    sPath = "SmilesLimiter\\"
на
Код
    -- Папка бота:
    sPath = Core.GetPtokaXPath().."SmilesLimiter/"

Автор: Lesh™ 12.5.2009, 5:43

Цитата(Nickolya @ 12.5.2009, 0:38) *
Попробуй заменить
Код
    -- Папка бота:
    sPath = "SmilesLimiter\\"
на
Код
    -- Папка бота:
    sPath = Core.GetPtokaXPath().."SmilesLimiter/"

пробвал, тоже самое.... nothing_to_say.gif

Автор: Lesh™ 12.5.2009, 15:17

Nickolya, спасибо за скрипт, теперь работает, тока не плохо было бы еще, что бы было предупреждение и смайлы не проходили в чат))))а то многие умники по 100 смайлов кидают, а скрипт все рано их пропускает (((

Автор: Nickolya 13.5.2009, 9:01

1. Чтобы по получению предупреждений о бане, именно когда превышен лимит предупреждений, дописываем сразу после

Код
                BanMan.TempBan(tCurUser,iBanTime,sBanReason,sBot,true)
такую строчку:
Код
                return true

2. Чтобы смайлы не пропускались в чат при предупреждении дописываем после
Код
                Core.SendToUser(tCurUser, "<"..sBot.."> *** "..tCurUser.sNick..", в одном сообщении разрешено максимум "..(iBadSmilesCount - 1).." смайлов! В твоем же их "..iSmilesCount.." штук! Будь аккуратнее, после "..iWarnsToBanUser.." таких предупреждений ты получишь бан на "..iBanTime.." минут!!! Сейчас у тебя "..tUsersWarns[tCurUser.sNick].." предупржедений.")
это:
Код
                return true

3. А если хотите ограничить количество смайлов в сообщении, чтобы когда превышена какая-то граница, сообщение не отсылалось, дописываем после, но это при условии что вы не сделали пункт два!
Код
    -- Кол-во смайлов за которое юзер будет получать предупреждение:
    iBadSmilesCount = 6
вот такие строчки
Код
    -- Кол-во смайлов за которое юзер будет получать предупреждение И сообщение не будет пропускаться в чат
    iBadSmilesCountLimit = 20

И ПЕРЕД вот этим
Код
                Core.SendToUser(tCurUser, "<"..sBot.."> *** "..tCurUser.sNick..", в одном сообщении разрешено максимум "..(iBadSmilesCount - 1).." смайлов! В твоем же их "..iSmilesCount.." штук! Будь аккуратнее, после "..iWarnsToBanUser.." таких предупреждений ты получишь бан на "..iBanTime.." минут!!! Сейчас у тебя "..tUsersWarns[tCurUser.sNick].." предупржедений.")
добавляем следующий код:
Код
                if iSmilesCount >= iBadSmilesCountLimit then
                    Core.SendToUser(tCurUser, "<"..sBot.."> *** "..tCurUser.sNick..", в одном сообщении разрешено максимум "..(iBadSmilesCount - 1).." смайлов! В твоем же их "..iSmilesCount.." штук! Будь аккуратнее, после "..iWarnsToBanUser.." таких предупреждений ты получишь бан на "..iBanTime.." минут!!! Сейчас у тебя "..tUsersWarns[tCurUser.sNick].." предупржедений. А еще и ввиду того что ты превысил предел в "..iBadSmilesCountLimit.." смайлов, твое сообщение не было пропущено в чат!;)")
                    return true
                end

Пробуйте... big_smile.gif И обращайтесь, всегда попробуем помочь и понять!

Автор: Lesh™ 13.5.2009, 19:36

Еще раз спасибо, работает, но немного не так (((
при превышении лимита смайлов, предупреждения раздает и не банит))) бан будет как только смайлов станет меньше 20

Цитата
[18:18:15] <PtokaX> *** Lesh™, в одном сообщении разрешено максимум 5 смайлов! В твоем же их 33 штук! Будь аккуратнее, после 3 таких предупреждений ты получишь бан на 10 минут!!! Сейчас у тебя 10 предупреждений. А еще и ввиду того что ты превысил предел в 20 смайлов, твое сообщение не было пропущено в чат!