Python IRC клиент: написать с нуля или написать плагин для существующего фреймворка? - PullRequest
4 голосов
/ 30 июня 2009

Для нашей компании я хотел бы иметь IRC-бота на основе Python, который проверяет, работают ли веб-сайты наших клиентов. Более конкретно: я хочу перечислить количество URL, которые должны посещаться каждые, скажем, 15 минут. Если это не удается, URL должен быть проверен снова через 5 минут. Если получение URL-адреса по-прежнему не приводит к получению HTTP-кода состояния 200, он должен отобразить ошибочный URL-адрес в канале, чтобы мы могли его исследовать.

Я написал плагин для Supybot некоторое время назад, который в основном выполняет некоторые из вышеперечисленных действий грубым, но эффективным способом. Если я хочу расширить функциональность текущего кода до вышеприведенных «спецификаций», мне нужно провести какой-то серьезный рефакторинг; в основном это означало бы начинать с нуля.

В связи с этим возникает вопрос: я должен написать лучший плагин для Supybot, соответствующий новым требованиям, или вообще заняться чем-то другим? Должен ли я начать с нуля (изучая больше всего, внедряя соответствующих RFC самостоятельно, тратя больше времени, чем планировалось), или есть подходящая структура, которая обрабатывает основные вещи IRC?

Ответы [ 5 ]

4 голосов
/ 30 июня 2009

Я голосую за совершенно новый плагин для Supybot. Узнать больше;)

Если вы не будете так много делать, попробуйте python irclib . Это (все еще поддерживаемая) библиотека Python для IRC.

Витая тоже может быть в порядке, но это немного, но слишком много ...

3 голосов
/ 30 июня 2009

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

2 голосов
/ 15 июля 2009

Я наконец решил создать использование Twisted для моего бота. Что касается того, почему:

  • Supybot уже имеет множество функций. И это может быть хорошо: просто создайте простой плагин, подключите его и начните использовать бот. Недостатком является то, что вам могут не понравиться некоторые функции, которые уже предусмотрены. Как пример: мне не понравился тот факт, что он ответил на все вопросы (ошибка: «foo» не является допустимой командой.). Я уверен, что это может быть где-то выключено, но такие мелочи беспокоили меня.

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

  • Если ирклиб чувствуется как слишком низкий уровень, писать бота с нуля наверняка будет. Хотя я определенно хотел чему-то научиться, я также хотел сосредоточиться на реальной функциональности бота, не слишком заботясь о «базовых» вещах (например, я не обязательно хочу писать код для идентификации бота, я хотел бы просто иметь некоторые настройки конфигурации, чтобы сохранить ник и пароль и обработать это для меня.)

В Twisted есть хороший пример лог-бота , который можно использовать в качестве отправной точки. Более того: в будущем не должно быть слишком сложно написать небольшой веб-сервер (очевидно, использующий Twisted) для отображения вывода бота.

Подсказка: кроме Twisted документации вы также можете взглянуть на выпуск October 2008 журнала Python Magazine для статьи "Twisted Logging Server" Дуга Фаррелла.

Спасибо тем, кто ответил на вопрос. Вы поставили меня на правильный путь. :)

1 голос
/ 31 мая 2014

irc3 - подключаемая клиентская библиотека irc, основанная на asyncio и venusian https://irc3.readthedocs.org/

1 голос
/ 30 июня 2009

Написание простого IRC-бота не так сложно. У меня есть шаблон, который я продолжаю использовать для своих ботов: от ботов SVN до ботов с голосующим статусом, до ботов, которые проверяют соединения с определенными IP-адресами и меняют тему канала в зависимости от результата.

Я могу поделиться источником, если хотите, хотя нет ничего лучше, чем написать свой собственный:)

...