-------------------------------------------------------------------------------
-- таблица фраз и ответов (q - фразаы, a - ответы)
local tSay1= {
  {
    q = {"hi","хай","пр[иею]ве[тд]","даров","здрав","добрый вечер","вечер добрый","доброго вечера","добрый день","доброго дня","день добрый","доброе утро","утро доброе"},
    a = {"Привет :-)","Приветствую","[NICK]: здарова =)","[NICK]: и тебе здравствуй","Салют! :))"},
  },
  {
    q = {"bye","п[оа]ка","бай","до%s*св[еи]дания","ча[оу]"},
    a = {"удачи","[NICK]: счастливо","пока","66"},
  },
  {
    q = {"lol","дщд"},
    a = {" :-D"},
  },
  {
    q = {" :-D"},
    a = {" =)"," :)"},
  },
  {
    q = {"слот","slot"},
    a = {"А что предложешь взамен?","1 слот=100 руб. торгуйся, уступлю дешевле","Только под запись. Могу тебя записать на послезавтра. Хочешь?","в очередь!","хи-хи, а тебе точно можно доверить слот, вернёшь потом?","не дам! но если расскажешь анекдот, то подумаю :)"},
  },
  {
    q = {"пожалуйст","please","плиз"},
    a = {"ути-пути, какие мы вежливые"},
  },
  {
    q = {"спасиб","спс","сенкс","сэнкс","thank"},
    a = {"ути-пути, какие мы вежливые", "за такое обращение ничего не жалко"},
  },
  {
    q = {"спс"},
    a = {"краткость - сестра таланта?"},
  },
  {
    q = {"кач"},
    a = {"не понял","чего?"},
  },
  {
    q = {"эээ"},
    a = {"че разэкался?","[NICK]: че тебе?","бббееееее"},
  },
  {
    q = {"жди","ждешь"},
    a = {"фигасе! Дождаться невозможно"},
  },
  {
    q = {"жду"},
    a = {"не поверишь, сам жду. Давай ждать вместе"},
  },
  {
    q = {"бот"},
    a = {"Как ты догадался?","Меня раскрыли!","Не совсем :-D","Да что ты знаешь о ботах?","Примерно так. Но не совсем"},
  },
  {
    q = {"говно","гавно"},
    a = {"где гавно? кто гавно?"},
  },
  {
    q = {"мудак","мудила"},
    a = {"Кто действительно тут мудак, так это ты!","мудила у тебя дома сидит и трахается с твоей матерью"},
  },
  {
    q = {"сука"},
    a = {"кроме тебе, не вижу тут больше сук!"},
  },
  {
    q = {"[aо]хуел","[ао]хуеть"},
    a = {"хуеть будешь ты, когда у коня будешь сосать!"},
  },
  {
    q = {"ебан"},
    a = {"похоже, что у тебя ебало ебанулось с ебла"},
  },
  {
    q = {"хуй"},
    a = {"дать пососать?","дать отсосать?","сам ты хуй"},
  },
  {
    q = {"бля"},
    a = {"на псарни они - запомни это!"},
  },
  {
    q = {"ебло"},
    a = {"твоё ебливое ебло уже заебало"},
  },
  {
    q = {"ебать"},
    a = {"ебать будешь свою тёлку, если есть чем..."},
  },
  {
    q = {"?"},
    a = {"А почему ты спрашиваешь?","Я на глупые вопросы не отвечаю!","Дурацкий вопрос, подумай","этот вопрос мне?","не понял вопроса!","Я сёня туплю. Повторите что вы сказали?"},
  },
  {
    q = {"а"},
    a = {"занимаюсь сексом с девушкой, а ты меня отвлекаешь!!!","я ща в магазин за водярой! го со мной","по 100 грамм го?","Я тебя видел на прошлой недели с пивом и квасом!","А мы знакомы??","Правда что-ли","К чему это ты","бе-бе-бе","Не тупи!","Какого ..я?","Какойто не в тему разговор","Эх... что то у нас сегодня не клеится разговор","Чёрт, мне пора.  фильм начинается","я ща варю яйца страуса! не отвлекай меня!","Я тебя видел на прошлой недели с пивом!","как жизнь? гавно? я согласен с тобой","[NICK]: И не лень тебе было расшаривать [SHARE] байт","[NICK]: Твой ник [NICK]! Ты знаешь что он означает?","го все ко мне суп жрать!","менты секут сенешний разговор","кто воздух испортил?","Мне не нужны ни \"да\", ни \"нет\", - Мне нужен доступ в Интернеt","Билл-гей.Тсс...","Яубьютогоктосломалмойпробел!","Давно хочу купить память, но всё время забываю","хаха","жгём по полной...","чета скучно с вами((","почему тут пишут всякую туфту? не понимаю я","[NICK]: ооо... ты бот?","всем привет","скучно... ужас!","подкине пару фраз нищему боту..."},
  },
}

local tChatBot={
  bOn = 1, -- 1-вкл., 0-выкл. бота
  iDelayStart = 5, --задержка в выполнении при запуске скрипта (в сек)
  
  -------- Общие настройки (настройки для всех хабов) -------
  iVer = 90, --вероятность ответа (в %)
  tDelay = { 1, 2 }, --задержки перед отправкой ответа (в сек)
  tSay = nil, -- nil - отключить отсылку по умолчанию (иначе ставьте tSay1)

  -------- Настройки определённых хабов ---------------------
  tHubs={

    ------------------------------------------------------------------------------------------------
    ["192.168.39.200:413"] = { -- адрес хаба (в соответствие с настройками в избранных хабах)
      iVer = 80, --вероятность ответа для данного хаба (в %)
      tDelay = { 2, 3 }, --задержки перед отправкой ответа (в сек). Выбирается случайным образом одна из задержек
      tSay = tSay1, -- таблица фраз/ответов, nil - отключить таблицу (иначе ставьте tSay1)
    },
    ------------------------------------------------------------------------------------------------
    ["192.168.0.108:411"] = {
      iVer = 98,
      tDelay = { 1 },
      tSay = tSay1,
    },
    ------------------------------------------------------------------------------------------------
    
    -- Таким образом можно добавить любое количество хабов!

    ------------------------------------------------------------------------------------------------
  }
}



----------------------------------------------------------------------------------------------------
-- Далее ничего не трогаем --
----------------------------------------------------------------------------------------------------
local tStartTime={}

tMainFunc["chatbot"].OnPublicMessage=function(tUser,sData)
  if tChatBot.bOn==1 and tChatBot.iVer>=math.random(1,100) then
    if tUser.ME~="1" and (not tStartTime[tUser.HL] or os.time()>tStartTime[tUser.HL]+tChatBot.iDelayStart) then
      for i,v in pairs(tChatBot.tHubs or {}) do
        if i==tUser.HL and tSys:Table(v.tSay) then
          for j,w in pairs(v.tSay) do
            if tChatBot:Find(tUser,sData,w,i) then return true end
          end
        end
      end
      if tChatBot.tSay then
        for i,v in pairs(tChatBot.tSay) do
          if tChatBot:Find(tUser,sData,v) then return true end
        end
      end
    end
  end
end

tMainFunc["chatbot"].OnHubConnected=function(sHubUrl)
  tStartTime[sHubUrl]=os.time()
end

tMainFunc["chatbot"].OnTimer=function()
  if tChatBot.bOn==1 then
    for i,v in pairs(tChatBot.tHubs) do
      if v.iTimer and v.iTimer>=0 and v.tSay and (not tStartTime[i] or os.time()>tStartTime[i]+tChatBot.iDelayStart) then
        if v.iTimer==0 and v.sMsg then DC():SendPublicMessage(i,v.sMsg) end
        tChatBot.tHubs[i].iTimer=tChatBot.tHubs[i].iTimer-1
        return true
      end
    end
    if tChatBot.tSay and tChatBot.iTimer and tChatBot.iTimer>=0 and (not tStartTime[tChatBot.sHub] or os.time()>tStartTime[tChatBot.sHub]+tChatBot.iDelayStart) then
      if tChatBot.iTimer==0 and tChatBot.sMsg and tChatBot.sHub then DC():SendPublicMessage(tChatBot.sHub,tChatBot.sMsg) end
      tChatBot.iTimer=tChatBot.iTimer-1
    end
  end
end

function tChatBot:Find(tUser,sData,tbl,i)
  for _, v in pairs(tbl.q) do
    if string.find(tSys:ToLower(sData),"("..tSys:ToLower(v)..")") then
      if i then
        self.tHubs[i].iTimer=tSys:Table(self.tHubs[i].tDelay) and self.tHubs[i].tDelay[math.random(1, #self.tHubs[i].tDelay)] or 1
        self.tHubs[i].sMsg=tSys:Tags(tUser,DC():ToUtf8(tbl.a[math.random(1, #tbl.a)]),sData)
      else
        self.iTimer=tSys:Table(self.tDelay) and self.tDelay[math.random(1, #self.tDelay)] or 1
        self.sMsg=tSys:Tags(tUser,DC():ToUtf8(tbl.a[math.random(1, #tbl.a)]),sData)
        self.sHub=tUser.HL or ""
      end
      return true
    end
  end
end
