Пишем своего Jabber-бота на Python

30 марта 2011 г.

Сегодня я расскажу вам как написать своего бота. Мы напишем основной класс и реализуем простейший пример с приёмом и отправкой сообщений. В последствие, функционал бота можно будет расширить.

Итак, приступим.

Подготовка

Ну, для начала, на понадобятся:

Так же, в большинстве дистрибутивов Linux интерпретатор Python уже установлен, нужно только скачать библиотеку. Сделать это можно командой:

1
sudo apt-get install python-xmpppy

Класс jabber_bot.py

Когда все приготовления закончены, можно приступить непосредственно к кодированию.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import sys, xmpp
 
class JabberBot: #создаём класс нашего бота
 def __init__(self, jid, password):
 jid = xmpp.JID(jid)
 self.user, self.server, self.password = jid.getNode(), jid.getDomain(), password
 self.connect()
 self.auth()
  
 def connect(self): #функция подключения к серверу
 self.conn = xmpp.Client(self.server, debug = [])
 conn_result = self.conn.connect()
 if not conn_result:
 print "Can't connect to server!\n"
 sys.exit(1)
  
 def auth(self): #аутентификация
 auth_result = self.conn.auth(self.user, self.password)
 if not auth_result:
 print "Can't to authorize!\n"
 sys.exit(1)
  
 def register_handler(self, name, handler): #привязка функций к событиям
 self.conn.RegisterHandler(name, handler)
  
 def step_on(self):
 try:
 self.conn.Process(1)
 except KeyboardInterrupt: return 0
 return 1
  
 def start(self):
 self.conn.sendInitPresence()
 print "Bot started!"
 while self.step_on(): pass

Можно сказать, каркас бота готов. Даже если здесь что-то не понятно, ничего страшного.
Основной функционал будет представлен в другом файле. Там будут указаны основные параметры: логин, пароль, сервер и др.

Основной файл bot.py
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
mport xmpp
from jabber_bot import JabberBot
 
config = { #имя пользователя и пароль для подключения
 'jid': 'username@jabber.org',
 'pass': 'password'
}
 
def message_handler(conn, mess): #вызывается при входящем сообщении,
 text = mess.getBody() #получаем текст сообщения, отправителя
 user = mess.getFrom() #и шлём обратно
 reply = text
 conn.send(xmpp.Message(mess.getFrom(), reply))
 
bot = JabberBot(config['jid'], config['pass'])
bot.register_handler('message', message_handler)
bot.start()
Заключения

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

Теги: рубрика Linux, Программирование
  • Похожие статьи
  • Предыдущие из рубрики