Клиент IRC Python: писать с нуля или писать плагин для существующей структуры?

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

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

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

Я проголосовал за совершенно новый плагин для Supybot. Выучить больше 😉

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

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

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

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

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

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

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

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

Совет. Помимо документации Twisted, вы также можете ознакомиться с выпуском журнала Python за октябрь 2008 года для статьи «Скрученный сервер ведения журналов » Дуга Фаррелла.

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

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

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

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