Delphi уроки - Создаем простого ICQ бота на Delphi

Опубиковано: 20.12.2009 г., автор: , просмотров: 50676

Delphi уроки - создаем ICQ бота

Хочу, представляю вашему вниманию урок, по созданию ICQ бота на delphi. Да, кстати наш бот будет не простой, он сможет самостоятельно обучаться ответам. Итак, для данного урока нам понадобятся следующие компоненты:

TICQClient – основа программы (не стандартный компонент)
Edit1 – в нём будем вписывать свой UIN
Edit2 – в нём будем вписывать свой Пароль
Label1 – в нём будет отображаться статус
Label2 – поставьте в нем заголовок «UIN»
Label3 - поставьте в нем заголовок «Пароль»
ListBox1 – для отображения принятых сообщений
Memo1 – ответы на которые будет отвечать бот

Ну что ж давайте начинать:

1. Создадим процедуру FormCreate и пропишем свойства некоторых  компонентов.

procedure TForm1.FormCreate(Sender: TObject);
begin
Button2.Enabled:=false;  // Блокируем кнопку №2
label3.Font.Color:=clRed;  // Меняем цвет label'а на красный
label3.Caption:='ОффЛайн';  // Меняем заголовок label'а
memo1.Lines.Clear; // чистим memo
memo1.Lines.LoadFromFile('Ответы Бота.txt');  // загружаем ответы бота
end;

2.  Создадим процедуру Button1Click и пропишем там следующий код:

procedure TForm1.Button1Click(Sender: TObject);
begin
ICQClient1.UIN:=strtoint(edit1.Text); //  UIN
ICQClient1.Password:=edit2.Text;     // Пароль
ICQClient1.Login();  // Подключаемся
end;
//В edit1 будем вводить свой UIN, а  в edit2 пароль

3. Создаём процедуру ICQClient1Login

procedure TForm1.ICQClient1Login(Sender: TObject);
begin
if ICQClient1.LoggedIn then // если подключились то
label3.Caption:='ОнЛайн';  // меняем статус в label
label3.Font.Color:=clGreen; // меняем цвет текста в label
Button1.Enabled:=false;     // Блокируем кнопку №1
Button2.Enabled:=true;      // Разблокируем кнопку №2
end;

4. По клику Button2Click мы будем отключаться

procedure TForm1.Button2Click(Sender: TObject);
begin
button1.Enabled:=true; // Разблокируем копку №1
button2.Enabled:=false; // Блокируем копку №2
ICQClient1.LogOff;     // Отключаемся
label1.Font.Color:=clRed;  // Меняем цвет label'а на красный
label1.Caption:='ОффЛайн// Меняем заголовок
end;

5. Создаем процедуру ICQClient1MessageRecv – основная часть программы

procedure TForm1.ICQClient1MessageRecv(Sender: TObject; Msg, UIN: String);
var
ICQ: Cardinal;
i: integer;
// объявим переменные
begin
randomize;
i:=random(Memo1.Lines.Count-1);
// функция рандома позволяет отвечать на сообщения в разброс
ListBox1.Items.Add(UIN + ': ' + Msg); // добавим сообщение в ListBox1
memo1.Lines.Add(msg); // запомним фразу которую нам прислали
ICQClient1.SendMessage(StrToInt(UIN), ''+ memo1.Lines.strings[i] +'');
// Ответы на него
ListBox1.Items.Add('Бот: ' + memo1.Lines.Strings[i] +'');
// Добавим сообщение отправленное ботом в ListBox1
end;

6. ICQClient1Error – процедура выдающая ошибки при подключении, Не забудьте добавить ICQWorks в uses.

procedure TForm1.ICQClient1Error(Sender: TObject; ErrorType: TErrorType;
ErrorMsg: String);
begin
ShowMessage('Ошибка: ' + ErrorMsg);
end;

7. Завершающая процедура FormClose.

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
memo1.Lines.SaveToFile('Ответы Бота.txt'); // Сохраним ответы бота в файл
end;
end.

Вот и в принципе и всё, наш простенький ICQ бот готов !

delphi icq бот Скачать исходник

P.S. Хотите вперед всех остальных посетителей сайта получать свежие Видео уроки, Аудио подкасты, статьи по Delphi.
Участвовать в конкурсах и постепенно вливаться в нашу команду ?!
Тогда прямо сейчас подписывайтесь на бесплатную мультимедийную рассылку сайта delphiexpert.ru
Нас уже больше чем 4000 человек ! Подписаться



Похожие материалы

Последние из рубрики

Димон 13 Jul 2010 в 00:00 #
Я конешно понимаю что многие в программировании новички, но тут вам показывают примеры просто...включайте свои мозги и придумайте боту более совершенный алгоритм вопросов и ответов уже сами, глупо вот так в комментах писать: "Что бы он "осмысленно" отвечал на вопросы и "понимал" что ему "говорят", а не выбрасывал первое попавшиеся слово." Человек старался и просто показал пример, а остальное додумывайте сами.
Денис 03 Jul 2010 в 00:00 #
Программа, конечно, интересная. Показывает, как подключаться к серверу ICQ и с ним работать. Только сам бот просто выдаёт рандомно одну из фраз, которую ему когда-то уже сказали. Иногда получается полная чушь. Так вот, кто нибудь знает, как написать "разумного" бота на Delphi? (то есть, написать на любом языке можно, знать бы алгоритм) Что бы он "осмысленно" отвечал на вопросы и "понимал" что ему "говорят", а не выбрасывал первое попавшиеся слово.
Женька 03 Jul 2010 в 00:00 #
денис If msg=′привет′ then ICQClient1.SendMessage(StrToInt(UIN), ′′′ХАЙ′′′); ЕСЛИ БООТУ ПРИСЫЛАЮТ ПРИВЕТ ТО ОН ОТВЕЧАЕТ хАЙ! ТАК МОЖНО!ТОЛЬКО МНОГО ОЧЕНЬ ВАРЕАНТОВ ОПИСЫВАТЬ(
Purgen 15 Jun 2010 в 00:00 #
У кого нибудь получилось сделать бота?
Андрей 02 Jun 2010 в 00:00 #
пожалста помогите! Сделал все как есть. Вирусов на компе нету. Написал сию прогу , запускаю ... и .!! "{путь к файлу...}/Project1.exe - инфицирован Trojan.DownLoader.origin"

Что делать? Создаваемый файл заражается! Другие проги, которые у меня пишутся запускаются норм. Компонент TICQClient качал с оф сайта. Помогите пожалуйста.

ОтменитьДобавить комментарий