С наступлением лета пришла пора выездов на природу, дачу, отдых и т.д.
Встала проблемам как же управлять сервером или другим удаленным компьютером находясь в отрыве от цивилизации ;)
Для решения этой проблемы я решил создать Jabber-бота на прекрасном языке Python. Для упрощения написания использую библиотеку XMPPPY В процессе понял, что хочется добавить еще некоторый функционал, в следствии чего реализовал систему плагинов для легкой расширяемости ;)
Самая интересная часть - реализация поддержки плагинов
Для примера приведу реализацию плагина-переводчика.
Остальные плагины не столь интересны. Реализация бота довольно стандартна, так что примеры без труда можно найти с помощью Великого и Ужасного.
Встала проблемам как же управлять сервером или другим удаленным компьютером находясь в отрыве от цивилизации ;)
Для решения этой проблемы я решил создать Jabber-бота на прекрасном языке Python. Для упрощения написания использую библиотеку XMPPPY В процессе понял, что хочется добавить еще некоторый функционал, в следствии чего реализовал систему плагинов для легкой расширяемости ;)
Самая интересная часть - реализация поддержки плагинов
- def loadPlugins():
- import os
- commands = []
- public_commands = []
- for fname in os.listdir('plugins/'):
- if fname.endswith('.py'):
- plugin_name = fname[:-3]
- if plugin_name != '__init__':
- plugins = __import__('plugins.'+plugin_name)
- plugin = getattr(plugins,plugin_name)
- if plugin.init():
- commands.append(plugin_name)
- else:
- public_commands.append(plugin_name)
- return 'plugins':plugins,'commands':commands,'public_commands':public_commands}
Для примера приведу реализацию плагина-переводчика.
- import urllib
- import json
- import string, re
- import xmpp
- def init():
- return 0
- def run(bot,mess):
- text = mess.getBody()
- user = mess.getFrom()
- langpair = 'en|ru' #PEREDELAT
- if text:
- lines = text.splitlines()
- regexp = re.compile('^\w{2}\|\w{2}$', re.IGNORECASE)
- if regexp.match(lines[0]):
- langpair = lines[0]
- del lines[0]
- return
- reply = translate(text, langpair)
- bot.send(xmpp.Message(mess.getFrom(),reply))
- def translate(text, langpair):
- url = u'http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&%s'.encode("utf-8") % (query)
- result = urllib.urlopen(url)
- response = json.loads(result.read())
- if response['responseStatus'] != 200:
- mess = response['responseDetails']
- else:
- mess = response['responseData']['translatedText']
- return mess
Остальные плагины не столь интересны. Реализация бота довольно стандартна, так что примеры без труда можно найти с помощью Великого и Ужасного.
Комментариев нет:
Отправить комментарий