Здравствуйте!
Сегодня я расскажу вам как написать своего бота. Мы напишем основной класс и реализуем простейший пример с приёмом и отправкой сообщений.
В последствие, функционал бота можно будет расширить.
Итак, приступим.
Ну, для начала, на понадобятся:
Так же, в большинстве дистрибутивов Linux интерпретатор Python уже установлен, нужно только скачать библиотеку. Сделать это можно командой:
Когда все приготовления закончены, можно приступить непосредственно к кодированию.
Можно сказать, каркас бота готов. Даже если здесь что-то не понятно, ничего страшного.
Основной функционал будет представлен в другом файле. Там будут указаны основные параметры: логин, пароль, сервер и др.
Ну вот, пожалуй и всё, что я хотел сказать на сегодня. Мы создали класс, который можно использовать для создания своих ботов и сделали простейшего.
К функционалу можно добавить, например, обработку команд или пересылку логов с сервера.
Сегодня я расскажу вам как написать своего бота. Мы напишем основной класс и реализуем простейший пример с приёмом и отправкой сообщений.
В последствие, функционал бота можно будет расширить.
Итак, приступим.
Подготовка
Ну, для начала, на понадобятся:
- Python — интерпретатор можно скачать на официальном сайте
- xmpppy — библиотека для работы с протоколом Jabber, оф. сайт
Так же, в большинстве дистрибутивов Linux интерпретатор Python уже установлен, нужно только скачать библиотеку. Сделать это можно командой:
sudo apt-get install python-xmpppy
Класс jabber_bot.py
Когда все приготовления закончены, можно приступить непосредственно к кодированию.
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
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()
Заключения
Ну вот, пожалуй и всё, что я хотел сказать на сегодня. Мы создали класс, который можно использовать для создания своих ботов и сделали простейшего.
К функционалу можно добавить, например, обработку команд или пересылку логов с сервера.