Difference between revisions of "Neutron"
(→Зависимости) |
m (bugfixes) |
||
Line 9: | Line 9: | ||
| plugins=да | | plugins=да | ||
| adhoc=нет | | adhoc=нет | ||
− | }}[[ | + | }} |
− | + | ||
+ | Хороший бот на [[Python]], умеющий проводить опросы, показывать [[RSS]]-фиды, и много других интересных вещей. Бот очень удобен для быстрого создания других ботов с нужной функциональностью. Можно легко расширить возможности плагинами. | ||
== Разделение прав == | == Разделение прав == | ||
− | В | + | В управлении ботом принят следующий метод разделения прав. Каждая команда имеет свой минимальный уровень доступа для запуска команды. Это число от 0 до 100. [[JID]] владельца получает уровень доступа 100, неизвестные JID-ы получают уровень доступа 0. Владелец может выставить любой уровень доступа для JID-а с помощью команды <tt>!set_access</tt>, он запоминтся и будет сохранятся через перезапуски. |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
+ | Минимальный уровень доступа команд меняется через редактирование кода плагинов. | ||
+ | Команда <tt>!commands</tt> использует установленный уровень доступа для JID-а и не показывает команды, которые пользователь не сможет запустить. | ||
== Плагины == | == Плагины == | ||
− | Распологаются в каталоге plugins. Каждый файл | + | Распологаются в каталоге <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" border="1" cellspacing="0" | ||
Line 40: | Line 39: | ||
| dict_plugin.py || да || Дает определение слову используя www.dict.org | | dict_plugin.py || да || Дает определение слову используя www.dict.org | ||
|- | |- | ||
− | | dns_plugin.py || да || Запрос в | + | | dns_plugin.py || да || Запрос в DNS |
|- | |- | ||
− | | domain_plugin.py || да || Запрос в базу данных | + | | domain_plugin.py || да || Запрос в базу данных WHOIS |
|- | |- | ||
| eliza_plugin.py || нет || Чат-бот Элиза | | eliza_plugin.py || нет || Чат-бот Элиза | ||
Line 50: | Line 49: | ||
| freshmeat_plugin.py || да || Информация о программе на freshmeat.net | | freshmeat_plugin.py || да || Информация о программе на freshmeat.net | ||
|- | |- | ||
− | | google_plugin.py || да || Поиск слова, JEP-а и проверка орфографии через google.com | + | | google_plugin.py || да || Поиск слова, [[Jabber Extension Protocol|JEP]]-а и проверка орфографии через google.com |
|- | |- | ||
| help_plugin.py || нет || Справка по командам | | help_plugin.py || нет || Справка по командам | ||
Line 66: | Line 65: | ||
| rss_plugin.py || да || Работа с RSS-фидами | | rss_plugin.py || да || Работа с RSS-фидами | ||
|- | |- | ||
− | | sg_plugin.py || нет || Собирает статистику с | + | | sg_plugin.py || нет || Собирает статистику с Jabber-серверов по протоколу определенному в [http://www.xmpp.org/extensions/xep-0039.html XEP-0039] |
|- | |- | ||
| stock_plugin.py || да || Информация об акциях с finance.yahoo.com | | stock_plugin.py || да || Информация об акциях с finance.yahoo.com | ||
Line 72: | Line 71: | ||
| temperature_plugin.py || нет || Конвертирует температуру между шкалой Цельсия и шкалой Фаренгейта | | temperature_plugin.py || нет || Конвертирует температуру между шкалой Цельсия и шкалой Фаренгейта | ||
|- | |- | ||
− | | time_plugin.py || нет || Возвращает текущее время на компьютере на котором запущен бот | + | | time_plugin.py || нет || Возвращает текущее время на компьютере, на котором запущен бот |
|- | |- | ||
− | | userinfo_plugin.py || нет || Возвращает | + | | userinfo_plugin.py || нет || Возвращает [[vCard]] пользователя и ответы на различные [[iq|iq-запросы]] |
|- | |- | ||
| vote_plugin.py || нет || Голосование | | vote_plugin.py || нет || Голосование | ||
Line 103: | Line 102: | ||
| !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 || Перевод используя | + | | !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 117: | Line 116: | ||
| !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 || Отправляет запрос в базу данных | + | | !domain <domain> || 0 || domain_plugin.py || Отправляет запрос в базу данных WHOIS и возвращает результат. |
|- | |- | ||
| !element <code> || 0 || fact_plugin.py || Дает расшифровку коду химического элемента | | !element <code> || 0 || fact_plugin.py || Дает расшифровку коду химического элемента | ||
Line 127: | Line 126: | ||
== Зависимости == | == Зависимости == | ||
− | * [[Python]] | + | * Интерпретатор языка [[Python]] |
− | * [[xmpppy]] | + | * Библиотека [[xmpppy]] |
== Ответвления == | == Ответвления == | ||
На основе этого бота было сделано: | На основе этого бота было сделано: | ||
* [[FtpSpider]] — бот, который сообщает об изменениях на FTP сервере. | * [[FtpSpider]] — бот, который сообщает об изменениях на FTP сервере. | ||
+ | |||
+ | |||
+ | |||
+ | [[Category:Python]] | ||
+ | [[Category:Bot]] | ||
+ | [[Category:xmpppy]] | ||
+ | [[Category:GPL]] |
Revision as of 11:24, 10 June 2007
Neutron | |
---|---|
Информация | |
Сайт: | http://ejabberd.jabber.ru/neutron |
Язык: | Python |
Библиотека: | xmpppy |
Лицензия: | GPL |
Характеристики | |
Мультиязычность: | нет |
Расширяемость: | да |
Discovery: | нет |
Ad-hoc команды: | нет |
Хороший бот на Python, умеющий проводить опросы, показывать RSS-фиды, и много других интересных вещей. Бот очень удобен для быстрого создания других ботов с нужной функциональностью. Можно легко расширить возможности плагинами.
Разделение прав
В управлении ботом принят следующий метод разделения прав. Каждая команда имеет свой минимальный уровень доступа для запуска команды. Это число от 0 до 100. JID владельца получает уровень доступа 100, неизвестные JID-ы получают уровень доступа 0. Владелец может выставить любой уровень доступа для JID-а с помощью команды !set_access, он запоминтся и будет сохранятся через перезапуски.
Минимальный уровень доступа команд меняется через редактирование кода плагинов.
Команда !commands использует установленный уровень доступа для JID-а и не показывает команды, которые пользователь не сможет запустить.
Плагины
Распологаются в каталоге plugins. Каждый файл — это отдельный плагин. Чтобы запретить подгрузку какого-нибудь плагина, нужно изменить в нём первую строчку, она является индикатором, что его можно подгружать.
Официальные
Плагины 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 | да | Поиск слова, JEP-а и проверка орфографии через 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 | да | Погода |
Команды
Каждая команда зависит от своего плагина, удаление плагина соответственно удаляет команду. Чтобы удалить избранную команду, не удаляя плагин целиком, откройте файл с плагином, найдите в конце строчку, которая её регистрирует в боте и закомментируйте её или повысьте минимальный уровень доступа до 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 | Возвращает код страны или страну соответствующую коду |
Зависимости
Ответвления
На основе этого бота было сделано:
- FtpSpider — бот, который сообщает об изменениях на FTP сервере.