Difference between revisions of "Neutron"
Line 7: | Line 7: | ||
== Разделение прав == | == Разделение прав == | ||
В боте принят следующий метод разделения прав. Каждая команда имеет свой минимальный уровень доступа для запуска команды. Это число от 0 до 100. JID владельца получает уровень доступа 100, неизвестные JID-ы получают уровень доступа 0. Владелец может выставить любой уровень доступа для JID-а с помощью команды !set_access, он запоминтся и будет сохранятся через перезапуски. | В боте принят следующий метод разделения прав. Каждая команда имеет свой минимальный уровень доступа для запуска команды. Это число от 0 до 100. JID владельца получает уровень доступа 100, неизвестные JID-ы получают уровень доступа 0. Владелец может выставить любой уровень доступа для JID-а с помощью команды !set_access, он запоминтся и будет сохранятся через перезапуски. | ||
+ | |||
+ | Минимальный уровень доступа команд меняется через редактирование кода плагинов | ||
Команда !commands использует установленный уровень доступа для JID-а и не показывает команды, которые пользователь не сможет запустить. | Команда !commands использует установленный уровень доступа для JID-а и не показывает команды, которые пользователь не сможет запустить. | ||
+ | |||
+ | |||
== Плагины == | == Плагины == | ||
+ | Распологаются в каталоге plugins. Каждый файл, это отдельный плагин. Чтобы запретить подгрузку какого-нибудь плагина, нужно изменить в нем первую строчку, она является индикатором, что его можно подгружать. | ||
=== Официальные === | === Официальные === | ||
+ | Плагины access_plugin.py, admin.py, help_plugin.py обеспечивают минимальную функциональность (права, администрирование, справка). Без плагина presence_plugin.py не будет работать подписка. Остальные плагины можно удалять по необходимости. | ||
+ | |||
{| class="standard" | {| class="standard" | ||
− | ! Имя файла || Использует | + | ! Имя файла || Использует Интернет || Описание |
|- | |- | ||
− | | access_plugin.py || нет || Системный плагин. Управляет уровнем доступа пользователей | + | | access_plugin.py || нет || Системный плагин. Управляет уровнем доступа пользователей. |
|- | |- | ||
+ | | admin_plugin.py || нет || Функции администратора бота. | ||
+ | |- | ||
+ | | babel_plugin.py || да || Переводчик между языками. Использует внешние ресурсы для перевода. | ||
+ | |- | ||
+ | | chat_plugin.py || нет || Простой чат. По-умолчанию выключен. | ||
+ | |- | ||
+ | | dict_plugin.py || да || Дает определение слову используя www.dict.org | ||
|} | |} | ||
+ | |||
== Команды == | == Команды == | ||
+ | Каждая команда зависит от своего плагина, удаление плагина соответственно удаляет команду. Чтобы удалить избранную команду, не удаляя плагин целиком, откройте файл с плагином, найдите в конце строчку, которая её регистрирует в боте и закомментируйте её или повысьте минимальный уровень доступа до 100. | ||
+ | |||
{| class="standard" | {| class="standard" | ||
! Команда || Уровень доступа || Плагин || Описание | ! Команда || Уровень доступа || Плагин || Описание | ||
Line 32: | Line 49: | ||
| !set_access <jid> <level> || 100 || access_plugin.py || Установить уровень доступа для указанного JID-а | | !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 || Перевод используя Altavist 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 | ||
|} | |} | ||
Revision as of 22:05, 24 March 2007
- Веб-сайт: http://ejabberd.jabber.ru/neutron
- Язык программирования: Python
- Jabber-библиотека: xmpppy
Хороший бот на 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 |
Команды
Каждая команда зависит от своего плагина, удаление плагина соответственно удаляет команду. Чтобы удалить избранную команду, не удаляя плагин целиком, откройте файл с плагином, найдите в конце строчку, которая её регистрирует в боте и закомментируйте её или повысьте минимальный уровень доступа до 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 | Перевод используя Altavist 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 |
Зависимости
Ответвления
На основе этого бота было сделано:
- FtpSpider — бот, который сообщает об изменениях на FTP сервере.