procedure TFormTakanodanPrincipal.ClientSRead(Sender: TObject; Socket: TCustomWinSocket);
Label
Resta1;
var
Chave,KICK, Num, MSG, RecCanal, ErrorCode, RecText, RPing, RecNick, RecMsg, Comando: String;
P, X, Y, Z, K: Integer;
LMC,TXT, Lista: TStringList;
begin
RecText := Socket.ReceiveText;//Texto recebido
FormLog.RichEdit1.Lines.Add(RecText);
//Coloca na StringList, isso evita erros se receber linhas juntas
//Mensagem1#13#10Mensagem2#13#10, fica sendo 1 linha Mensagem1 e outra Mensagem2 =)
RecList.Text := RecText;
//Verifica linha por linha na RecList
if RecList.Count > 0 then
for X := 0 to RecList.Count -1 do
begin
{ Verifica se a linha esta vazia }
if RecList[X] <> '' then
RecText := RecList[X]
else
Continue;
//Responde pings
if Pos('PING :', RecText) > 0 then
begin
P := Pos(':',RecText);
RPing := Copy(RecText, P+1, Length(RecText)-P);
EnviaTexto('PONG ' + RPing);
end;
//Verifica Mensagens
//:Prodigy_-!~prodigy@01zsyQa9sgk.200.157.170.O PRIVMSG #SourceX :!teste
//Zero_Col!~teste@localhost-32634 PRIVMSG TakanodanBot :aews
if (Procura(AnsiUpperCase(RecText),AnsiUpperCase(' MODE #'))=True) or (Procura(AnsiUpperCase(RecText),AnsiUpperCase(' NICK :'))=True) or (Procura(AnsiUpperCase(RecText),AnsiUpperCase('JOIN :#'))=True) or (Procura(AnsiUpperCase(RecText),AnsiUpperCase(' QUIT :'))=True) or (Procura(AnsiUpperCase(RecText),AnsiUpperCase('PART #'))=True) then
begin
for K:=0 to ListBox1.Items.Count-1 do
begin
ClientS.Socket.SendText('NAMES '+ListBox1.Items[K]+#13#10);
end;
end;
if Procura(AnsiUpperCase(RecText),AnsiUpperCase(' 353 '))=True then
begin
AtualizaLista(PegaUsuarios(RecText));
end;
if CopyPalav(RecText, 2) = 'PRIVMSG' then
begin
//Nick que enviou
RecNick := Copy(RecText,2, Pos('!',RecText)-2);
//Destino - CANAL ou NICK
RecCanal := CopyPalav(RecText,3);
//Mensagem recebida
RecMsg := Copy(RecText, Pos(RecCanal,RecText) + Length(RecCanal)+2,Length(RecText));
LMC:=TStringList.Create;
LMC.Duplicates:=dupIgnore;
if FileExists(ExtractFilePath(Application.ExeName)+'logs\log_'+ProcuraeSubstitui(DateToStr(Date),'/','_')+'.txt') then
begin
LMC.LoadFromFile(ExtractFilePath(Application.ExeName)+'logs\log_'+ProcuraeSubstitui(DateToStr(Date),'/','_')+'.txt');
end;
LMC.Add(RecCanal+'<'+RecNick+'>'+RecMsg);
LMC.SaveToFile(ExtractFilePath(Application.ExeName)+'logs\log_'+ProcuraeSubstitui(DateToStr(Date),'/','_')+'.txt');
FreeAndNil(LMC);
if RecCanal[1] <> '#' then//Se foi mensagem no CANAL
begin
Comando := AnsiUpperCase( CopyPalav(RecMsg,1) );//1ª palavra paar maiuscula
// Comando !RCON
if Comando = '!RCON' then
begin
for Y:=0 to CheckListBox1.Count-1 do
begin
if AnsiUpperCase(RecNick) = AnsiUpperCase(CheckListBox1.Items[Y]) then
begin
EnviaTexto(PosCopyPalav(RecMsg,2,'!RCON '));
end;
end;
end
else
begin
// Comando !Restart
if Comando = '!RESTART' then
begin
try
for Y:=0 to CheckListBox1.Count-1 do
begin
if AnsiUpperCase(RecNick) = AnsiUpperCase(CheckListBox1.Items[Y]) then
begin
Button2.Click;
Button1.Click;
end;
end;
Abort;
except
Abort;
end;
end;
// Comando !CHANGESTAT
if Comando = '!CHANGESTAT' then
begin
try
for Y:=0 to CheckListBox1.Count-1 do
begin
if AnsiUpperCase(RecNick) = AnsiUpperCase(CheckListBox1.Items[Y]) then
begin
if PosCopyPalav(RecMsg,2,' ')='1' then
begin
if PosCopyPalav(RecMsg,3,' ')='1' then
begin
CheckBox1.Checked:=True;
BUFFER.Add('NOTICE '+RecNick+' :Abrir Log ao Conectar: Ligado');
end
else
begin
CheckBox1.Checked:=False;
BUFFER.Add('NOTICE '+RecNick+' :Abrir Log ao Conectar: Desligado');
end;
end;
if PosCopyPalav(RecMsg,2,' ')='2' then
begin
if PosCopyPalav(RecMsg,3,' ')='1' then
begin
CheckBox2.Checked:=True;
BUFFER.Add('NOTICE '+RecNick+' :Reconectar se desconectado: Ligado');
end
else
begin
CheckBox2.Checked:=False;
BUFFER.Add('NOTICE '+RecNick+' :Reconectar se desconectado: Desligado');
end;
end;
if PosCopyPalav(RecMsg,2,' ')='3' then
begin
if PosCopyPalav(RecMsg,3,' ')='1' then
begin
CheckBox3.Checked:=True;
BUFFER.Add('NOTICE '+RecNick+' :Mostrar no Tray: Ligado');
end
else
begin
CheckBox3.Checked:=False;
BUFFER.Add('NOTICE '+RecNick+' :Mostrar no Tray: Desligado');
end;
end;
if PosCopyPalav(RecMsg,2,' ')='4' then
begin
if PosCopyPalav(RecMsg,3,' ')='1' then
begin
CheckBox4.Checked:=True;
BUFFER.Add('NOTICE '+RecNick+' :Ocultar ao Iniciar: Ligado');
end
else
begin
CheckBox4.Checked:=False;
BUFFER.Add('NOTICE '+RecNick+' :Ocultar ao Iniciar: Desligado');
end;
end;
if PosCopyPalav(RecMsg,2,' ')='5' then
begin
if PosCopyPalav(RecMsg,3,' ')='1'then
begin
CheckBox5.Checked:=True;
BUFFER.Add('NOTICE '+RecNick+' :Iniciar com Windows: Ligado');
end
else
begin
CheckBox5.Checked:=False;
BUFFER.Add('NOTICE '+RecNick+' :Iniciar com Windows: Desligado');
end;
end;
end;
end;
except
Abort;
end;
end;
// Comando !STAT
if Comando = '!STAT' then
begin
try
for Y:=0 to CheckListBox1.Count-1 do
begin
if AnsiUpperCase(RecNick) = AnsiUpperCase(CheckListBox1.Items[Y]) then
begin
if CheckBox1.Checked then
begin
BUFFER.Add('NOTICE '+RecNick+' :Abrir Log ao Conectar: Ligado');
end
else
begin
BUFFER.Add('NOTICE '+RecNick+' :Abrir Log ao Conectar: Desligado');
end;
if CheckBox2.Checked then
begin
BUFFER.Add('NOTICE '+RecNick+' :Reconectar se desconectado: Ligado');
end
else
begin
BUFFER.Add('NOTICE '+RecNick+' :Reconectar se desconectado: Desligado');
end;
if CheckBox3.Checked then
begin
BUFFER.Add('NOTICE '+RecNick+' :Mostrar no Tray: Ligado');
end
else
begin
BUFFER.Add('NOTICE '+RecNick+' :Mostrar no Tray: Desligado');
end;
if CheckBox4.Checked then
begin
BUFFER.Add('NOTICE '+RecNick+' :Ocultar ao Iniciar: Ligado');
end
else
begin
BUFFER.Add('NOTICE '+RecNick+' :Ocultar ao Iniciar: Desligado');
end;
if CheckBox5.Checked then
begin
BUFFER.Add('NOTICE '+RecNick+' :Iniciar com Windows: Ligado');
end
else
begin
BUFFER.Add('NOTICE '+RecNick+' :Iniciar com Windows: Desligado');
end;
end;
end;
except
Abort;
end;
end;
// Comando !DELEXEC
if Comando = '!DELEXEC' then
try
for Y:=0 to CheckListBox1.Count-1 do
begin
if AnsiUpperCase(RecNick) = AnsiUpperCase(CheckListBox1.Items[Y]) then
begin
for Z:= 0 to Memo1.Lines.Count-1 do
begin
if AnsiUpperCase(PosCopyPalav(RecMsg,2,'!DELEXEC '))=AnsiUpperCase(Memo1.Lines[Z]) then
begin
EnviaPrivMsg(RecNick,': Comando '+PosCopyPalav(RecMsg,2,'!DELEXEC ')+' Removido da Lista de Auto-EXEC');
Memo1.Lines.Delete(Z);
end;
end;
end;
end;
Abort;
except
Abort;
end;
// Comando !AEXEC
if Comando = '!AEXEC' then
begin
try
for Y:=0 to CheckListBox1.Count-1 do
begin
if AnsiUpperCase(RecNick) = AnsiUpperCase(CheckListBox1.Items[Y]) then
begin
for Z:=0 to Memo1.Lines.Count-1 do
begin
BUFFER.Add('NOTICE '+RecNick+' :'+Memo1.Lines[Z]);
end;
Abort;
end;
end;
except
Abort;
end;
end;
// Comando !ADDEXEC
if Comando = '!ADDEXEC' then
begin
try
for Y:=0 to CheckListBox1.Count-1 do
begin
if AnsiUpperCase(RecNick) = AnsiUpperCase(CheckListBox1.Items[Y]) then
begin
Memo1.Lines.Add(PosCopyPalav(RecMsg,2,'!ADDEXEC '));
Abort;
end;
end;
except
Abort;
end;
end;
end;
end;
if RecCanal[1] = '#' then//Se foi mensagem no CANAL
begin
// ***** Comandos *****
Comando := AnsiUpperCase( CopyPalav(RecMsg,1) );//1ª palavra paar maiuscula
// Comando !ERRO
if Comando = '!ERRO' then
try
ErrorCode:=PosCopyPalav(AnsiUpperCase(RecMsg),2,AnsiUpperCase('!ERRO '));
if not TestaNumero(ErrorCode) then
begin
abort;
end;
Lista:=TStringList.Create;
Lista.Duplicates:=dupIgnore;
Lista.LoadFromFile(ExtractFilePath(Application.ExeName)+'bin\'+'Erros.txt');
Lista.Text:=Crypt('D',Lista[0]);
for Z:=0 to Lista.Count-1 do
begin
if PosCopyPalav(Lista[Z],1,'=')=ErrorCode then
begin
EnviaPrivMsg(RecCanal,RecNick+': Erro: '+ErrorCode+'= '+PosCopyPalav(Lista[Z],2,'='));
end;
end;
FreeAndNil(Lista);
except
EnviaPrivMsg(RecCanal, RecNick +': Valor inválido ou Nulo');
end;
// Comando !HELP
if Comando = '!HELP' then
try
Lista:=TStringList.Create;
Lista.Duplicates:=dupIgnore;
Lista.LoadFromFile(ExtractFilePath(Application.ExeName)+'bin\'+'cmd.txt');
for Y:=0 to CheckListBox1.Count-1 do
begin
if AnsiUpperCase(RecNick) = AnsiUpperCase(CheckListBox1.Items[Y]) then
begin
for Z:=0 to Lista.Count-1 do
begin
BUFFER.Add('NOTICE '+RecNick+' :'+Lista[Z]);
end;
end;
end;
FreeAndNil(Lista);
except
EnviaPrivMsg(RecCanal, RecNick +': Valor inválido ou Nulo');
end;
// Comando !BDEERRO
if Comando = '!BDEERRO' then
begin
try
ErrorCode:=PosCopyPalav(AnsiUpperCase(RecMsg),2,AnsiUpperCase('!BDEERRO '));
if not TestaNumero(ErrorCode) then
begin
abort;
end;
Lista:=TStringList.Create;
Lista.Duplicates:=dupIgnore;
Lista.LoadFromFile(ExtractFilePath(Application.ExeName)+'bin\'+'BDEErros.txt');
Lista.Text:=Crypt('D',Lista[0]);
for Z:=0 to Lista.Count-1 do
begin
if PosCopyPalav(Lista[Z],1,':')=ErrorCode then
begin
EnviaPrivMsg(RecCanal,RecNick+': Erro: '+ErrorCode+'= '+PosCopyPalav(Lista[Z],2,'='));
end;
end;
FreeAndNil(Lista);
except
EnviaPrivMsg(RecCanal, RecNick +': Valor inválido ou Nulo');
end;
end;
// Comando !ADMINS
if Comando = '!ADMINS' then
begin
try
for Y:=0 to CheckListBox1.Count-1 do
begin
if AnsiUpperCase(RecNick) = AnsiUpperCase(CheckListBox1.Items[Y]) then
begin
for Z:=0 to CheckListBox1.Items.Count-1 do
begin
BUFFER.Add('NOTICE '+RecNick+' :'+CheckListBox1.Items[Z]);
end;
end;
end;
except
Abort;
end;
end;
// Comando !CHANS
if Comando = '!CHANS' then
begin
try
for Y:=0 to CheckListBox1.Count-1 do
begin
if AnsiUpperCase(RecNick) = AnsiUpperCase(CheckListBox1.Items[Y]) then
begin
for Z:=0 to ListBox1.Items.Count-1 do
begin
BUFFER.Add('NOTICE '+RecNick+' :'+ListBox1.Items[Z]);
end;
end;
end;
except
Abort;
end;
end;
// Comando !DELCHAN
if Comando = '!DELCHAN' then
try
for Y:=0 to CheckListBox1.Count-1 do
begin
if AnsiUpperCase(RecNick) = AnsiUpperCase(CheckListBox1.Items[Y]) then
begin
for Z:= 0 to ListBox1.Items.Count-1 do
begin
if (AnsiUpperCase(PosCopyPalav(RecMsg,2,'!DELCHAN '))=AnsiUpperCase(ListBox1.Items[Z])) then
begin
EnviaPrivMsg(RecCanal,RecNick+': Canal '+PosCopyPalav(RecMsg,2,'!DELCHAN ')+' Removido da Lista de Auto-Join');
ListBox1.Items.Delete(Z);
end;
end;
end;
end;
except
Abort;
end;
// Comando !ADDCHAN
if Comando = '!ADDCHAN' then
try
for Y:=0 to CheckListBox1.Count-1 do
begin
if AnsiUpperCase(RecNick) = AnsiUpperCase(CheckListBox1.Items[Y]) then
begin
for Z:= 0 to ListBox1.Items.Count-1 do
begin
if AnsiUpperCase(PosCopyPalav(RecMsg,2,'!ADDCHAN '))=AnsiUpperCase(ListBox1.Items[Z]) then
begin
MessageBeep(16);
EnviaPrivMsg(RecCanal,RecNick+': Já exite na lista');
Abort;
end;
end;
if PosCopyPalav(RecMsg,2,'!ADDCHAN ')[1]='#' then
begin
if ListBox1.Items.Count >= 10 then
begin
MessageBeep(16);
EnviaPrivMsg(RecCanal,RecNick+': Maximo de 10 Canais');
Abort;
end;
EnviaPrivMsg(RecCanal,RecNick+': Canal '+PosCopyPalav(RecMsg,2,'!ADDCHAN ')+' Adcionado a Lista de Auto-Join');
ListBox1.Items.Add(PosCopyPalav(RecMsg,2,'!ADDCHAN '));
end
else
begin
EnviaPrivMsg(RecCanal,RecNick+': Faltou colocar #');
end;
end;
end;
except
Abort;
end;
// Comando !DELADMIN
if Comando = '!DELADMIN' then
try
for Y:=0 to CheckListBox1.Count-1 do
begin
if AnsiUpperCase(RecNick) = AnsiUpperCase(CheckListBox1.Items[Y]) then
begin
for Z:= 0 to CheckListBox1.Items.Count-1 do
begin
if (AnsiUpperCase(PosCopyPalav(RecMsg,2,'!DELADMIN '))=AnsiUpperCase(CheckListBox1.Items[Z])) and (CheckListBox1.Checked[Z]=False) then
begin
EnviaPrivMsg(RecCanal,RecNick+': Nick '+PosCopyPalav(RecMsg,2,'!DELADMIN ')+' Removido da Lista de Administradores');
CheckListBox1.Items.Delete(Z);
end;
end;
end;
end;
except
Abort;
end;
// Comando !ADDADMIN
if Comando = '!ADDADMIN' then
try
for Y:=0 to CheckListBox1.Count-1 do
begin
if AnsiUpperCase(RecNick) = AnsiUpperCase(CheckListBox1.Items[Y]) then
begin
for Z:= 0 to CheckListBox1.Items.Count-1 do
begin
if AnsiUpperCase(PosCopyPalav(RecMsg,2,'!ADDADMIN '))=AnsiUpperCase(CheckListBox1.Items[Z]) then
begin
MessageBeep(16);
EnviaPrivMsg(RecCanal,RecNick+': Já exite na lista');
Abort;
end;
end;
EnviaPrivMsg(RecCanal,RecNick+': Nick '+PosCopyPalav(RecMsg,2,'!ADDADMIN ')+' Adcionado a Lista de Administradores');
CheckListBox1.Items.Add(PosCopyPalav(RecMsg,2,'!ADDADMIN '));
end;
end;
except
Abort;
end;
if Comando = '!DELIA' then
try
for Y:=0 to CheckListBox1.Count-1 do
begin
if (AnsiUpperCase(RecNick) = AnsiUpperCase(CheckListBox1.Items[Y])) or ((AnsiUpperCase(RecCanal+'=@'+RecNick) = AnsiUpperCase(ListBox2.Items[Y])) and (ADDDFOP)) or ((AnsiUpperCase(RecCanal+'=+'+RecNick) = AnsiUpperCase(ListBox2.Items[Y])) and (ADDDFVOICE)) then
begin
EnviaPrivMsg(RecCanal,RecNick+': '+DELAI(PosCopyPalav(RecMsg,2,'!DELIA ')));
end;
end;
except
EnviaPrivMsg(RecCanal, RecNick +': Valor inválido ou Nulo');
end;
// Comando !KICK
if Comando = '!KICK' then
try
for Y:=0 to CheckListBox1.Count-1 do
begin
if AnsiUpperCase(RecNick) = AnsiUpperCase(CheckListBox1.Items[Y]) then
begin
Lista:=TStringList.Create;
Lista.Duplicates:=dupIgnore;
Lista.LoadFromFile(ExtractFilePath(Application.ExeName)+'bin\kicks.txt');
Randomize;
KICK:=Lista[Random(Lista.Count)];
if AnsiUpperCase(PosCopyPalav(RecMsg,2,'!KICK '))<>AnsiUpperCase(Edit3.Text) then
begin
if PosCopyPalav(RecMsg,2,'!KICK ')<>'' then
begin
EnviaTexto('KICK '+RecCanal+' '+PosCopyPalav(RecMsg,2,'!KICK ')+' :'+KICK);
end
else
begin
EnviaPrivMsg(RecCanal,RecNick+': Especifique um Nick');
end;
end;
FreeAndNil(Lista);
end;
end;
except
EnviaPrivMsg(RecCanal, RecNick +': Valor inválido ou Nulo');
end;
// Comando !KB
if Comando = '!KB' then
try
for Y:=0 to CheckListBox1.Count-1 do
begin
if AnsiUpperCase(RecNick) = AnsiUpperCase(CheckListBox1.Items[Y]) then
begin
Lista:=TStringList.Create;
Lista.Duplicates:=dupIgnore;
Lista.LoadFromFile(ExtractFilePath(Application.ExeName)+'bin\kicks.txt');
Randomize;
KICK:=Lista[Random(Lista.Count)];
if AnsiUpperCase(PosCopyPalav(RecMsg,2,'!KB '))<>AnsiUpperCase(Edit3.Text) then
begin
if PosCopyPalav(RecMsg,2,'!KB ')<>'' then
begin
EnviaTexto('MODE '+RecCanal+' +b *'+RecNick+'*');
EnviaTexto('KICK '+RecCanal+' '+PosCopyPalav(RecMsg,2,'!KB ')+' :'+KICK);
end
else
begin
EnviaPrivMsg(RecCanal,RecNick+': Especifique um Nick');
end;
end;
FreeAndNil(Lista);
end;
end;
except
EnviaPrivMsg(RecCanal, RecNick +': Valor inválido ou Nulo');
end;
// Comando !OP
if Comando = '!OP' then
try
for Y:=0 to CheckListBox1.Count-1 do
begin
if AnsiUpperCase(RecNick) = AnsiUpperCase(CheckListBox1.Items[Y]) then
begin
if PosCopyPalav(RecMsg,2,'!OP ')='' then
begin
EnviaTexto('MODE '+RecCanal+' +o '+RecNick);
end
else
begin
EnviaTexto('MODE '+RecCanal+' +o '+PosCopyPalav(RecMsg,2,'!OP '));
end;
end;
end;
except
EnviaPrivMsg(RecCanal, RecNick +': Valor inválido ou Nulo');
end;
// Comando !DEOP
if Comando = '!DEOP' then
try
for Y:=0 to CheckListBox1.Count-1 do
begin
if AnsiUpperCase(RecNick) = AnsiUpperCase(CheckListBox1.Items[Y]) then
begin
if PosCopyPalav(RecMsg,2,'!DEOP ')='' then
begin
EnviaTexto('MODE '+RecCanal+' -o '+RecNick);
end
else
begin
EnviaTexto('MODE '+RecCanal+' -o '+PosCopyPalav(RecMsg,2,'!DEOP '));
end;
end;
end;
except
EnviaPrivMsg(RecCanal, RecNick +': Valor inválido ou Nulo');
end;
// Comando !VOICE
if Comando = '!VOICE' then
try
for Y:=0 to CheckListBox1.Count-1 do
begin
if AnsiUpperCase(RecNick) = AnsiUpperCase(CheckListBox1.Items[Y]) then
begin
if PosCopyPalav(RecMsg,2,'!VOICE ')='' then
begin
EnviaTexto('MODE '+RecCanal+' +v '+RecNick);
end
else
begin
EnviaTexto('MODE '+RecCanal+' +v '+PosCopyPalav(RecMsg,2,'!VOICE '));
end;
end;
end;
except
EnviaPrivMsg(RecCanal, RecNick +': Valor inválido ou Nulo');
end;
// Comando !DEVOICE
if Comando = '!DEVOICE' then
try
for Y:=0 to CheckListBox1.Count-1 do
begin
if AnsiUpperCase(RecNick) = AnsiUpperCase(CheckListBox1.Items[Y]) then
begin
if PosCopyPalav(RecMsg,2,'!DEVOICE ')='' then
begin
EnviaTexto('MODE '+RecCanal+' -v '+RecNick);
end
else
begin
EnviaTexto('MODE '+RecCanal+' -v '+PosCopyPalav(RecMsg,2,'!DEVOICE '));
end;
end;
end;
except
EnviaPrivMsg(RecCanal, RecNick +': Valor inválido ou Nulo');
end;
// Comando !FRASE
if Comando = '!FRASE' then
try
Num:=PosCopyPalav(PosCopyPalav(RecMsg,2,'!FRASE '),1,' ');
if not TestaNumero(Num) then
begin
MSG:=Fraseexibir(PosCopyPalav(RecMsg,2,'!FRASE '));
Chave:=PosCopyPalav(RecMsg,2,'!FRASE ');
BUFFER.Add('NOTICE '+RecNick+' :'+MSG);
SepararTotalFraze(0);
end
else
begin
MSG:=Fraseexibir(PosCopyPalav(RecMsg,2,'!FRASE '+Num+' '));
Chave:=PosCopyPalav(RecMsg,2,'!FRASE '+Num+' ');
BUFFER.Add('NOTICE '+RecNick+' :'+MSG);
SepararTotalFraze(StrToInt(Num));
end;
Lista:=TStringList.Create;
Lista.Duplicates:=dupIgnore;
Lista.LoadFromFile(ExtractFilePath(Application.ExeName)+'bin\achadas.txt');
Lista.Text:=Crypt('D',Lista[0]);
if MSG<>'Nada Encontrado com '+Chave+'!!!' then
begin
for Y:= 0 to Lista.Count-1 do
begin
BUFFER.Add('NOTICE '+RecNick+' :'+'6,0'+ Lista[Y]);
end;
end;
FreeAndNil(Lista);
except
EnviaPrivMsg(RecCanal, RecNick +': Valor inválido ou Nulo');
end;
// Comando !DELFRASE
if Comando = '!DELFRASE' then
try
for Y:=0 to ListBox2.Count-1 do
begin
if ((AnsiUpperCase(RecCanal+'=@'+RecNick) = AnsiUpperCase(ListBox2.Items[Y])) and (DelDFAIOP)) or ((AnsiUpperCase(RecCanal+'=+'+RecNick) = AnsiUpperCase(ListBox2.Items[Y])) and (DelDFAIVOICE)) then
begin
Num:=PosCopyPalav(PosCopyPalav(RecMsg,2,'!DELFRASE '),1,' ');
if TestaNumero(Num) then
begin
EnviaPrivMsg(RecCanal, RecNick +': '+ Fraseremove(StrToInt(PosCopyPalav(RecMsg,2,'!DELFRASE '))));
end
else
begin
EnviaPrivMsg(RecCanal, RecNick +': Valor inválido ou Nulo');
end;
end;
end;
except
EnviaPrivMsg(RecCanal, RecNick +': Valor inválido ou Nulo');
end;
// Comando !ADDFRASE
if Comando = '!ADDFRASE' then
try
for Y:=0 to ListBox2.Count-1 do
begin
if ((AnsiUpperCase(RecCanal+'=@'+RecNick) = AnsiUpperCase(ListBox2.Items[Y])) and (ADDDFOP)) or ((AnsiUpperCase(RecCanal+'=+'+RecNick) = AnsiUpperCase(ListBox2.Items[Y])) and (ADDDFVOICE)) then
begin
EnviaPrivMsg(RecCanal, RecNick +': '+ addFrase(PosCopyPalav(RecMsg,2,'!ADDFRASE ')));
end;
end;
except
EnviaPrivMsg(RecCanal, RecNick +': Valor inválido ou Nulo');
end;
// Comando !DICA
if Comando = '!DICA' then
try
Num:=PosCopyPalav(PosCopyPalav(RecMsg,2,'!DICA '),1,' ');
if not TestaNumero(Num) then
begin
MSG:=dicaexibir(PosCopyPalav(RecMsg,2,'!DICA '));
Chave:=PosCopyPalav(RecMsg,2,'!DICA ');
BUFFER.Add('NOTICE '+RecNick+' :'+MSG);
SepararTotalDica(0);
end
else
begin
MSG:=dicaexibir(PosCopyPalav(RecMsg,2,'!DICA '+Num+' '));
Chave:=PosCopyPalav(RecMsg,2,'!DICA '+Num+' ');
BUFFER.Add('NOTICE '+RecNick+' :'+MSG);
SepararTotalDica(StrToInt(Num));
end;
Lista:=TStringList.Create;
Lista.Duplicates:=dupIgnore;
Lista.LoadFromFile(ExtractFilePath(Application.ExeName)+'bin\achadas.txt');
Lista.Text:=Crypt('D',Lista[0]);
if MSG<>'Nada Encontrado com '+Chave+'!!!' then
begin
for Y:= 0 to Lista.Count-1 do
begin
BUFFER.Add('NOTICE '+RecNick+' :'+'6,0'+ Lista[Y]);
end;
end;
FreeAndNil(Lista);
except
EnviaPrivMsg(RecCanal, RecNick +': Valor inválido ou Nulo');
end;
// Comando !DELDICA
if Comando = '!DELDICA' then
try
for Y:=0 to ListBox2.Count-1 do
begin
if ((AnsiUpperCase(RecCanal+'=@'+RecNick) = AnsiUpperCase(ListBox2.Items[Y])) and (DelDFAIOP)) or ((AnsiUpperCase(RecCanal+'=+'+RecNick) = AnsiUpperCase(ListBox2.Items[Y])) and (DelDFAIVOICE)) then
begin
Num:=PosCopyPalav(PosCopyPalav(RecMsg,2,'!DELDICA '),1,' ');
if TestaNumero(Num) then
begin
EnviaPrivMsg(RecCanal, RecNick +': '+ dicaremove(StrToInt(PosCopyPalav(RecMsg,2,'!DELDICA '))));
end
else
begin
EnviaPrivMsg(RecCanal, RecNick +': Valor inválido ou Nulo');
end;
end;
end;
except
EnviaPrivMsg(RecCanal, RecNick +': Valor inválido ou Nulo');
end;
// Comando !ADDDICA
if Comando = '!ADDDICA' then
try
for Y:=0 to ListBox2.Count-1 do
begin
if ((AnsiUpperCase(RecCanal+'=@'+RecNick) = AnsiUpperCase(ListBox2.Items[Y])) and (ADDDFOP)) or ((AnsiUpperCase(RecCanal+'=+'+RecNick) = AnsiUpperCase(ListBox2.Items[Y])) and (ADDDFVOICE)) then
begin
EnviaPrivMsg(RecCanal, RecNick +': '+ adddica('Por 15,0'+RecNick+'1,0 - '+PosCopyPalav(RecMsg,2,'!ADDDICA ')));
end;
end;
except
EnviaPrivMsg(RecCanal, RecNick +': Valor inválido ou Nulo');
end;
//Inteligencia Artificial
//Responde Conversa
if Procura(AnsiUpperCase(StripIRCColor(RecMsg)),AnsiUpperCase(Edit3.Text))=True then
begin
try
TXT:=TStringList.Create;
TXT.Duplicates:=dupIgnore;
TXT.LoadFromFile(ExtractFilePath(Application.ExeName)+'bin\AI.txt');
TXT.Text:=Crypt('D',TXT[0]);
MSG:=AI(RecMsg,TXT);
EnviaPrivMsg(RecCanal, RecNick+': '+MSG);
FreeAndNil(TXT);
except
EnviaPrivMsg(RecCanal, RecNick+': '+'Não Sei :\');
end;
// Assimila Conversa
try
Lista:=TStringList.Create;
Lista.Duplicates:=dupIgnore;
Lista.LoadFromFile(ExtractFilePath(Application.ExeName)+'bin\AI.txt');
Lista.Text:=Crypt('D',Lista[0]);
if Procura(AnsiUpperCase(Lista.Text),AnsiUpperCase(PosCopyPalav(StripIRCColor(RecMsg),2,Edit3.Text+' ')))=False then
begin
if Procura(AnsiUpperCase(PosCopyPalav(StripIRCColor(RecMsg),2,Edit3.Text)),AnsiUpperCase(Edit3.Text))=False then
begin
Lista.Add(ProcuraeSubstitui(PosCopyPalav(StripIRCColor(RecMsg),2,Edit3.Text+' '),': ',''));
Lista.Text:=Crypt('C',Lista.Text);
Lista.SaveToFile(ExtractFilePath(Application.ExeName)+'bin\AI.txt');
end;
end;
FreeAndNil(Lista);
except
on E : Exception do
begin
MSG:='Erro: '+E.Message;
EnviaPrivMsg(RecCanal, RecNick+': '+MSG);
end;
end;
end;
// Comando !HORA
if Comando = '!HORA' then
begin
if (Time>=StrToTime('00:00:00')) and (Time<=StrToTime('11:59:00')) then
begin
EnviaPrivMsg(RecCanal, RecNick +': '+ Copy(TimeToStr(Time),1,2)+' Hora(s)'+', '+Copy(TimeToStr(Time),4,2)+' Minuto(s)'+' e '+Copy(TimeToStr(Time),7,2)+' Segundo(s)'+' Bom-Dia 0,3 0,7:1,3D1,0 0,3 0,4:1,3D1,0 0,3 0,6:1,3D1,0 0,3 0,12:1,3D');
end;
if (Time>=StrToTime('12:00:00')) and (Time<=StrToTime('17:59:00')) then
begin
EnviaPrivMsg(RecCanal, RecNick +': '+ Copy(TimeToStr(Time),1,2)+' Hora(s)'+', '+Copy(TimeToStr(Time),4,2)+' Minuto(s)'+' e '+Copy(TimeToStr(Time),7,2)+' Segundo(s)'+' Boa-Tarde 0,3 0,7:1,3D1,0 0,3 0,4:1,3D1,0 0,3 0,6:1,3D1,0 0,3 0,12:1,3D');
end;
if (Time>=StrToTime('18:00:00')) and (Time<=StrToTime('23:59:00')) then
begin
EnviaPrivMsg(RecCanal, RecNick +': '+ Copy(TimeToStr(Time),1,2)+' Hora(s)'+', '+Copy(TimeToStr(Time),4,2)+' Minuto(s)'+' e '+Copy(TimeToStr(Time),7,2)+' Segundo(s)'+' Boa-Noite 0,3 0,7:1,3D1,0 0,3 0,4:1,3D1,0 0,3 0,6:1,3D1,0 0,3 0,12:1,3D');
end;
end;
// Comando !EXTENSO Numero
if Comando = '!EXTENSO' then
try
if Length(Extenso(CopyPalav(RecMsg,2)))>= 451 then
begin
EnviaPrivMsg(RecCanal, RecNick +': Valor Muito Alto');
end
else
begin
EnviaPrivMsg(RecCanal, RecNick +': '+ Extenso(CopyPalav(RecMsg,2)));
end;
except
EnviaPrivMsg(RecCanal, RecNick +': Valor inválido ou Nulo');
end;
// Comando !INFOHOST Site
if Comando = '!INFOHOST' then
try
if Length(infohost(CopyPalav(RecMsg,2)))>= 451 then
begin
EnviaPrivMsg(RecCanal, RecNick +': Link Muito Grande');
end
else
begin
EnviaPrivMsg(RecCanal, RecNick +': '+ infohost(CopyPalav(RecMsg,2)));
end;
except
on E : Exception do
begin
EnviaPrivMsg(RecCanal, RecNick +': '+E.Message);
end;
end;
// Comando !ACHAR site
if Comando = '!ACHAR' then
try
if Length(filtra(PosCopyPalav(RecMsg,2,'!ACHAR '))) <= 450 then
begin
EnviaPrivMsg(RecCanal, RecNick +': '+ filtra(PosCopyPalav(RecMsg,2,'!ACHAR ')));
end
else
begin
EnviaPrivMsg(RecCanal, RecNick +': Link Muito Grande');
end
except
on E : Exception do
begin
EnviaPrivMsg(RecCanal, RecNick +': '+E.Message);
end;
end;
// Comando !INFO CS
if Comando = '!INFO' then
try
if Length(infoip(CopyPalav(RecMsg,2)))>= 451 then
begin
EnviaPrivMsg(RecCanal, RecNick +': Informação Muito Grande');
end
else
begin
EnviaPrivMsg(RecCanal, RecNick +': '+ Infoip(CopyPalav(RecMsg,2)));
BUFFER.Add('NOTICE '+RecNick+' :'+'Jogadores no Servidor:0,3 '+ InfoPlayer(CopyPalav(RecMsg,2)))
end;
except
on E : Exception do
begin
EnviaPrivMsg(RecCanal, RecNick +': '+E.Message);
end;
end;
// Comando Versão :D
if Comando = '!VERSÃO' then
EnviaPrivMsg(RecCanal, RecNick +': Bot Versão '+GetBuildInfo+' Criado e Programado por Jocélio Pergentino (81) 8828-5355');
// Comando !ASCII
if Comando = '!ASCII' then
try
if AnsiUpperCase(CopyPalav(RecMsg,2)) = AnsiUpperCase('Del') then
begin
EnviaPrivMsg(RecCanal, RecNick +': 7');
Abort;
end;
if AnsiUpperCase(CopyPalav(RecMsg,2)) = AnsiUpperCase('Delete') then
begin
EnviaPrivMsg(RecCanal, RecNick +': 7');
Abort;
end;
if AnsiUpperCase(CopyPalav(RecMsg,2)) = AnsiUpperCase('BackSpace') then
begin
EnviaPrivMsg(RecCanal, RecNick +': 8');
Abort;
end;
if AnsiUpperCase(CopyPalav(RecMsg,2)) = AnsiUpperCase('Tab') then
begin
EnviaPrivMsg(RecCanal, RecNick +': 9');
Abort;
end;
if AnsiUpperCase(CopyPalav(RecMsg,2)) = AnsiUpperCase('Enter') then
begin
EnviaPrivMsg(RecCanal, RecNick +': 13');
Abort;
end;
if AnsiUpperCase(CopyPalav(RecMsg,2)) = AnsiUpperCase('Shift') then
begin
EnviaPrivMsg(RecCanal, RecNick +': 16');
Abort;
end;
if AnsiUpperCase(CopyPalav(RecMsg,2)) = AnsiUpperCase('CTRL') then
begin
EnviaPrivMsg(RecCanal, RecNick +': 17');
Abort;
end;
if AnsiUpperCase(CopyPalav(RecMsg,2)) = AnsiUpperCase('ALT') then
begin
EnviaPrivMsg(RecCanal, RecNick +': 18');
Abort;
end;
if AnsiUpperCase(CopyPalav(RecMsg,2)) = AnsiUpperCase('CapsLock') then
begin
EnviaPrivMsg(RecCanal, RecNick +': 20');
Abort;
end;
if AnsiUpperCase(CopyPalav(RecMsg,2)) = AnsiUpperCase('Espaço') then
begin
EnviaPrivMsg(RecCanal, RecNick +': 32');
Abort;
end;
EnviaPrivMsg(RecCanal, RecNick +': '+ IntToStr(Ord(CopyPalav(RecMsg,2)[1])));
except
Abort;
end;
// Comando !CHR
if AnsiUpperCase(Comando) = AnsiUpperCase('!CHR') then
try
if StrToInt(CopyPalav(RecMsg,2)) = 7 then
begin
EnviaPrivMsg(RecCanal, RecNick +': {Delete}');
Abort;
end;
if StrToInt(CopyPalav(RecMsg,2)) = 8 then
begin
EnviaPrivMsg(RecCanal, RecNick +': {BackSpace}');
Abort;
end;
if StrToInt(CopyPalav(RecMsg,2)) = 9 then
begin
EnviaPrivMsg(RecCanal, RecNick +': {Tab}');
Abort;
end;
if StrToInt(CopyPalav(RecMsg,2)) = 13 then
begin
EnviaPrivMsg(RecCanal, RecNick +': {Enter}');
Abort;
end;
if StrToInt(CopyPalav(RecMsg,2)) = 16 then
begin
EnviaPrivMsg(RecCanal, RecNick +': {Shift}');
Abort;
end;
if StrToInt(CopyPalav(RecMsg,2)) = 17 then
begin
EnviaPrivMsg(RecCanal, RecNick +': {CTRL}');
Abort;
end;
if StrToInt(CopyPalav(RecMsg,2)) = 18 then
begin
EnviaPrivMsg(RecCanal, RecNick +': {ALT}');
Abort;
end;
if StrToInt(CopyPalav(RecMsg,2)) = 20 then
begin
EnviaPrivMsg(RecCanal, RecNick +': {CapsLock}');
Abort;
end;
if StrToInt(CopyPalav(RecMsg,2)) = 32 then
begin
EnviaPrivMsg(RecCanal, RecNick +': {Espaço}');
Abort;
end;
EnviaPrivMsg(RecCanal, RecNick +': '+ Char(StrToInt(CopyPalav(RecMsg,2))) );
except
Abort;
end;
end;
end;
end;//Fim for X := 0 to RecList.Count -1 do
end;