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

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

MyDC.ru _ Kорзина _ Бот "новинки"

Автор: Herurg 9.11.2008, 21:10

Помогите переделать скрипт под птоху новой версии PtokaX 0.4.1.1
Буду очень признателен... bad_smile.gif

 bulletin.lua ( 10.74 килобайт ) : 30
 

Автор: district 9.11.2008, 21:55

MsgBoard Lua v3.1 ?
А под какой птокой он у тебя ходит, если не секрет?

Автор: Herurg 10.11.2008, 1:22

он стоял на Verli Hub но хотелось бы его поставить на птаху, но вот он неподходит

Автор: district 10.11.2008, 1:31

Есть вот какой ботик. Переделан из гостевой книги, сделаной размашисто, от широкой души и с юмором. ))) Сконвертировать под API2 думаю проблемы не составит, тут тема конвертации где-то неоднократно поднималась.
А к корифеям попутный вопрос: т к я честно скажу, в архитектуре данного скрипта вообще ничего не понимаю, не допишете ли искусства ради функцию получения юзером при входе, например, трех крайних записей раздела "Релизы"? Только упаси Бог не в личку, знаю, как бесят рядовых нормальных юзеров сообщения в личку при входе на хаб.

 Новости_Релизы_Запросы.lua ( 8.33 килобайт ) : 34
 

Автор: Nickolya 11.11.2008, 0:35

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

 Новости_Релизы_Запросы.lua ( 8.38 килобайт ) : 70
 

Автор: district 11.11.2008, 9:14

Nickolya

Снимаю шляпу ;) Говорил же, знающему человеку - труда особого не составит...
А я - что такое "wtf"-то узнал только неделю назад, от отдного мегахакера big_smile1.gif

Единственно, чего не понял спросонья - почему ОПы получают новости тоже, несмотря на то, что нет OpConnected = NewUserConnected, и быть не должно в общем-то.

Потом пригляделся - вот она хитрая строчка:

Цитата
OpConnected = function(user)
NewUserConnected(user)

Надо взять на вооружение )
ну и добавил условие if user b.registered then для получения 3-х крайних записей - если человек не зарегистрирован, то может ему и неинтересно, и незачем тогда.

Автор: Herurg 11.11.2008, 18:14

так а мне то помогут?!

Автор: district 11.11.2008, 22:02

Herurg

По-моему, выложенный Bulletin переделать, да еще и под новый АПИ нереально. Поэтому и предложил альтернативный, схожий вариант... Хотя, может, сути этого bulletina просто не понял.
----------------------------------------------------------------------------------------------------------
Охо-хо, сам плохо понял, что именно сделал, но идея была такая: чтобы сообщения о новых поступлениях юзер получал, как бы это выразиться, не каждый раз при заходе на хаб.
Чтобы оскомину не набивали.
Увязывать с os.date - опыта пока маловато, в общем, соорудил примитивный счетчик, вот крайняя часть кода.
Работать работает, прореживает, правда, сам пока не пойму, как именно big_smile1.gif
Наверное, нужно раздвигать значения if t==0 or t==4, как-то увязав их с числом входов и выходов посетителей (UserDisconnected ведь реагирует на все события дисконнектов, всех юзеров, так?)
Может, кто возьмется прокомментировать и посоветовать?

Код
NewUserConnected = function(user)
user:SendData("$UserCommand 1 2 "..wMenu.."\\Объявления\\Смотреть$<%[mynick]> !news||")
user:SendData("$UserCommand 1 2 "..wMenu.."\\Объявления\\Добавить$<%[mynick]> !addnews %[line:Введите текст вашего сообщения:]||")
user:SendData("$UserCommand 1 2 "..wMenu.."\\Запросник\\Смотреть$<%[mynick]> !showrequests||")
user:SendData("$UserCommand 1 2 "..wMenu.."\\Запросник\\Добавить$<%[mynick]> !addrequest %[line:Введите текст вашего сообщения:]||")
user:SendData("$UserCommand 1 2 "..wMenu.."\\Релизы\\Смотреть$<%[mynick]> !showreleases||")
user:SendData("$UserCommand 1 2 "..wMenu.."\\Релизы\\Добавить$<%[mynick]> !addrelease %[line:Введите описание и магнет на релиз:]||")
if user.bRegistered then
if t = 0 or t = 4 then
showshit2(user,entries,gbname,gbfile,levgbcmd1,"MAIN")
end
end
end

-- меню для ОПов
OpConnected = function(user)
NewUserConnected(user)
user:SendData("$UserCommand 1 2 "..wMenu.."\\Объявления\\Удалить$<%[mynick]> !delnews %[line:Введите номер записи:]||")
user:SendData("$UserCommand 1 2 "..wMenu.."\\Запросник\\Удалить$<%[mynick]> !delrequest %[line:Введите номер записи:]||")
user:SendData("$UserCommand 1 2 "..wMenu.."\\Релизы\\Удалить$<%[mynick]> !delrelease %[line:Введите номер записи:]||")
end

iWeNeedNumberCount = 3    -- кол-во записей нужных нам

function showshit2(user,container,wtf,file,cmdlevel,env)
    if cmdlevel~=0 then
        if CheckUserLevel(user) >= cmdlevel then
            local container=loadshit(file)
            local msg="\r\nПеред вами "..iWeNeedNumberCount.." последние записи из Новости-Релизы (см. меню на правой кнопке) :\r\n\r\n"
            if number>0 then
                local iToDo
                if number <= iWeNeedNumberCount then
                    iToDo = 1
                else
                    iToDo = number - iWeNeedNumberCount + 1
                end
                for i=iToDo,number do
                    s,e,who,when,entry=string.find(container[i], "(.+)|(.+)|(.+)")
                    msg=msg..i..".\t"..who.." - "..when.." ---> "..entry.."\r\n"
                end
                                
                user:SendData(Bot,msg)
            end
        end
    end
end

t = 0

function UserDisconnected(user)
t = t + 1
if t = 5 then
t = 0
end
end
OpDisconnected = UserDisconnected