rendREAD согласно дате

Просьбы о написании новых скриптов или поиске уже существующих.

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

rendREAD согласно дате

Сообщение sad » 22 мар 2011 07:02

Есть скрипт randread1.1.tcl, выдающий на тематический канал рандомно даты из текстовой базы:
<@Vesemir> 16 января 1980 год: Пол Маккартни арестован в Токио за хранение пол-фунта марихуаны.
<@Vesemir> 24 мая 1975 год: сингл джазового проекта Earth Wind and Fire Shining Star - № 1 в США
<@Vesemir> 3 марта 1967 год: в Лондоне состоялся дебютный концерт группы Джефа Бека.
<@Vesemir> 17 июня 2000 года - в Тушино прошел рок-фестиваль "Крылья". Приняли участие: "Машина времени", "Алиса" и др.

Можно ли сделать так, чтобы бот отдавал события рандомно, но именно с текущей даты. Т.е. если это 1 января - временной интервал - какое-то событие, которое было 1 января и т.д.?
Например так:
<@Vesemir> Сегодня, 17 июня 2000 года - в Тушино прошел рок-фестиваль "Крылья". Приняли участие: "Машина времени", "Алиса" и др.
Нежелание играться - первый признак деградации ;)
Аватара пользователя
sad
 
Сообщения: 28
Зарегистрирован: 15 авг 2010 16:17
Откуда: Комсомольск-на-Амуре
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21+suzi

Re: rendREAD согласно дате

Сообщение tvrsh » 22 мар 2011 22:10

Посмотри в сторону скрипта holidays.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

Re: rendREAD согласно дате

Сообщение sad » 23 мар 2011 15:15

спасибо, покурю :)
Нежелание играться - первый признак деградации ;)
Аватара пользователя
sad
 
Сообщения: 28
Зарегистрирован: 15 авг 2010 16:17
Откуда: Комсомольск-на-Амуре
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21+suzi

Re: rendREAD согласно дате

Сообщение sad » 24 мар 2011 08:25

Покурил... Получилось следующее:

TCL: [ Скачать ] [ Скрыть ]
# Временной интервал вывода на канал (сек)
set calendar(timer) "60"

# Файл с базой
set calendar(base) "scripts/calendar.txt"

# Устанавливаем цвета
set read(color1) "12"
set read(color2) "4"

# Запрет вывода скрипта на определенном канале (.chanset #канал +nocalendar )
setudef flag nocalendar

# Код ниже этой линии
#################################

if {[lsearch -glob [utimers] "* calendar *"] == -1} { utimer $calendar(timer) calendar }

proc calendar {} {
global calendar
        foreach chan [channels] {
                set fo [open $calendar(base) r]
                while {[gets $fo line]>=0} {
                set utime "[ctime [unixtime]]"
                if {([lindex $line 0]==[lindex $utime 2]) && ([lindex $line 1]==[lindex $utime 1])} {
        putserv "PRIVMSG $chan :\003$read(color1)Сегодня\003 \003$read(color2)[lreplace $line 0 1]\003" }
        }
        close $fo
        if {[lsearch -glob [utimers] "* calendar *"] == -1} { utimer $::calendar(timer) calendar}
     }
  }
 

Мы имеем в итоге каждую минуту шквал сообщений
[03:23:52] <+Vesemir> Сегодня 46 года родился Ли Оскар участник группы War.
[03:23:53] <+Vesemir> Сегодня 49 года родился Стив Лэнг, бас-гитарист группы April Wine.
[03:23:54] <+Vesemir> Сегодня 51 года родился Дуг Томпсон, бас-гитарист группы Supertramp
[03:23:55] <+Vesemir> Сегодня 58 год: Элвис Пресли призван в армию
[03:23:57] <+Vesemir> Сегодня 62 год: Мик Джаггер и Кейт Ричардс дали совместный концерт в Лондоне.
[03:23:59] <+Vesemir> Сегодня 65 года родился Анатолий Крупнов (лидер гр. 'Черный Обелиск')
[03:24:01] <+Vesemir> Сегодня 86 год: группа Van Halen выпустила альбом '5150' - первый альбом с новым вокалистом Семми Хагаром.

Как понятно, это не предел, дат за конкретное число месяца может быть и 40 и 50.
Что можно сделать, чтобы раз в час/минуту на канал выводилась одна рандомная дата текущего числа/месяца.
Нежелание играться - первый признак деградации ;)
Аватара пользователя
sad
 
Сообщения: 28
Зарегистрирован: 15 авг 2010 16:17
Откуда: Комсомольск-на-Амуре
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21+suzi

Re: rendREAD согласно дате

Сообщение tvrsh » 24 мар 2011 11:13

TCL: [ Скачать ] [ Скрыть ]
# Файл с базой (праздники записывать в базу по образцу!).
set hol(base) "scripts/holidays.txt"
# Цвет 1.
set hol(color1) "12"
# Цвет 2.
set hol(color2) "04"
# Время между сообщениями.
set hol(mins) "3"
# Канал на который выводить сообщения.
set hol(chan) "#erotic"

proc join:hol {} {
global hol
    set fo [open $hol(base) "r"]
    while {[gets $fo line] >= "0"} {
        set utime [ctime [unixtime]]
          if {([lindex $line 0] == [lindex $utime 2]) && ([lindex $line 1] == [lindex $utime 1])} {
            lappend today $line
          }
    }
    close $fo
    if {[info exists today] && $today != ""} {
        set randline [lindex $today [rand [llength $today]]]
        putserv "PRIVMSG $hol(chan) :\003$hol(color1)Сегодня\003 \003$hol(color2)[lreplace $randline 0 1]\003"
    }
    timer $hol(mins) join:hol
    return 0
}

timer $hol(mins) join:hol

putlog "Holidays.tcl loaded! By BoBaH <vovan@enforce.ru>"


Вывод случайной строки с сегодняшней датой каждые 3 минуты.
[10:06:38] <tvrsh> !load holidays/holidays.tcl
[10:06:39] <@bionic> -(Load)- Script: holidays/holidays.tcl - Size: 0.8603515625 Kb - Status: OK -(Info)-
[10:08:58] <@bionic> Сегодня День проверки скрипта 4
[10:11:58] <@bionic> Сегодня День проверки скрипта 3
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: rendREAD согласно дате

Сообщение sad » 24 мар 2011 15:30

Огромнейшее спасибо от огромного количества меломанов и полных ламеров в тикле!
Нежелание играться - первый признак деградации ;)
Аватара пользователя
sad
 
Сообщения: 28
Зарегистрирован: 15 авг 2010 16:17
Откуда: Комсомольск-на-Амуре
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21+suzi

Re: rendREAD согласно дате

Сообщение sad » 25 мар 2011 10:01

И таки пришлось немного видоизменить код. Выдавал очень странно на канал:
[00:21:01] <@Vesemir> Сегодня 26 марта 1975 год: в Лондоне состоялась премьера фильма Tommy группы The Who
[00:25:00] <@Vesemir> Сегодня 26 марта 1976 года группа Wings выпускает альбом Wings At The Speed Of Sound
[00:48:01] <@Vesemir> Сегодня 26 марта 1975 год: в Лондоне состоялась премьера фильма Tommy группы The Who
[00:51:00] <@Vesemir> Сегодня 26 марта 1948 года родился Ричард Тэнди, бас-гитарист группы ELO
[00:55:00] <@Vesemir> Сегодня 25 марта 1949 года родился Ник Лоу, английский певец, композитор, бас-гитарист, продюсер

Интервал в параметре set hol(mins) был равен 30, но непонятно зачем отдавать два раза через 4 минуты и как от этого избавится - пробовал разные интервалы - итория та же.
Теперь все работает как надо:
TCL: [ Скачать ] [ Скрыть ]
# Настройки
################################

set reader(timer) "3600"

set reader(base) "scripts/datreader.txt"

set reader(color1) "14"
set reader(color2) "5"

set reader(chan) "#chan"

# Код ниже этой линии
#################################

if {[lsearch -glob [utimers] "* reader *"] == -1} { utimer $reader(timer) reader }

proc reader {} {
global reader
    set fo [open $reader(base) "r"]
    while {[gets $fo line] >= "0"} {
        set utime [ctime [unixtime]]
          if {([lindex $line 0] == [lindex $utime 2]) && ([lindex $line 1] == [lindex $utime 1])} {
            lappend today $line
          }
    }
    close $fo
    if {[info exists today] && $today != ""} {
        set randline [lindex $today [rand [llength $today]]]
        putserv "PRIVMSG $reader(chan) :\003$reader(color1)Сегодня\003 \003$reader(color2)[lreplace $randline 0 1]\003"
        }
        if {[lsearch -glob [utimers] "* reader *"] == -1} { utimer $::reader(timer) reader}
        }

[12:20:47] <@Vesemir> Сегодня (25 марта 1951 года), родился Боб Пеландер, клавишник и вокалист Michael Stanley Band
[13:20:47] <@Vesemir> Сегодня (25 марта 1962 год), альбом Тома Джонса под названием She's a Lady стал «золотым»

Еще раз огромное спасибо за участие!
Нежелание играться - первый признак деградации ;)
Аватара пользователя
sad
 
Сообщения: 28
Зарегистрирован: 15 авг 2010 16:17
Откуда: Комсомольск-на-Амуре
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21+suzi


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

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

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

cron