Есть вопрос?
Зайди на форум

Поиск:

Denix: русификация Ubuntu и кодеки :: RSS:: Скачать книги Колисниченко в PDF

Англо-русский словарь компьютерных терминов (Д. Колисниченко)

A  B  C  D  E  F  G  H  I  K  L  M  N  O  P  Q  R  S  T  V  W  X  Y  Z 

укрпочта отслеживание посылок перевод денег график отключения света в Кировограде график отключения счета в Киеве график отключения света в Одессе (zip)

Книга Д. Колисниченко IRC, IRC-каналы, IRC-боты: как пользоваться и как сделать самому. Избранные технологии Интернета

13.2. Первый бот

Писать боты можно под Windows и под Linux. На самом деле операционная система не имеет значения. Сейчас объясню почему. Предположим, что вы пишите бот на PHP или Perl. Код бота - это обычный текстовый файл, содержащий операторы PHP или Perl. Вы можете написать бот в Windows, а затем перенести его в Linux и выполнить его там. Главное, чтобы в Linux у вас был установлен соответствующий интерпретатор - PHP или Perl. Если бы мы компилировали программу, тогда операционная система играла роль, но PHP и Perl являются интерпретаторами, то есть они не транслируют текст программы в машинный код, зависимый от операционной системы и аппаратных средств. Они просто читают код программы и выполняют указанные в нем операторы.

С Java немного другая ситуация. Апплеты Java не зависят от операционной системы - они кросплатформенны. Тут вообще не имеет значения, под какой операционной системой вы будете компилировать свой бот, а под какой - запускать. Вы можете написать код апплета в Linux, откомпилировать его в Windows, а запускать - в MacOS. Главное, чтобы на целевой платформе (в операционной системе, в который вы собираетесь запускать апплет) была установлена виртуальная машина Java. Вот так вот.

Наш первый бот мы напишем на Perl. Так уж исторически сложилось - свой первый бот я тоже написал на Perl, хотя PHP мне больше нравится.

Откройте ваш любимый текстовый редактор и внимательно введите следующий код:

#!/usr/bin/perl

use strict;

use IO::Socket;

 

# Имя сервера

my $irc_server = "localhost";

# Ник бота

my $nick = "den_bot";

# Имя пользователя бота

my $username = "den_bot";

 

# Выбираем канал

my $chan = "#NiT";

 

# Открываем сокет

my $socket = new IO::Socket::INET(PeerAddr=>$irc_server, PeerPort=>6667,

                          Proto=>'tcp') or die "Connection failure";

 

# Записываем в сокет ник (NICK) и информацию о пользователе (USER)

print $socket "NICK $nick\r\n";

print $socket "USER $username 8 * :Dens IRC Bot\r\n";

 

# читаем ответ сервера

while (my $inp = <$socket>) {

  if ($inp =~ /004/) {

    last;

  }

  elsif ($inp =~ /433/) {

    # если такое имя уже используется, выходим

    # наш бот уже запущен, смысла продолжать работу нет

    die "Nick is already in use";

    }

 }

 

 # подсоединяемся к каналу

 print $socket "JOIN $chan\r\n";

 

 

 while (my $inp = <$socket>) {

   chop $inp;

   # обрабатываем PING-PONG, иначе сервер отключит нас

   if ($inp =~ /^PING(.*)$/i) {

      print $socket "PONG $1\r\n";

     }

   else {

   # выводим информацию, полученную от сервера - как правило это сообщения

   # других пользователей

   print "$inp\n";

   # записываем информацию в канал - сообщение "Hi"

   print $socket "PRIVMSG $chan :Hi\r\n";

   }

 }

 

Примечание. Код этого бота, как и код всех последующих, абсолютно рабочий и не содержит каких-либо ошибок или опечаток. Если у вас бот не работает, то это означает что или вы допустили ошибку или у вас ошибка в конфигурации вашего локального IRC-сервера.

Рис. 13.4. Бот в работе

Рис. 13.5. Бот в XChat

Сохраните код бота в файле bot.pl. Данный бот не использует каких-либо дополнительных Perl-модулей. В этом его преимущество: он будет работать всегда, на любой системе, даже если в этой системе не установлен модуль Net::IRC, использование которого будет рассмотрено чуть позже.

Способ запуска бота зависит от вашей операционной системы. Наиболее универсальный способ в терминале (в Windows - это Командная строка) ввести команду:

perl bot.pl

В Linux можно запустить бот иначе. Для этого нужно сделать файл бота исполнимым:

chmod +x bot.pl

После этого бот можно будет запускать так:

./bot.pl

Проще? Я тоже так думаю.

Теперь разберемся, как работает наш бот. Первая строка нужна только для Linux - она задает интерпретатор, который будет выполнять код бота. Но я рекомендую вам использовать ее и в Windows - на случай переноса сценария (так называются файлы, содержащие интерпретируемый код) в Linux.

Следующие два оператора use подключают нужные нам модули. Особенно важен для нас модуль IO::Socket - благодаря ему мы можем работать с сокетами, то есть создавать сетевые соединения. Создать соединение можно с помощью метода INET объекта IO::Socket, при этом мы указываем имя IRC-сервера, порт (6667) и протокол (TCP):

my $socket = new IO::Socket::INET(PeerAddr=>$irc_server, PeerPort=>6667,

                          Proto=>'tcp') or die "Connection failure";

Переменная $socket используется как дескриптор файла - после этого с сетевым соединением можно работать как с обычным файлом. Если мы запишем в сокет информацию, то она будет передана серверу. Ответ сервера будет записан системой в этот же сокет - нам останется только прочитать ее. Работа с сокетам осуществляется так:

Если мы будем непрерывно записывать информацию в сокет, то потеряем ответ сервера, а этого бы не хотелось, поскольку его ответ может содержать информацию об ошибке. Выполнить две или более операции записи в сокет можно только, если записываемая информация не должна порождать каких-либо ответов от сервера или ответом сервера можно пренебречь. Например, в нашем сценарии мы сначала записываем команду NICK, а затем - USER. Согласно протоколу IRC, команда NICK не должна порождать ответ от сервера. Максимум, что может прийти от сервера - это PING  (см. пред. пункт), но на него отвечать необязательно, поскольку мы еще успеем ответить на все оставшиеся пинги и сервер не отключит нас.

После передачи серверу ника и информации о пользователя нам нужно прочитать ответ сервера. Если он содержит строку '433', то это означает, что ник занят. Обычный IRC-клиент должен предоставить пользователю возможность выбора другого ника. Нам же нужно завершить работу, ведь мы - бот, а если на сервере зарегистрирован пользователь с таким ником, как у нашего бота, то, скорее всего, наш бот уже запущен.

while (my $inp = <$socket>) {

  if ($inp =~ /004/) {

    last;

  }

  elsif ($inp =~ /433/) {

    # если такое имя уже используется, выходим

    # наш бот уже запущен, смысла продолжать работу нет

    die "Nick is already in use";

    }

 }

Следующее наше действие - это подключение к каналу, для чего используется команда JOIN. После этого мы в цикле читаем все, что передает нам сервер. Если "увидим" сообщение PING, мы ответим ему таким же PONG'ом, в ином случае - выведем на экран полученную информацию и запишем в сокет свою информацию - сообщение Hi. Данное сообщение будет записано в ответ на любое сообщение пользователей каналов. Конечно, глупо отвечать на каждое сообщение словом "Hi", но это же наш первый бот!

while (my $inp = <$socket>) {

   chop $inp;

   # обрабатываем PING-PONG, иначе сервер отключит нас

   if ($inp =~ /^PING(.*)$/i) {

      print $socket "PONG $1\r\n";

     }

   else {

   # выводим информацию, полученную от сервера - как правило это сообщения

   # других пользователей

   print "$inp\n";

   # записываем информацию в канал - сообщение "Hi"

   print $socket "PRIVMSG $chan :Hi\r\n";

   }

Могу вас поздравить - вы только что написали свой первый бот. Для завершения его работы нажмите Ctrl + C.

На главную

Мне нравится!

Сегодня: 19/01

Поздравлять сегодня некого

Последние посты форума

Интересная картинка

Samsung Galaxy J2 Prime (SM-G532F)

дааа

Обучение PHP-программированию

Новый дизайн сайта

Возвращение на динамическую страницу сайта

С Новым Годом!

Бесплатный хостинг, SSL сертификат, не ограниченно

капец погода в ноябре у нас

Посоветуйте хостинг

флэшмобы

вот люди где живут... экстрим

авто-дилеры

Программы для Linux

книга Командная строка Linux и автоматизация рутинных задач

Совет:

Книги Д. Колисниченко:

Linux

99 советов по Linux99 советов по Linux
Даны ответы на актуальные вопросы по использованию операционной системы Linux на домашнем или офисном компьютере. В данный момент книга устарела. Думаю, в скором времени реанимирую                                                                                                                         

Самоучитель Linux изд. 1-2 (БХВ)Самоучитель Linux изд. 1-2 (БХВ)
Самоучитель ориентирован на домашнего и офисного непрофессионального пользователя и поможет ему самостоятельно настроить и оптимизировать операционную систему Linux. В книге есть ответы практически на все вопросы, возникающие при ежедневной работе в                                                   

Серверное применение LinuxСерверное применение Linux
Для администраторов Linux описана настройка различных типов серверов: Web, FTP, DNS, DHCP, почтового сервера, сервера баз данных. Подробно рас-смотрена установка и тонкая настройка операционной системы. Описана настройка связки Apache + MySQL + PHP.                                                    

PHP

PHP 5/6 и MySQL 6. Разработка Web-приложений. 2-е издPHP 5/6 и MySQL 6. Разработка Web-приложений. 2-е изд
На практических примерах описана разработка Web-приложений на языке PHP версий 5 и 6. Большая часть кода примеров совместима с обеими версиями PHP, но особое внимание уделено новым функциям PHP 6. Даны начала программирования на PHP: установка и наст                                                   

PHP и MySQL. Разработка Web-приложений. 4-е издPHP и MySQL. Разработка Web-приложений. 4-е изд
Даны начала программирования на PHP: установка и настройка Apache, PHP, MySQL и кроссплатформенной сборки XAMPP, выбор редактора PHP-кода, синтаксис языка и самые полезные функции PHP 5.4. Рассмотрено создание собственного движка сайта и ряда дополни                                                   

PHP и MySQL. Разработка веб-приложений. 5-е изд.PHP и MySQL. Разработка веб-приложений. 5-е изд.
Даны начала программирования на PHP: установка и настройка Apache, PHP и MySQL, а также кроссплатформенной сборки XAMPP, выбор редактора PHP-кода, синтаксис языка и самые полезные функции PHP. Рассмотрено создание собственного движка сайта и ряда доп                                                   

Интернет/CMS

Joomla 1.5.15/1.6.0. Руководство пользователяJoomla 1.5.15/1.6.0. Руководство пользователя
Эта книга — простое и эффективное учебное пособие по освоению и использованию системы управления контентом веб-сайта Joomla 1.5.15/1.6. Отличное руководство для начинающих                                                                                                                                  

Drupal 7. Руководство пользователяDrupal 7. Руководство пользователя
Эта книга — простое и эффективное учебное пособие по освоению и использованию системы управления контентом веб-сайта Drupal версии 7.0                                                                                                                                                                       

Интернет: от Интернет: от "чайника" к пользователю (+Видеокурс на CD)
Книга предназначена для начинающего домашнего пользователя, поможет ему самостоятельно освоить основы Интернета и начать уверенную работу.                                                                                                                                                                   

Компьютер/Windows

Работа на ноутбуке с Windows 7Работа на ноутбуке с Windows 7
Эта книга поможет читателю правильно выбрать ноутбук (или нетбук) и подскажет, как его следует использовать, чтобы добиться максимальной надежности и эффективности работы. В ней описывается новая версия операционной системы от Microsoft - Windows 7.                                                    

Нетбук для экономныхНетбук для экономных
Книга предназначена в первую очередь для экономных пользователей. Упор делается на выбор недорогого нетбука и бесплатных программ.                                                                                                                                                                           

Microsoft Windows 8 для пользователейMicrosoft Windows 8 для пользователей
Описаны нововведения Windows 8, особое внимание уделено использованию системы на планшете. Рассмотрена установка системы как на физический компьютер (стационарный, ноутбук, нетбук, планшет)                                                                                                                

Сети

Сделай сам компьютерную сеть. Монтаж, настройка, обслуживание. Изд. 2.Сделай сам компьютерную сеть. Монтаж, настройка, обслуживание. Изд. 2.
Книга о настройке сети в Windows (98,NT,XP) и Linux. Является превосходным практическим руководством по созданию и обслуживанию компьютерных сетей.                                                                                                                                                          

Самоучитель системного администратора. 4-е изд.Самоучитель системного администратора. 4-е изд.
Изложены основные задачи системного администрирования, описаны базовые протоколы, даны рекомендации по выбору оборудования и проведению ежедневных рутинных операций. Подробно раскрыты технологии, используемые при построении информационных систем, опи                                                   

Беспроводная сеть дома и в офисеБеспроводная сеть дома и в офисе
Книга поможет начинающему администратору домашней или офисной сети в кратчайшие сроки развернуть, настроить или модернизировать беспроводную сеть. Отличный выбор для построения сети SOHO                                                                                                                   

Безопасность

Анонимность и безопасность в Интернете. От Анонимность и безопасность в Интернете. От "чайника" к пользователю
Простым и понятным языком рассказано, как скрыть свое местонахождение и IP-адрес, используя анонимные сети Tor и I2P, посетить заблокированные администратором сайты, защитить личную переписку от посторонних глаз                                                                                          

Rootkits под Windows. Теория и практика программирования “шапок-невидимок“, позволяющих скрывать от системы данные, процессы, сетевые соединения.Rootkits под Windows. Теория и практика программирования “шапок-невидимок“, позволяющих скрывать от системы данные, процессы, сетевые соединения.
-                                                                                                                                                                                                                                                                                                            

Автомобили

Новичок за рулем 2. Выбор автомобиля, дальняя поездка...Новичок за рулем 2. Выбор автомобиля, дальняя поездка...
Книга вторая. Желательно прочтение первой книги. Рекомендуется всем начинающим (и не только) водителям/ . Текст этой книги бесплатно доступен в моем блоге http://dkws.net                                                                                                                                   

Перед покупкой авто. Все, что необходимо знать покупателюПеред покупкой авто. Все, что необходимо знать покупателю
Книга отвечает на все вопросы, которые нужно прояснить для себя перед...                                                                                                                                                                                                                                     

Новичок за рулем. Советы психолога, юриста, инструктора.Новичок за рулем. Советы психолога, юриста, инструктора.
Книга первая. Рекомендуется всем начинающим водителям. Текст этой книги бесплатно доступен в моем блоге http://dkws.net                                                                                                                                                                                      

Переводные книги

Переводные книгиПереводные книги
Данные книги были переведены мною на русский язык (с английского и чешского). Надеюсь качество перевода вам понравится!                                                                                                                                                                                      

Android

Безопасный Android: защищаем свои деньги и данные от кражиБезопасный Android: защищаем свои деньги и данные от кражи
Рассмотрены различные способы обеспечения безопасности Android-устройств: шифрование персональной информации, хранящейся на устройстве, шифрование передаваемых данных, VPN-соединения, анонимизация трафика                                                                                             

Планшет и смартфон на базе Android для ваших родителейПланшет и смартфон на базе Android для ваших родителей
Книга рассчитана на людей среднего и старшего возраста. Она поможет освоить современный «карманный компьютер» на базе Android, в котором все новое и "не так, как в Windows". Доступным языком описывается, как включить и выключить смартфон и т.д.                                                         

Планшет и смартфон на базе Android для ваших родителей, 2-е изд.Планшет и смартфон на базе Android для ваших родителей, 2-е изд.
Книга знакомит читателя с мобильными устройствами на базе Android. Она написана простым и понятным языком для людей среднего и старшего возраста                                                                                                                                                             

Статьи

Rambler's Top100