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

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

MyDC.ru _ Служебные скрипты [PtokaX] _ SmilesLimiter

Автор: Qwert 8.5.2009, 0:17

Название скрипта: SmileLimiter
Версия API: API 2
Автор: Nickolya
Описание скрипта: Банит за флуд смайлами

 SmilesLimiter.lua ( 5.04 килобайт ) : 87
 SmilesLimiter.rar ( 1.42 килобайт ) : 143
 

Автор: steppnov 24.11.2009, 10:04

чот не пойму в чом проблема ?
Синтаксис D:\Program Files\ptokax\scripts\SmilesLimiter.lua:128: attempt to index local 'sHandle' (a nil value)
помогите кто может beat_brick.gif


вроде разобрался но выдаёт новую ошибку
Синтаксис D:\Program Files\ptokax\scripts\SmilesLimiter.lua:129: bad argument #1 to 'pairs' (table expected, got nil)
как составить таблицу смайлов ??? можете рассказать embarrassed.gif

Автор: Nickolya 24.11.2009, 10:17

По-идее такой ошибки быть не должно или же перед ней должна быть другая, все пути в скрипте, на сколько я вижу, правильные!

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

Папку в 1 пост положил, ее класть в папку scripts, сейчас ошибок быть не должно. Смайлы все в файле SmilesHere.txt

Вот кстати удаленное обсуждение: http://mydc.ru/topic2708.html

Автор: steppnov 24.11.2009, 11:09

ошибки больше нет
но скрипт предупреждения не выдаёт проверил базу смайлов всё в порядке но предуприждений нет

добавил в базу смайлов все существующие толку нету)) вот сам скрипт с папкой хз чо не так

Сори всё зделал нужно было поднять скрипт в птохе с каким то конфликтует big_smile.gif still_dreaming.gif

появилась идея можно ли создать лимит ??? в час или день ?
например в сутки можно использовать не более 30 смайлов embarrassed.gif

 SmilesLimiter.rar ( 4.15 килобайт ) : 25
 

Автор: ustas 24.11.2009, 12:53

такой вопросик:
в функции CountSmiles идет подсчет количества смайлов в сообщении. При этом сравнивается с довольно нехилой таблицей смайлов. Я думаю, что можно было бы оптимизировать данную функцию, если счетчик смайлов останавливался при iSmilesCount ==iBadSmilesCount, т.к. уже нет смысла проверять оставшуюся часть сообщения.
Я прав?

to steppnov

Цитата
например в сутки можно использовать не более 30 смайлов
жестоко ты
в принципе можно создать еще одну таблицу, в которой бы считалось кол-во смайлов за период времени напечатанным каким-либо юзером. только базу составлять по ip или по никам?

Автор: steppnov 24.11.2009, 13:02

по ip состовлять

Автор: Wariner 24.11.2009, 14:24

Цитата(steppnov @ 24.11.2009, 11:09) *
появилась идея можно ли создать лимит ??? в час или день ?
например в сутки можно использовать не более 30 смайлов embarrassed.gif

это бредовая идея! нет смысла в таком запрещении - просто перебор!

Автор: Trans 24.11.2009, 17:03

Охота вам запрещать флуд смайлами - поставьте ограничение на количество смайлов в одном сообщении (например, 3) и на количество смайлов в чате на 50 сообщений от всех (к примеру, 100 смайлов на 50 сообщений)..

Автор: Nickolya 24.11.2009, 19:46

Цитата(steppnov @ 24.11.2009, 11:09) *
появилась идея можно ли создать лимит ??? в час или день ?
например в сутки можно использовать не более 30 смайлов embarrassed.gif

А предупреждения и бан не помогает людям останавливаться? По-моему излишне.

Цитата(ustas @ 24.11.2009, 12:53) *
такой вопросик:
в функции CountSmiles идет подсчет количества смайлов в сообщении. При этом сравнивается с довольно нехилой таблицей смайлов. Я думаю, что можно было бы оптимизировать данную функцию, если счетчик смайлов останавливался при iSmilesCount ==iBadSmilesCount, т.к. уже нет смысла проверять оставшуюся часть сообщения.
Я прав?

Дальше считается общее количество смайлов, но если тебе не нужно число в сообщении, ты прав big_smile.gif

Автор: zorx007 29.11.2010, 11:23

Жаль что нету подобных скриптов совместимых с Linux на Win версии птоки работает изумительно, но под линь хотелось бы...

Автор: Nickolya 29.11.2010, 13:46

Вообще должно всё работать, скрипт даже не использует библиотек, так что если будут ошибки - выставляй их на обозрение, исправим!

Автор: zorx007 5.12.2010, 15:38

скрипт не работает под debian linux
возможные проблемы связаны с относительностью путей, и luasocket так как под вайном и виндовс работает без проблем.

ниже привожу диалог 2х людей которые занимались этим вопросом (заточка под линь)

Цитата
[21:41:47] <Atlant> а путь в менять не пробовали?
- [21:44:18] <flylink> даже прямой прописывал
- [21:48:14] <flylink> слеши тоже пробовал
- [21:48:26] <flylink> линь только прямой понимает
- [21:48:44] <flylink> перенос строки тоже менял
- [21:48:47] <flylink> бестолку
- [21:53:01] <Atlant> ну тогда не знаю, может тогда луасокет установлен криво хотя ....

Автор: Nickolya 7.12.2010, 1:53

zorx007, еще раз: луасокет не нужен этому скрипту, с путями в нем всё хорошо. Если "не работает" должны быть или ошибки или другие причины. Другими причинами может быть: блокировка скриптом выше, отсутствие папки скрипта, еще могу предположить что надо перекодировать файл под никсы (убрать \r в переносах строки), на всякий случай прилагаю преобразованный файл...
И либо вы сообщаете ошибки или рассказываете КАК не работает, КАК вы пробовали это исправить и что еще делали, либо ответа и не ждите.

 SmilesHere.txt ( 1.92 килобайт ) : 5
 

Автор: zorx007 18.12.2010, 6:42

Цитата(Nickolya @ 7.12.2010, 8:53) *
zorx007, еще раз: луасокет не нужен этому скрипту, с путями в нем всё хорошо. Если "не работает" должны быть или ошибки или другие причины. Другими причинами может быть: блокировка скриптом выше, отсутствие папки скрипта, еще могу предположить что надо перекодировать файл под никсы (убрать \r в переносах строки), на всякий случай прилагаю преобразованный файл...
И либо вы сообщаете ошибки или рассказываете КАК не работает, КАК вы пробовали это исправить и что еще делали, либо ответа и не ждите.


Цитата
[13:28:11] <Zorx007> как вы подогнали скрипт?
[13:28:20] <Zorx007> он же не пёр тут
[13:28:27] <Zorx007>
[13:29:00] <flylink> дело оказалось в кодировке
[13:29:10] <flylink> у нас на лине кодировка юниксовая
[13:29:17] <flylink> а у скрипта виндовая
[13:29:32] <flylink> даже сам разработчик походу недодумался до этого
[13:29:39] <flylink> чтобы кодировку поменять
[13:29:50] <flylink> вот и всё что сделали ))


в общем представлена Linux версия данного скрипта (была попусту изменена кодировка файла, была win1251 стала . юникс, сам скрипт ни капли не изменён)

 SmilesLimiter.zip ( 4.6 килобайт ) : 5
 

Автор: Nickolya 19.12.2010, 0:25

Можете пояснить? У меня подозрение что у вас просто какой-то кривой линукс))) Файлы кодированы в ANSI все (только что это проверил)... Почему-то подобной подгонки на других *никс-системах не требовалось...

Автор: Enyby 19.12.2010, 5:21

Разница двух файлов только лишь в символах перевода строки. 0D 0A против 0A. Т. е. отсутствует \r.

Автор: zorx007 19.12.2010, 6:54

Цитата(Nickolya @ 19.12.2010, 7:25) *
Можете пояснить? У меня подозрение что у вас просто какой-то кривой линукс))) Файлы кодированы в ANSI все (только что это проверил)... Почему-то подобной подгонки на других *никс-системах не требовалось...



Цитата
Atlant: дело не в лине, а в неровных настройках хаба, который у нас под линь....
в лине не /r это точно


от себя добавлю так или иначе, после обработки напильником данный скрипт работает big_smile.gif

Автор: zorx007 20.12.2010, 12:35

Скрипт срабатывает на некоторые магнет ссылки...... интересно нельзя ли это какнибудь пофиксить? embarrassed.gif

мы ограничение в 2 смайлика поставили в одном сообщении на хабе.. (на 3 уже банит)

Автор: Nickolya 20.12.2010, 22:46

zorx007, могу предложить попробовать вставить после

Код
function CountSmiles(sMsg)
вот такой код:
Код
sMsg = sMsg:gsub("(magnet:%S+)", "")

Автор: zorx007 26.12.2010, 17:24

баг выявился у нас на хабе...
настройки скрипта: 2 смайлика разрешено на 3 банит сразу без предупреждений на 10 минут
":хе-хе: не понимаю о чем ты :Хмм:" - при использовании такого вот словосочетания (без кавычек) забанило.... big_smile.gif

где ":хе-хе:" и ":Хмм:" это смайлики в кавычках

я подозреваю что
баг видимо состоит в том что ":не понимаю о чем ты:" он принял за смайлик big_smile.gif

P.S при написании данного багрепорта вспомнилось детское стихотворение

А И Б сидели на трубе
А упала
Б пропала
кто остался на трубе? big_smile1.gif

Автор: Nickolya 26.12.2010, 19:33

zorx007, смайлы все прописаны в файле, они берутся только оттуда и это вроде очевидно. Под раздачу попало слово :Хмм: в нем содержится 2 смайла: сам :Хмм: и :Х оба смайла прописаны в файле и т.к. 2й смайл архитектурно другой, но входит в состав первого, то произошел такой глюк (оторвать руки тем, кто делал эти буквенные обозначения смайлов). Решение данной проблемы - удалять найденные смайлы в сообщении, вот что для этого делаем:

Код
tSmiles[MakeNormMagicCharacters(sLine)] = 1
заменяем на
Код
table.insert(tSmiles, MakeNormMagicCharacters(sLine))
затем меняем
Код
    local iSmilesCount = 0
    for sSmile in pairs(tSmiles) do
        for sSmileFound in string.gmatch(sMsg, "("..sSmile..")") do
            iSmilesCount = iSmilesCount + 1
на
Код
    local iSmilesCount, i = 0
    for _, sSmile in ipairs(tSmiles) do
        sMsg, i = sMsg:gsub(sSmile, '')
        iSmilesCount = iSmilesCount + i

На всякий случай, для особо ленивых, перезалил скрипт в 1 сообщении с фиксом магнетов (в виде опции) и этими правками, качайте лучше оттуда)

Автор: zorx007 5.1.2011, 13:11

http://mydc.ru/r/?http://www.google.ru/search?client=opera&rls=ru&q=%D0%91%D1%83%D0%BB%D1%8C%D0%B2%D0%B8%D0%BD%D0%BA%D0%BB%D1%8C&sourceid=opera&ie=utf-8&oe=utf-8&channel=suggest

на подобные сцылки тоже срабатывает антисмайлофлуд

Автор: Артём 5.1.2011, 13:18

zorx007, ну так... :/ %D за смайлы принимает, а %D не одна в ссылке

Автор: Nickolya 5.1.2011, 15:38

С ссылками делаем так же, как и с магнетами, т.е. дописываем после

Код
sMsg = sMsg:gsub("(magnet:%S+)", "")
еще и
Код
sMsg = sMsg:gsub("([h]?[tf][t][p][s]?:%S+)", "")

Автор: zorx007 19.1.2011, 18:06

Ещё один баг найден: при использовании одного смайлика

Цитата
>>:(

получаю бан, условия те же..... (бан на 10 минут за 3 смайлика в одном сообщении)

Автор: zorx007 27.3.2011, 17:07

Цитата(zorx007 @ 20.1.2011, 1:06) *
Ещё один баг найден: при использовании одного смайлика

получаю бан, условия те же..... (бан на 10 минут за 3 смайлика в одном сообщении)



Эхх жалко, ответа нет....