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

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

MyDC.ru _ Запросы скриптов для PtokaX _ Скрипт предупреждения ботом хаба

Автор: Milena 6.7.2010, 23:41

Здравствуйте! Нужен скриптик который бы предупреждал юзера от бота . А именно: В меню админа пункт - Предупредить юзера .Щелкаем на ник вылетает окно ,где админ вводит причину. И в результате : Бот - (Ник) получает предупреждение: ведите себя прилично (это в главном чате) Помогите пожалуйста воплотить)

Автор: Ksan 7.7.2010, 9:40

Вот накалякал...точнее, выдрал из своего скрипта спешал фор Ю.
Возможности (всё это - от имени бота):
- писать в чат соообщения
- писать юзеру в чате тихо (видит только он)
- писать юзеру в чате громко (видят все)
- писать юзеру в приват
- предупреждать юзера (видят все)
- помощь по командам этого скрипта (в приват) - важно, когда хочешь написать в чат многострочное сообщение, которое через меню не отправишь

Права (кто может применять сии команды):
- предупреждение - кто имеет право на кики
- всё остальное - кто может банить

Раскрывающийся текст
Код
--- Скриптик для предупреждений и сообщений от бота
--- Название: BotForOp_api2.lua
--- Накалякал Ksan из Томска для Милены Питерской, сидя на плечах гигантов-скриптёров..

sHelp = " ***  Помощь по командам (важно при писании в чат сообщений с несколькими строками от имени бота):\n\t!frombottouserpm НИК ТЕКСТ_СООБЩЕНИЯ - сообщение в приват юзера от имени бота\n\t!frombottousermc НИК ТЕКСТ_СООБЩЕНИЯ  - тихое сообщение в чате юзеру от имени бота (видит только этот юзер)\n\t!frombottousermcall НИК ТЕКСТ_СООБЩЕНИЯ  - громкое сообщение в чате юзеру (видно всем)\n\t!frombottochat ТЕКСТ_СООБЩЕНИЯ  - сообщение в чате от имени бота (видно всем)\n\t!warn НИК ТЕКСТ_СООБЩЕНИЯ  - предупреждение юзера в чате (видят все)\n\t!helpforwarn  -  получение этой самой помощи по командам"

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

function UserConnected(tUser)
    local t = ProfMan.GetProfilePermissions(tUser.iProfile)
    if t then
        if t.bTempBan then
            Core.SendToUser(tUser, "$UserCommand 1 2 << АДМИНКА >>\\От имени бота\\Юзеру в приват от бота..$<%[mynick]> !frombottouserpm %[nick] %[line:Текст сообщения]|")
            Core.SendToUser(tUser, "$UserCommand 1 2 << АДМИНКА >>\\От имени бота\\Юзеру в чат от бота (тихо)..$<%[mynick]> !frombottousermc %[nick] %[line:Текст сообщения]|")
            Core.SendToUser(tUser, "$UserCommand 1 2 << АДМИНКА >>\\От имени бота\\Юзеру в чат от бота (громко)..$<%[mynick]> !frombottousermcall %[nick] %[line:Текст сообщения]|")
            Core.SendToUser(tUser, "$UserCommand 1 1 << АДМИНКА >>\\От имени бота\\Сообщение в чате от бота..$<%[mynick]> !frombottochat %[line:Текст сообщения]|")
            Core.SendToUser(tUser, "$UserCommand 1 1 << АДМИНКА >>\\От имени бота\\Помощь по командам$<%[mynick]> !helpforwarn|")
        end
        if t.bKick then
            Core.SendToUser(tUser, "$UserCommand 1 2 << АДМИНКА >>\\От имени бота\\Предупреждение в чате..$<%[mynick]> !warn %[nick] %[line:Причина]|")
        end
    end
end
OpConnected = UserConnected
RegConnected = UserConnected

function ChatArrival(tUser, sData)
    Core.GetUserAllData(tUser)
    local t = ProfMan.GetProfilePermissions(tUser.iProfile)
    local sData = sData:sub(1,-2)
    local s,e, sCmd = string.find(sData, "^%b<>%s+(%S+)")
    local s,e, sParam = string.find(sData, "^%b<>%s+%S+%s+(.+)")
    if t then
        if t.bTempBan then  
            if sCmd and sCmd == "!frombottouserpm" then
                local s,e, sNick, sMsg = string.find(sParam, "^(%S+)%s+(.+)$")
                if sNick and sMsg then
                    local CurUser = Core.GetUser(sNick)
                    if CurUser then
                        Core.GetUserData(CurUser, 16)
                        FromBot(CurUser, sMsg)
                        FromBot(tUser, "Юзеру "..sNick.." отправлено в приват сообщение: "..sMsg)
                    else
                        ToUser(tUser, "Ошибка: юзер "..sNick.." не найден на хабе")
                    end
                else
                    ToUser(tUser, "Ошибка синтаксиса. Синтаксис: !frombottouserpm <ник> <текст сообщения>")
                end
                return true
            end
            if sCmd and sCmd == "!frombottousermc" then
                local s,e,sNick, sMsg = string.find(sParam, "^(%S+)%s+(.+)$")
                if sNick and sMsg then
                    local CurUser = Core.GetUser(sNick)
                    if CurUser then
                        Core.GetUserData(CurUser, 16)
                        ToUser(CurUser, sNick..":  ***  "..sMsg)
                        ToUser(tUser, sNick..":  ***  "..sMsg)
                    else
                        ToUser(tUser, "Ошибка: юзер "..sNick.." не найден на хабе")
                    end
                else
                    ToUser(tUser, "Ошибка синтаксиса. Синтаксис: !frombottousermc <ник> <текст сообщения>")
                end
                return true
            end
            if sCmd and sCmd == "!frombottousermcall" then
                local s,e, sNick, sMsg = string.find(sParam, "^(%S+)%s+(.+)$")
                if sNick and sMsg then
                    local CurUser = Core.GetUser(sNick)
                    if CurUser then
                        Core.GetUserData(CurUser, 16)
                        FromBotToChat(sNick..":  ***  "..sMsg)
                    else
                        ToUser(tUser,"Ошибка: юзер "..sNick.." не найден на хабе")
                    end
                else
                    ToUser(tUser, "Ошибка синтаксиса. Синтаксис: !frombottousermcall <ник> <текст сообщения>")
                end
                return true
            end
            if sCmd and sCmd == "!frombottochat" then
                local sMsg = sParam
                if sMsg then
                    FromBotToChat(sMsg)
                else
                    ToUser(tUser, "Ошибка: Нет текста сообщения")
                end
                return true
            end
            if sCmd and sCmd == "!helpforwarn" then
                FromBot(tUser, sHelp)
                return true
            end
        end
        if t.bKick then
            if sCmd and sCmd == "!warn" then
                local s,e, sNick, sMsg = string.find(sParam, "^(%S+)%s+(.+)$")
                if sNick and sMsg then
                    local CurUser = Core.GetUser(sNick)
                    if CurUser then
                        Core.GetUserData(CurUser, 16)
                        FromBotToChat(sNick..":  ***  Вам предупреждение: "..sMsg)
                    else
                        ToUser(tUser, "Ошибка: юзер "..sNick.." не найден на хабе")
                    end
                else
                    ToUser(tUser, "Ошибка: Вы не ввели ник или причину!")
                end
                return true
            end
        end
    end
    collectgarbage("collect")
end

function FromBot(user, msg)
    Core.SendPmToUser(user, sBot, msg)
end

function ToUser(user, msg)
    Core.SendToUser(user, "<"..sBot.."> "..msg)
end

function FromBotToChat(msg)
    Core.SendToAll("<"..sBot.."> "..msg)
end

Вот думаю, может, кинуть это отдельной темкой (но вроде слишком незначительная вещь, чтоб тратить на неё место на форуме)..

Автор: Nickolya 7.7.2010, 9:51

Цитата(Ksan @ 7.7.2010, 10:40) *
Вот думаю, может, кинуть это отдельной темкой (но вроде слишком незначительная вещь, чтоб тратить на неё место на форуме)..
Не принижайся, выкладывай отдельно. Вещь стоящая.
Цитата(Ksan @ 7.7.2010, 10:40) *
--- Накалякал Ksan из Томска для Милены Питерской, сидя на плечах гигантов-скриптёров, например, alex82..
exciting.gif

Автор: Ksan 7.7.2010, 11:53

Оформил отдельной темой, добавив в скрипт кик от имени бота (вместо ника опа) или вовсе без автора.
http://mydc.ru/topic3630.html