Difference between revisions of "Neutron"

From JaWiki (Jabber/XMPP wiki)
Jump to: navigation, search
m (Официальные: рамочка)
(Официальные: опечатки)
 
(19 intermediate revisions by 8 users not shown)
Line 1: Line 1:
* Веб-сайт: http://ejabberd.jabber.ru/neutron
+
{{Bot
* Язык программирования: [[Python]]
+
|            name = Neutron <!-- название -->
* Jabber-библиотека: [[xmpppy]]
+
|            logo = <!-- логотип -->
----
+
<!--      Общая информация          -->
Хороший бот на Python, умеющий опросы, rss-фиды, и много интересных вещей. Бот очень удобен для быстрого создания других ботов с нужной функциональностью. Можно достаточно легко расширить возможности плагинами.  
+
|              url = [http://ejabberd.jabber.ru/neutron ejabberd.jabber.ru/neutron] <!-- адрес -->
 +
|        language = {{Lang|b|Python}} <!-- язык -->
 +
|          library = {{Lib|xmpppy}} <!-- jabber-библиотека -->
 +
|          license = {{GPL}} <!-- лицензия -->
 +
|        developer = [http://mikemintz.com/ Майк&nbsp;Минтц (Mike&nbsp;Mintz)] <!-- разработчик -->
 +
<!--       Характеристики  -->
 +
|            i18n = нет <!-- мультиязычность -->
 +
|            disco = нет <!-- информация в диско -->
 +
|            adhoc = нет <!-- Ad-Hoc команды -->
 +
|          plugins = да <!-- расширяется ли он плагинами -->
 +
}}
 +
'''Neutron''' - бот на [[Python]], умеющий проводить опросы, показывать [[RSS]]-фиды, а также ряд других действий. Удобен для быстрого создания других ботов с нужной функциональностью. Функциональность может быть легко расширена плагинами.  
  
 
== Разделение прав ==
 
== Разделение прав ==
В боте принят следующий метод разделения прав. Каждая команда имеет свой минимальный уровень доступа для запуска команды. Это число от 0 до 100. JID владельца получает уровень доступа 100, неизвестные JID-ы получают уровень доступа 0. Владелец может выставить любой уровень доступа для JID-а с помощью команды !set_access, он запоминтся и будет сохранятся через перезапуски.
+
В управлении ботом принят следующий метод разделения прав. Каждая команда имеет свой минимальный уровень доступа для запуска команды. Это число от 0 до 100. [[JID]] владельца получает уровень доступа 100, неизвестные JID-ы получают уровень доступа 0. Владелец может выставить любой уровень доступа для JID-а с помощью команды <tt>!set_access</tt>, он запоминается и будет сохраняться после перезапуска бота.
 
+
Минимальный уровень доступа команд меняется через редактирование кода плагинов
+
 
+
Команда !commands использует установленный уровень доступа для JID-а и не показывает команды, которые пользователь не сможет запустить.  
+
  
 +
Минимальный уровень доступа команд меняется через редактирование кода плагинов.
  
 +
Команда <tt>!commands</tt> использует установленный уровень доступа для JID-а и не показывает команды, которые пользователь не сможет запустить.
  
 
== Плагины ==
 
== Плагины ==
Распологаются в каталоге plugins. Каждый файл, это отдельный плагин. Чтобы запретить подгрузку какого-нибудь плагина, нужно изменить в нем первую строчку, она является индикатором, что его можно подгружать.  
+
Располaгаются в каталоге <tt>plugins</tt>. Каждый файл это отдельный плагин. Чтобы запретить подгрузку какого-нибудь плагина, нужно изменить в нём первую строчку, она является индикатором, что его можно подгружать.
  
 
=== Официальные ===
 
=== Официальные ===
Плагины access_plugin.py, admin.py, help_plugin.py обеспечивают минимальную функциональность (права, администрирование, справка). Без плагина presence_plugin.py не будет работать подписка. Остальные плагины можно удалять по необходимости.  
+
Плагины <tt>access_plugin.py</tt>, <tt>admin.py</tt>, <tt>help_plugin.py</tt> обеспечивают минимальную функциональность (права, администрирование, справка). Без плагина <tt>presence_plugin.py</tt> не будет работать подписка. Остальные плагины можно удалять по необходимости.
  
{| class="standard" border="1" cellspacing="0"
+
{| class="standard"
! Имя файла || Использует Интернет || Описание  
+
! Имя файла || Использует<br/>Интернет || Описание  
 
|-
 
|-
 
| access_plugin.py || нет || Системный плагин. Управляет уровнем доступа пользователей.
 
| access_plugin.py || нет || Системный плагин. Управляет уровнем доступа пользователей.
Line 29: Line 38:
 
| babel_plugin.py || да || Переводчик между языками. Использует внешние ресурсы для перевода.
 
| babel_plugin.py || да || Переводчик между языками. Использует внешние ресурсы для перевода.
 
|-
 
|-
| chat_plugin.py || нет || Простой чат с пользователем, если он обращается к боту но не передает команду. По-умолчанию выключен.
+
| chat_plugin.py || нет || Простой чат с пользователем, если он обращается к боту, но не передает команду. По умолчанию выключен.
 
|-  
 
|-  
 
| dict_plugin.py || да || Дает определение слову используя www.dict.org
 
| dict_plugin.py || да || Дает определение слову используя www.dict.org
 
|-  
 
|-  
| dns_plugin.py || да || Запрос в [[ru:DNS|DNS]]
+
| dns_plugin.py || да || Запрос в DNS
 
|-
 
|-
| domain_plugin.py || да || Запрос в базу данных [[ru:Whois|Whois]]
+
| domain_plugin.py || да || Запрос в базу данных WHOIS
 
|-
 
|-
 
| eliza_plugin.py || нет || Чат-бот Элиза  
 
| eliza_plugin.py || нет || Чат-бот Элиза  
 
|-
 
|-
 
| fact_plugin.py || нет || Расшифровка кода страны и кода химического элемента
 
| fact_plugin.py || нет || Расшифровка кода страны и кода химического элемента
 +
|-
 +
| freshmeat_plugin.py || да || Информация о программе на freshmeat.net
 +
|-
 +
| google_plugin.py  || да || Поиск слова, [[XEP]]-а и проверка орфографии через google.com
 +
|-
 +
| help_plugin.py || нет || Справка по командам
 +
|-
 +
| log_plugin.py || нет || Записывает все сообщения в лог файлы в формате HTML
 +
|-
 +
| presence_plugin.py || нет || Отвечает на запросы подписки и отправляет свои
 +
|-
 +
| python_plugin.py || нет || Выполнение Python и Shell команд
 +
|-
 +
| query_plugin.py || нет || Запросы и заполнение локальной базы определений
 +
|-
 +
| quote_plugin.py || да || Возвращает случайную цитату или фортунку
 +
|-
 +
| rss_plugin.py || да || Работа с RSS-фидами
 +
|-
 +
| sg_plugin.py || нет || Собирает статистику с Jabber-серверов по протоколу определенному в [http://www.xmpp.org/extensions/xep-0039.html XEP-0039]
 +
|-
 +
| stock_plugin.py || да || Информация об акциях с finance.yahoo.com
 +
|-
 +
| temperature_plugin.py || нет || Конвертирует температуру между шкалой Цельсия и шкалой Фаренгейта
 +
|-
 +
| time_plugin.py || нет || Возвращает текущее время на компьютере, на котором запущен бот
 +
|-
 +
| userinfo_plugin.py || нет || Возвращает [[vCard]] пользователя и ответы на различные [[iq|iq-запросы]]
 +
|-
 +
| vote_plugin.py || нет || Голосование
 +
|-
 +
| weather_plugin.py || да || Погода
 
|}
 
|}
{{todo|доописать оставшиеся плагины}}
 
  
 
== Команды ==
 
== Команды ==
Line 65: Line 105:
 
| !say <message> || 100 || admin_plugin.py.py || Послать сообщение в текущий чат/конференцию
 
| !say <message> || 100 || admin_plugin.py.py || Послать сообщение в текущий чат/конференцию
 
|-
 
|-
| !restart || 100 || admin_plugin.py.py || Перезапуск
+
| !restart || 100 || admin_plugin.py.py || Перезапуск
 
|-
 
|-
| !exit || 100 || admin_plugin.py.py || Выход
+
| !exit || 100 || admin_plugin.py.py || Выход
 
|-
 
|-
| !babel <from> <to> <phrase> || 0 || babel_plugin.py.py || Перевод используя Altavist BabelFish
+
| !babel <from> <to> <phrase> || 0 || babel_plugin.py.py || Перевод используя Altavista BabelFish
 
|-
 
|-
 
| !translate <from> <to> <phrase> || 0 || babel_plugin.py.py || Перевод используя Translate.ru
 
| !translate <from> <to> <phrase> || 0 || babel_plugin.py.py || Перевод используя Translate.ru
Line 79: Line 119:
 
| !define <word> || 0 || dict_plugin.py || Дает определение слову используя www.dict.org
 
| !define <word> || 0 || dict_plugin.py || Дает определение слову используя www.dict.org
 
|-
 
|-
| !dns <host/IP> || 0 || dns_plugin.py || Отправляет запрос на DNS сервер и возвращает результат.
+
| !dns <host/IP> || 0 || dns_plugin.py || Отправляет запрос на DNS-сервер и возвращает результат.
 
|-  
 
|-  
| !domain <domain> || 0 || domain_plugin.py || Отправляет запрос в базу данных Whois и возвращает результат.
+
| !domain <domain> || 0 || domain_plugin.py || Отправляет запрос в базу данных WHOIS и возвращает результат.
 
|-
 
|-
 
| !element <code> || 0 || fact_plugin.py || Дает расшифровку коду химического элемента
 
| !element <code> || 0 || fact_plugin.py || Дает расшифровку коду химического элемента
Line 87: Line 127:
 
| !tld <location/TLD> || 0 || fact_plugin.py ||Возвращает код страны или страну соответствующую коду
 
| !tld <location/TLD> || 0 || fact_plugin.py ||Возвращает код страны или страну соответствующую коду
 
|}
 
|}
 
+
{{todo|список сделан не до конца}}
 
== Зависимости ==
 
== Зависимости ==
* [[ru:Python]]
+
* Интерпретатор языка [[Python]]
* [[xmpppy]]
+
* Библиотека [[xmpppy]]
{{todo|доделать}}
+
  
 
== Ответвления ==
 
== Ответвления ==
 
На основе этого бота было сделано:  
 
На основе этого бота было сделано:  
 
* [[FtpSpider]] &mdash; бот, который сообщает об изменениях на FTP сервере.
 
* [[FtpSpider]] &mdash; бот, который сообщает об изменениях на FTP сервере.
 
[[Category:Bot]]
 

Latest revision as of 20:45, 20 February 2012

Neutron
Информация
Сайт: ejabberd.jabber.ru/neutron
Язык: Python
Библиотека: xmpppy
Лицензия: GPL
Разработчик: Майк Минтц (Mike Mintz)
Характеристики
Мультиязычность: нет
Расширяемость: да
Discovery: нет
Ad-hoc команды: нет

Neutron - бот на Python, умеющий проводить опросы, показывать RSS-фиды, а также ряд других действий. Удобен для быстрого создания других ботов с нужной функциональностью. Функциональность может быть легко расширена плагинами.

Разделение прав[edit]

В управлении ботом принят следующий метод разделения прав. Каждая команда имеет свой минимальный уровень доступа для запуска команды. Это число от 0 до 100. JID владельца получает уровень доступа 100, неизвестные JID-ы получают уровень доступа 0. Владелец может выставить любой уровень доступа для JID-а с помощью команды !set_access, он запоминается и будет сохраняться после перезапуска бота.

Минимальный уровень доступа команд меняется через редактирование кода плагинов.

Команда !commands использует установленный уровень доступа для JID-а и не показывает команды, которые пользователь не сможет запустить.

Плагины[edit]

Располaгаются в каталоге plugins. Каждый файл — это отдельный плагин. Чтобы запретить подгрузку какого-нибудь плагина, нужно изменить в нём первую строчку, она является индикатором, что его можно подгружать.

Официальные[edit]

Плагины access_plugin.py, admin.py, help_plugin.py обеспечивают минимальную функциональность (права, администрирование, справка). Без плагина presence_plugin.py не будет работать подписка. Остальные плагины можно удалять по необходимости.

Имя файла Использует
Интернет
Описание
access_plugin.py нет Системный плагин. Управляет уровнем доступа пользователей.
admin_plugin.py нет Функции администратора бота.
babel_plugin.py да Переводчик между языками. Использует внешние ресурсы для перевода.
chat_plugin.py нет Простой чат с пользователем, если он обращается к боту, но не передает команду. По умолчанию выключен.
dict_plugin.py да Дает определение слову используя www.dict.org
dns_plugin.py да Запрос в DNS
domain_plugin.py да Запрос в базу данных WHOIS
eliza_plugin.py нет Чат-бот Элиза
fact_plugin.py нет Расшифровка кода страны и кода химического элемента
freshmeat_plugin.py да Информация о программе на freshmeat.net
google_plugin.py да Поиск слова, XEP-а и проверка орфографии через google.com
help_plugin.py нет Справка по командам
log_plugin.py нет Записывает все сообщения в лог файлы в формате HTML
presence_plugin.py нет Отвечает на запросы подписки и отправляет свои
python_plugin.py нет Выполнение Python и Shell команд
query_plugin.py нет Запросы и заполнение локальной базы определений
quote_plugin.py да Возвращает случайную цитату или фортунку
rss_plugin.py да Работа с RSS-фидами
sg_plugin.py нет Собирает статистику с Jabber-серверов по протоколу определенному в XEP-0039
stock_plugin.py да Информация об акциях с finance.yahoo.com
temperature_plugin.py нет Конвертирует температуру между шкалой Цельсия и шкалой Фаренгейта
time_plugin.py нет Возвращает текущее время на компьютере, на котором запущен бот
userinfo_plugin.py нет Возвращает vCard пользователя и ответы на различные iq-запросы
vote_plugin.py нет Голосование
weather_plugin.py да Погода

Команды[edit]

Каждая команда зависит от своего плагина, удаление плагина соответственно удаляет команду. Чтобы удалить избранную команду, не удаляя плагин целиком, откройте файл с плагином, найдите в конце строчку, которая её регистрирует в боте и закомментируйте её или повысьте минимальный уровень доступа до 100.

Команда Уровень доступа Плагин Описание
 !login <password> 0 access_plugin.py Войти с паролем администратора (уровень доступа станет = 100)
 !logout 0 access_plugin.py Выйти (уровень доступа = 0)
 !view_access 0 access_plugin.py Посмотреть свой уровень доступа
 !set_access <jid> <level> 100 access_plugin.py Установить уровень доступа для указанного JID-а
 !join <groupchat> [nick] 100 admin_plugin.py.py Войти в конференцию
 !leave [groupchat] 100 admin_plugin.py.py Покинуть конференцию
 !msg <jid> <message> 100 admin_plugin.py.py Послать сообщение на указанный JID
 !say <message> 100 admin_plugin.py.py Послать сообщение в текущий чат/конференцию
 !restart 100 admin_plugin.py.py Перезапуск
 !exit 100 admin_plugin.py.py Выход
 !babel <from> <to> <phrase> 0 babel_plugin.py.py Перевод используя Altavista BabelFish
 !translate <from> <to> <phrase> 0 babel_plugin.py.py Перевод используя Translate.ru
 !esperanto <phrase> 0 babel_plugin.py.py Перевод фразы с эсперанто на английский используя lingvo.org
 !babelize <from> <trought> <phrase> 0 babel_plugin.py.py Перевод фразы туда обратно.
 !define <word> 0 dict_plugin.py Дает определение слову используя www.dict.org
 !dns <host/IP> 0 dns_plugin.py Отправляет запрос на DNS-сервер и возвращает результат.
 !domain <domain> 0 domain_plugin.py Отправляет запрос в базу данных WHOIS и возвращает результат.
 !element 0 fact_plugin.py Дает расшифровку коду химического элемента
 !tld <location/TLD> 0 fact_plugin.py Возвращает код страны или страну соответствующую коду
ToDo: список сделан не до конца

Зависимости[edit]

  • Интерпретатор языка Python
  • Библиотека xmpppy

Ответвления[edit]

На основе этого бота было сделано:

  • FtpSpider — бот, который сообщает об изменениях на FTP сервере.