Измеритель информации

Решение вопросов при работе с TCL скриптами.

Модератор: Модераторы

Измеритель информации

Сообщение shaman » 07 авг 2010 14:42

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

Представляю вам скрипт, который позволит измерить ценность и достоверность вашей информации. Теперь вы с гордостью сможете сказать - инфа 100%.

Пример работы:
<%username%> !инфа черепашки ниндзя зеленые
<%botname%> Инфа, что черепашки ниндзя зеленые - 6%!

Чтобы никто не смог назвать вас лжецом, бот услужливо хранит всю проверенную информацию, чтобы при необходимости подтвердить ее!

Пример работы:
<%username1%> кстати, черепашки ниндзя не зеленые
<%username2%> да как ты смеешь, я тебя накажу, во имя луны!!!!!11
<%username1%> !инфа черепашки ниндзя зеленые
<%botname%> Инфа, что черепашки ниндзя зеленые - 6%
<%username2%> и вправду! процент ничтожно мал! извини, брат, прими этот мерседес в знак примерения

Все это доступно только здесь и только сейчас!
Не забудьте для начала создать таблицу! В корневой папке с ботом введите:
Код: Выделить всё
$ sqlite3 infa.db
sqlite> CREATE TABLE main(a int, b text, nick text, chan text, date text);
sqlite> .quit

А вот и он!
TCL: [ Скачать ] [ Скрыть ]
bind pub        -       !infa   infa
bind pub        -       !инфа   infa

# показывать ли, кто, где и когда проверял эту информацию
# 0 - нет, 1 - да
set infa_full 0

package require  sqlite3

sqlite3 db infa.db

proc infa {nick host handle chan text} {
        variable infa_full;
       
        regsub -all -- {\'} $text {} text;
        regsub -all -- {\"} $text {} text;
        regsub -all -- {\$} $text {} text;

        if {[string length $text] > 0} {
                set result [db eval {SELECT a from main WHERE b = $text}]
        if {[string length $result] > 0} {
                        if {$infa_full == 1} {
                                set auser [infa_clear [db eval {SELECT nick from main WHERE b = $text}]]
                                set adate [infa_clear [db eval {SELECT date from main WHERE b = $text}]]
                                set achan [infa_clear [db eval {SELECT chan from main WHERE b = $text}]]
                                putserv "PRIVMSG $chan :\00303Инфа, что $text - \00304$result\%! \00303Инфу уже проверил \00304$auser \00303на канале \00304$achan $adate\00303."
                        } else {
                                putserv "PRIVMSG $chan :\00303Инфа, что $text - \00304$result\%!"       
                        }
        } else {
                        set num [random_int 101]
                        set systemTime [clock seconds]
                        set date [clock format $systemTime -format {%d.%m.%Y %H:%M:%S}]
                        db eval {INSERT INTO main VALUES($num,$text,$nick,$chan,$date)}
                        putserv "PRIVMSG $chan :\00303Инфа, что $text - \00304$num\%!"
                }
        }
}

proc random_int {upper_limit} {
        global myrand
    set myrand [expr int(rand() * $upper_limit + 1)]
        return $myrand
}

proc infa_clear {t} {
        regsub -all -- {\{} $t {} t;
        regsub -all -- {\}} $t {} t;
        return $t
}
Последний раз редактировалось shaman 07 авг 2010 17:57, всего редактировалось 3 раз(а).
shaman
 
Сообщения: 4
Зарегистрирован: 07 авг 2010 14:41
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.20

Re: Измеритель информации

Сообщение tvrsh » 07 авг 2010 15:26

Примерно тоже самое только не пишет в базу:
TCL: [ Скачать ] [ Скрыть ]
bind pub - !infa infa
bind pub - !инфа infa
proc infa {nick uhost hand chan text} {
    if {[lindex [split $text] 0] == ""} {
        putserv "PRIVMSG $chan :$nick, введите инфу для проверки."
        return 0
    } else {
        putserv "PRIVMSG $chan :$nick, инфа, что [lrange [split $text] 0 end] верна на [rand 100]\%!"
        return 0
    }
}
Have fun.
-
Получить помощь можно на каналах #egghelp в сети IrcNet.ru и #eggdrop в сети RusNet(Ключ канала eggdrop).
Перед созданием новой темы внимательно читайте Правила оформления топиков.
Аватара пользователя
tvrsh
 
Сообщения: 1230
Зарегистрирован: 19 авг 2008 16:55
Откуда: Russian Federation, Podolsk
Благодарил (а): 6 раз.
Поблагодарили: 130 раз.
Версия бота: Eggdrop 1.6.20+suzi

Re: Измеритель информации

Сообщение tvrsh » 07 авг 2010 15:29

А вообще довольно бредовая фигня с необоснованными сложностями. По сути, просто рандомизатор, который можно написать в одну строку.
Have fun.
-
Получить помощь можно на каналах #egghelp в сети IrcNet.ru и #eggdrop в сети RusNet(Ключ канала eggdrop).
Перед созданием новой темы внимательно читайте Правила оформления топиков.
Аватара пользователя
tvrsh
 
Сообщения: 1230
Зарегистрирован: 19 авг 2008 16:55
Откуда: Russian Federation, Podolsk
Благодарил (а): 6 раз.
Поблагодарили: 130 раз.
Версия бота: Eggdrop 1.6.20+suzi

Re: Измеритель информации

Сообщение shaman » 07 авг 2010 17:15

Инфа 100% - достаточно популярный мем, скрипт писался как аналог сайтов infametr.ru и myproof.ru.

Я использовал sqlite, так как этот пакет есть на любом вменяемом сервере и это просто удобнее, чем вручную возиться с форматированием данных в файле. Так что это не сложность, а упрощение.

Не соглашусь по поводу простого рандомизатора, ведь смысл теряется, если проверяя одну и ту же информацию, мы будем получать разный процент. Поэтому запись необходима. Да и интересно потом посмотреть кто, что, где и когда проверял.
Код: Выделить всё
$ sqlite3 infa.db
sqlite> .output infa.txt
sqlite> select * from main;
sqlite> .quit

Можно например закинуть в общий доступ:
Код: Выделить всё
$ cp infa.txt ~/public_html/infa.txt

http://%shellname%/~%username%/infa.txt
Последний раз редактировалось shaman 07 авг 2010 18:08, всего редактировалось 1 раз.
shaman
 
Сообщения: 4
Зарегистрирован: 07 авг 2010 14:41
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.20

Re: Измеритель информации

Сообщение tvrsh » 07 авг 2010 17:28

Тогда допиши, чтобы если запрошенная инфа уже найдена в базе, то показывался бы автор и время ее добавления.
Have fun.
-
Получить помощь можно на каналах #egghelp в сети IrcNet.ru и #eggdrop в сети RusNet(Ключ канала eggdrop).
Перед созданием новой темы внимательно читайте Правила оформления топиков.
Аватара пользователя
tvrsh
 
Сообщения: 1230
Зарегистрирован: 19 авг 2008 16:55
Откуда: Russian Federation, Podolsk
Благодарил (а): 6 раз.
Поблагодарили: 130 раз.
Версия бота: Eggdrop 1.6.20+suzi

Re: Измеритель информации

Сообщение shaman » 07 авг 2010 17:44

Поправил в общем. Правда не помню как удалять {} можно, сделал через regsub, что не Ъ. Но работает, не это ли главное...
shaman
 
Сообщения: 4
Зарегистрирован: 07 авг 2010 14:41
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.20

Re: Измеритель информации

Сообщение UnInViTeD » 26 сен 2010 18:09

А как таблицу создать ?
Изображение
Изображение
Аватара пользователя
UnInViTeD
 
Сообщения: 18
Зарегистрирован: 30 авг 2010 16:57
Откуда: Магнитогорск
Благодарил (а): 4 раз.
Поблагодарили: 0 раз.
Версия бота: Windrop 1.6.21+suzi

Re: Измеритель информации

Сообщение tvrsh » 26 сен 2010 18:14

UnInViTeD писал(а):А как таблицу создать ?

Не стоит пользоваться этим скриптом, ибо небезопасно и бесполезно. Пользуйся его tcl аналогом.
Have fun.
-
Получить помощь можно на каналах #egghelp в сети IrcNet.ru и #eggdrop в сети RusNet(Ключ канала eggdrop).
Перед созданием новой темы внимательно читайте Правила оформления топиков.
Аватара пользователя
tvrsh
 
Сообщения: 1230
Зарегистрирован: 19 авг 2008 16:55
Откуда: Russian Federation, Podolsk
Благодарил (а): 6 раз.
Поблагодарили: 130 раз.
Версия бота: Eggdrop 1.6.20+suzi


Вернуться в TCL скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14

cron