Как разработать IRC-бот: 12 шагов (с изображениями)

Оглавление:

Как разработать IRC-бот: 12 шагов (с изображениями)
Как разработать IRC-бот: 12 шагов (с изображениями)

Видео: Как разработать IRC-бот: 12 шагов (с изображениями)

Видео: Как разработать IRC-бот: 12 шагов (с изображениями)
Видео: Курс по Outlook. Урок 1. Вход в учетную запись. Синхронизация почты 2024, Апрель
Anonim

Если вы были в Internet Relay Chat (IRC), скорее всего, в какой-то момент вы столкнулись с ботом. Боты - это независимые программы или скрипты, которые подключаются к сети так же, как и человек. Их можно запрограммировать так, чтобы они отвечали на команды пользователя или даже в чате. В этом руководстве вы можете узнать, какие у вас есть варианты создания IRC-бота, а также как создать его с нуля.

Шаги

Метод 1 из 2: оценка вариантов

Разработка IRC-бота. Шаг 1
Разработка IRC-бота. Шаг 1

Шаг 1. Рассмотрите возможность установки клиентского сценария

Иногда вы просто хотите выполнить простую задачу и не хотите, чтобы она была независимой программой. В этом случае вы можете прикрепить скрипт к IRC-клиенту. Это довольно часто случается с mIRC, который имеет надежный механизм сценариев и широкий спектр доступных сценариев. Это самый простой вариант и настоятельно рекомендуется, если у вас нет большого опыта программирования. Для остальной части этого руководства инструкции требуют некоторых знаний компьютерного программирования.

Разработка бота IRC Шаг 2
Разработка бота IRC Шаг 2

Шаг 2. Рассмотрите уже существующую базу кода для вашего бота

Существует множество программ с открытым исходным кодом и бесплатных программ, которые могут помочь вам быстро настроить собственного настроенного бота. Одним из таких примеров является Eggdrop, самый старый бот IRC, который все еще поддерживается.

Разработка бота IRC Шаг 3
Разработка бота IRC Шаг 3

Шаг 3. Подумайте о написании собственного бота

Для продвинутых пользователей IRC и разработчиков, которые уже знакомы с языком программирования, это отличный вариант. Вы можете использовать практически любой язык, который хотите, при условии, что он поддерживает сокеты, но наиболее популярными являются Python, Lua, PHP, C и Perl. Если вы ничего из этого не знаете, но знаете другой язык, это не проблема. Обычно в Интернете можно найти примеры на любом языке. В этой статье мы продемонстрируем использование PHP. Для использования PHP на вашем компьютере или сервере должен быть установлен PHP-CLI.

  • PHP можно скачать с php.net
  • Скрипты PHP можно запускать из командной строки. Для получения дополнительной информации и помощи по использованию PHP см. Эту страницу руководства по PHP.

Метод 2 из 2: разработка собственного бота

Разработка IRC-бота. Шаг 4
Разработка IRC-бота. Шаг 4

Шаг 1. Соберите детали подключения

Для успешного подключения к сети вам потребуется следующая информация.

  • Сервер: Доменное имя сервера, используемого для подключения к IRC, например

    chat.freenode.net

  • Порт: В большинстве случаев это 6667, но если вы не уверены, проверьте свой собственный IRC-клиент или веб-сайт сети.
  • Ник: Псевдоним, который должен использовать ваш бот. Имейте в виду, что использование некоторых специальных символов обычно не допускается (@ #! ~).
  • Идентификационный: Поле идентификатора появляется после псевдонима, когда кто-то выполняет WHOIS следующим образом:

    ник! идент @ имя хоста

  • GECOS: Это поле обычно содержит настоящее имя пользователя или общее описание бота, но вы можете поместить туда все, что захотите.
  • Канал: Обычно вы хотите, чтобы ваш бот присутствовал на одном или нескольких каналах. В большинстве сетей они имеют префикс "#", но это может быть что-то еще.
Разработка IRC-бота. Шаг 5
Разработка IRC-бота. Шаг 5

Шаг 2. Инициализируйте конфигурацию в вашем скрипте

Самый простой способ сделать это - присвоить нескольким переменным имена в соответствии с указанными выше именами конфигурации. Вы также можете сохранить их в конфигурационном файле и проанализировать их, но пока мы будем придерживаться самого необходимого.

Разработка IRC-бота. Шаг 6
Разработка IRC-бота. Шаг 6

Шаг 3. Подключитесь к сети

Для этого вам нужно открыть сокет для сервера на указанном порту. Вы также должны добавить в эту часть код обработки ошибок на случай, если соединение по какой-либо причине прервется. В этом случае PHP предоставляет нам несколько полезных функций для эффективной обработки ошибки.

Разработка IRC-бота. Шаг 7
Разработка IRC-бота. Шаг 7

Шаг 4. Зарегистрируйте своего бота

Это означает предоставление серверу вашего псевдонима, идентификатора и GECOS, а не регистрацию на NickServ. Для этого просто напишите на сервер команды NICK и USER, за которыми следует возврат каретки и перевод строки. Совершенно необходимо, чтобы вы делали это в точности так, как показано, потому что именно так это указано в RFC1459, спецификации протокола IRC.

Обратите внимание, что два средних параметра (в данном случае * и 8) должны быть указаны, но они игнорируются сервером. Эти два используются только между связанными серверами, а не напрямую подключенным клиентом

Разработка IRC-бота. Шаг 8
Разработка IRC-бота. Шаг 8

Шаг 5. Продолжайте извлекать данные из сокета с помощью цикла

Если бы вы не использовали цикл, ваш скрипт немедленно завершился бы, и бот был бы бесполезен. Чтобы оставаться на связи, вы должны получить данные с сервера, проверить любой ввод в потоке, который вы хотите, и ответить на него, если это так. Здесь мы собираем данные с помощью socket_read (), чтобы получить любые доступные нам данные. Если есть, мы продолжаем делать то, что в цикле. Также может быть полезно вывести необработанные данные на консоль, чтобы вы могли видеть, что происходит с точки зрения бота.

Разработка IRC-бота. Шаг 9
Разработка IRC-бота. Шаг 9

Шаг 6. Напишите обработчик пинга

Это важно. Если вы не ответите на пинги своевременно, сервер отключит вас. Давайте сначала об этом позаботимся. Пинги выглядят так при отправке с сервера:

ПИНГ: rajaniemi.freenode.net

. Серверу не нужно ставить свое имя после ":", он может предоставить все, что захочет. Вы * должны * повторить в точности то, что сказал сервер, за исключением использования PONG.

Разработка IRC-бота. Шаг 10
Разработка IRC-бота. Шаг 10

Шаг 7. Присоединяйтесь к своим каналам

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

  • Для этого мы проверим коды состояния сервера 376 или 422. 376 означает, что MOTD (сообщение дня) завершено. 422 означает, что никакого MOTD для отправки не было. Этот MOTD - это просто то, что сервер отправляет при подключении, но это хороший индикатор, когда мы можем начать присоединяться к каналам.
  • Вам нужно будет ввести команду JOIN. За этой командой может следовать один или несколько каналов, разделенных запятой.
  • Обратите внимание, что данные, которые отправляет сервер, удобно разделены пробелами. Таким образом, мы можем разделить данные и ссылаться на них, используя индекс массива.
Разработка IRC-бота. Шаг 11
Разработка IRC-бота. Шаг 11

Шаг 8. Ответьте на сообщения канала

Теперь самое интересное. Ваш бот присоединился к каналу, так что теперь вы можете использовать его для своих целей. Давайте создадим пример команды под названием @moo.

  • Обратите внимание на смещение начала сообщений (это относится как к каналам, так и к личным сообщениям). Он всегда в одном и том же месте.
  • Вы можете обрабатывать команды с пробелами, объединяя фрагментированные данные вместе ($ d). Это выходит за рамки данной статьи.
  • Если целью является канал (например, # botters-test), вы отвечаете на это. Если это личное сообщение, этот бит будет ником вашего бота! Затем вы должны ответить, используя ник отправителя, а не свой (иначе вы бы разговаривали сами с собой, а это просто глупо).
Разработка IRC-бота. Шаг 12
Разработка IRC-бота. Шаг 12

Шаг 9. Расширьте своего бота

Вы можете добавить много новых функций, используя вышеуказанную реализацию. Существует множество других команд, которые могут быть переданы в сеть IRC, например, управление операциями, удаление и блокировка, установка темы и многие другие функции.

подсказки

  • Вы можете получить результат команды «/ me», добавив к своим сообщениям следующий префикс:

    • PRIVMSG #channel: / 001ACTION текст здесь / 001.
    • 001 означает символ ASCII 1 и будет интерпретироваться как таковой в строке PHP в двойных кавычках. В качестве альтернативы вы можете использовать

      chr (1)

    • вне строки.
  • Цвета могут быть созданы в сообщении с помощью префикса «\ 003» (код ASCII 3), за которым следует номер цвета. 0 = белый, 1 = черный, 2 = синий, 3 = зеленый, 4 = красный […]. См. Страницу mIRC для получения дополнительных цветов.
  • В качестве вежливости получите согласие владельцев каналов и операторов IRC, прежде чем выводить своего бота в онлайн. Не все сети и каналы имеют доброжелательную политику по отношению к ботам, даже если они хорошо себя ведут.
  • Некоторые демоны IRC выходят за рамки спецификаций протокола и реализуют другие функции. Если вы настраиваете его для конкретной сети, вы, безусловно, можете использовать эти функции, если знаете об их протоколе. Однако, если вы хотите, чтобы ваш бот был развернут в нескольких сетях, постарайтесь придерживаться того, что указано в RFC.

Рекомендуемые: