Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Ticqclient


Автор: snakesoft 2.6.2007, 21:05
Всем привет.Пытаюсь написать робота по icq.Которого можно биндовать.
К примеру если будет введена цифра 1 бот должен послать опредленное сообщение....
Ближе к делу

Код

res = компонент listbox
all = компонент memo,в который ведется история
ms,koman,pathfile,sk:string;
kom = listbox в котором хранятся команды
pather = listbox в котором хранятся пути к файлам
////////////////////////////
procedure TForm1.icqMessageRecv(Sender: TObject; Msg, UIN: String);
begin
allmessage.Clear;
ms:='';
allmessage.Text:=Msg;
all.Text:=all.Text+#13#10+uin+': '+msg;
all.Lines.Add('');
ms:=allmessage.Text;
numbericq.Text:=uin;
spinedit2.Value:=-1;
spinedit3.Value:=-1;
while spinedit2.Value<kom.Count do
begin
spinedit2.Value:=spinedit2.Value+1;
kom.ItemIndex:=spinedit2.Value;
pather.ItemIndex:=spinedit2.Value;
koman:=kom.Items.Strings[kom.itemindex];
pathfile:=pather.items.strings[pather.itemindex];
load.Lines.LoadFromFile(pathfile);
if koman=ms then
begin
icq.SendMessage(strtoint(numbericq.Text), load.text);
all.Text:=all.Text+#13#10+'BOT'+': '+load.Text;
all.Lines.Add('');
break;
end
else
begin
while spinedit3.Value<res.Count do
begin
spinedit3.Value:=spinedit3.Value+1;
res.itemindex:=spinedit3.Value;
sk:=res.Items.Strings[res.itemindex];
if sk<>numbericq.Text then
begin
break;
load.Lines.LoadFromFile(path+'\'+'start.txt');
icq.SendMessage(strtoint(numbericq.Text), load.text);
res.items.add(numbericq.text);
end;
/////////////////////
end;

Прикол вот в чем нужно отловить 1(первое) ли сообщение пришло от какого-то номера и если да,то сначала выдать меню(start.txt)А при последующих сообщениях меню не выдавать.

Проверку я пытаюсь сделать здесь:

Код

if sk<>numbericq.Text then
begin
break;
load.Lines.LoadFromFile(path+'\'+'start.txt');
icq.SendMessage(strtoint(numbericq.Text), load.text);
res.items.add(numbericq.text);


Не могу понять что я неправильно делаю? Подскажите пожалуйста.Заранее благодаренsmile

Автор: bartram 3.6.2007, 10:52
Ну так при первом обращении записывай номер куда-нибудь, а потом проверяй есть он в базе или нет, если нет -> выдаем меню.
Я бы вообще сделал по другому. Если юзер присылает команду которой не существует, то ему выдается меню.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)