{$DEFINE DEBUG}
uses
{$IFDEF DEBUG}
Console,
{$ENDIF}
http,
Files,
dicas,
ai,
LogD;
const
MASTER_USERNAME = 'Zero_Col';
var
USERS: array of string;
Host,Porta: String;
procedure LoadProxy;
var
S: string;
F: File;
begin
{$IFDEF WINDOWS}
F := FileOpen('scripts\config\proxy.txt');
{$ELSE}
F := FileOpen('scripts/config/proxy.txt');
{$ENDIF}
Host:= '';
Porta:= '';
while not FileEnd(F) do
begin
FileReadln(F, S);
S := Trim(S);
if Length(S) = 0 then
Continue;
if (S[1] = '/') and (Length(S) > 1) and (S[2] = '/') then
Continue;
Host:= PosCopyPalav(S,1,':');
Porta:= PosCopyPalav(S,2,':');
end;
FileClose(F);
{$IFDEF DEBUG}
Writeln('Carregando proxy para AI');
{$ENDIF}
end;
procedure OnStart;
var
S: string;
F: File;
begin
{$IFDEF WINDOWS}
F := FileOpen('scripts\config\users.txt');
{$ELSE}
F := FileOpen('scripts/config/users.txt');
{$ENDIF}
SetArrayLength(USERS, 0);
while not FileEnd(F) do
begin
FileReadln(F, S);
S := Trim(S);
if Length(S) = 0 then
Continue;
if (S[1] = '/') and (Length(S) > 1) and (S[2] = '/') then
Continue;
SetArrayLength(USERS, GetArrayLength(USERS) + 1);
USERS[GetArrayLength(USERS) - 1] := S;
end;
FileClose(F);
{$IFDEF DEBUG}
Writeln('Admins Carregados para AI');
{$ENDIF}
end;
procedure OnRehash;
begin
OnStart;
end;
procedure GravaLog(Channel,Nick,Text: String);
begin
{$IFDEF WINDOWS}
GravaLogD(EXTRACTFILEPATH(ParamStr(0))+'logs\'+LowerCase(Channel)+' '+Replace(DateToStr(Now),'/','-')+'.txt','['+TimeToStr(Now)+'] <'+Nick+'> '+Text);
{$ELSE}
GravaLogD(EXTRACTFILEPATH(ParamStr(0))+'logs/'+LowerCase(Channel)+' '+Replace(DateToStr(Now),'/','-')+'.txt','['+TimeToStr(Now)+'] <'+Nick+'> '+Text);
{$ENDIF}
end;
function AIED(Valor,Arquivo: String) : String;
var
frase: String;
// Ran: Integer;
begin
LoadProxy;
// Ran:=RandRange(0,50);
// if Ran>=25 then
// begin
Try
frase:=ProcuraeSubstitui(GetHtml('http://www.inbot.com.br/cgi-bin/bot_gateway.cgi?server=bot.insite.com.br:8085&charset=html&pure=1&js=1&&msg='+ProcuraeSubstitui(Valor,' ','+'),Host,Porta),#13,'');
Writeln('Analisando...');
except
Frase:='Petrobras';
end;
if (frase='') or (Procura(frase,'energia')=True) or (Procura(frase,'inbot')=True) or (Procura(frase,'Conpet')=True) or (Procura(frase,'Petro')=True) or (Procura(frase,'href')=True) or (Procura(frase,'ERROR')=True) or (Procura(frase,'www.')=True) then
begin
Result:=AssimilaResponde(Valor,Arquivo);
end
else
begin
frase:=ProcuraeSubstitui(frase,#10,'');
frase:=ProcuraeSubstitui(frase,' Ed. ',' TakanodanBot. ');
frase:=ProcuraeSubstitui(frase,' Ed, ',' TakanodanBot, ');
frase:=ProcuraeSubstitui(frase,' Ed ',' TakanodanBot ');
frase:=ProcuraeSubstitui(frase,'<br>','');
frase:=ProcuraeSubstitui(frase,'<b>','');
frase:=ProcuraeSubstitui(frase,'</b>','');
frase:=ProcuraeSubstitui(frase,'<i>','');
frase:=ProcuraeSubstitui(frase,'</i>','');
frase:=ProcuraeSubstitui(frase,'<s>','');
frase:=ProcuraeSubstitui(frase,'</s>','');
frase:=ProcuraeSubstitui(frase,'é','é');
frase:=ProcuraeSubstitui(frase,'ó','ó');
frase:=ProcuraeSubstitui(frase,'á','á');
frase:=ProcuraeSubstitui(frase,'í','í');
frase:=ProcuraeSubstitui(frase,'ú','ú');
frase:=ProcuraeSubstitui(frase,'è','è');
frase:=ProcuraeSubstitui(frase,'ò','ò');
frase:=ProcuraeSubstitui(frase,'à','à');
frase:=ProcuraeSubstitui(frase,'ì','ì');
frase:=ProcuraeSubstitui(frase,'ù','ù');
frase:=ProcuraeSubstitui(frase,'ê','ê');
frase:=ProcuraeSubstitui(frase,'ô','ô');
frase:=ProcuraeSubstitui(frase,'â','â');
frase:=ProcuraeSubstitui(frase,'î','î');
frase:=ProcuraeSubstitui(frase,'û','û');
frase:=ProcuraeSubstitui(frase,'õ','õ');
frase:=ProcuraeSubstitui(frase,'ã','ã');
frase:=ProcuraeSubstitui(frase,'ü','ü');
frase:=ProcuraeSubstitui(frase,'ç','ç');
AssimilaResponde(Valor,Arquivo);
Result:=frase;
end;
// end
// else
// begin
// Result:=AssimilaResponde(Valor,Arquivo);
// end;
end;
function isAdmin(Nick: string): Boolean;
var
i: Integer;
begin
i:=0;
while i < GetArrayLength(USERS) do
begin
if SameText(Nick, USERS[i]) then
begin
Result := True;
Exit;
end;
i:=i+1;
end;
Result := False;
end;
procedure OnCommand(Nick, Command, Channel, Args: string); forward;
procedure OnText(Nick, Channel, Text: string);
var
Resp: String;
begin
if (Procura(StripIRCColor(Params(Text, 1, 1, #32)), Me)) then
begin
{$IFDEF WINDOWS}
Resp:=AIED(StripIRCColor(Params(Text, 2, 0, #32)),EXTRACTFILEPATH(ParamStr(0))+'data\AI.txt');
{$ELSE}
Resp:=AIED(StripIRCColor(Params(Text, 2, 0, #32)),EXTRACTFILEPATH(ParamStr(0))+'data/AI.txt');
{$ENDIF}
Msg(Channel, Nick + ' ' + Resp);
GravaLog(Channel,Me,Resp);
end
else
begin
OnCommand(Nick, Params(Text, 1, 1, #32), Channel, Params(Text, 2, 0, #32));
end;
end;
procedure OnCommand(Nick, Command, Channel, Args: string);
var
Ignored: Boolean;
Resp: String;
begin
Ignored := isAdmin(Nick);
if (ISOP(Channel,Nick)) or (SameText(NICK, MASTER_USERNAME)) or (not Ignored) then
begin
case LowerCase(Command) of
'!delia':
begin
{$IFDEF WINDOWS}
Resp:=DELAI(Args,EXTRACTFILEPATH(ParamStr(0))+'data\AI.txt');
{$ELSE}
Resp:=DELAI(Args,EXTRACTFILEPATH(ParamStr(0))+'data/AI.txt');
{$ENDIF}
Msg(Channel, Nick + ' ' + Resp);
end;
end;
end;
end;