add: initial AI support
This commit is contained in:
86
plugins/psto.py
Normal file
86
plugins/psto.py
Normal file
@@ -0,0 +1,86 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# --------------------------------------------------------------------------- #
|
||||
# #
|
||||
# Plugin for iSida Jabber Bot #
|
||||
# Copyright (C) diSabler <dsy@dsy.name> #
|
||||
# #
|
||||
# This program is free software: you can redistribute it and/or modify #
|
||||
# it under the terms of the GNU General Public License as published by #
|
||||
# the Free Software Foundation, either version 3 of the License, or #
|
||||
# (at your option) any later version. #
|
||||
# #
|
||||
# This program is distributed in the hope that it will be useful, #
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
|
||||
# GNU General Public License for more details. #
|
||||
# #
|
||||
# You should have received a copy of the GNU General Public License #
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
|
||||
# #
|
||||
# --------------------------------------------------------------------------- #
|
||||
|
||||
PSTO_JID = 'psto@psto.net/Psto'
|
||||
PSTO_ERROR = '\nYou cannot read this psto.'
|
||||
psto_msg_trunc = 64
|
||||
psto_id = {}
|
||||
|
||||
def psto(type, jid, nick, text):
|
||||
global psto_id
|
||||
if not len(text) or len(text) == text.count(' '):
|
||||
send_msg(type, jid, nick, L('What message do you want to find?','%s/%s'%(jid,nick)))
|
||||
return
|
||||
try:
|
||||
psto_idn,psto_comm = re.findall('#?([a-z]{5,})\/?([0-9]*\-*[0-9]*)?',text)[0]
|
||||
if psto_idn:
|
||||
psto_id[psto_idn] = '%s\n%s\n%s\n%s' % (type,jid,nick,psto_comm)
|
||||
send_msg('chat', PSTO_JID, '', '#%s+' % psto_idn)
|
||||
else: send_msg(type, jid, nick, L('Smoke help about command!','%s/%s'%(jid,nick)))
|
||||
except: send_msg(type, jid, nick, L('Smoke help about command!','%s/%s'%(jid,nick)))
|
||||
|
||||
def psto_catch(room,jid,nick,type,text):
|
||||
global psto_id
|
||||
if '%s/%s' % (room,nick) != PSTO_JID: return
|
||||
if text == PSTO_ERROR:
|
||||
(type,jid,nick,psto_comm) = psto_id.popitem()[1].split('\n')
|
||||
send_msg(type, jid, nick, text[1:])
|
||||
else:
|
||||
try:
|
||||
psto_idn, text = text.split(' ',1)[0][2:],text[1:]
|
||||
(type,jid,nick,psto_comm) = psto_id.pop(psto_idn).split('\n')
|
||||
splitter = re.findall('http\:\/\/[-a-z0-9]+?\.psto\.net\/%s' % psto_idn, text, re.S|re.I|re.U)[0]
|
||||
while '\n\n' in text: text = text.replace('\n\n','\n')
|
||||
while '\n ' in text: text = text.replace('\n ','\n')
|
||||
if psto_comm:
|
||||
new_text = text.split(splitter)[0][:-1]
|
||||
comment = new_text.split('\n')[-1]
|
||||
new_text = '\n'.join(new_text.split('\n')[:-1])
|
||||
if len(new_text) > psto_msg_trunc: new_text = new_text[:psto_msg_trunc] + u'…'
|
||||
new_text += '\n%s | %s' % (comment,splitter)
|
||||
if '-' in psto_comm: psto_comm = psto_comm.split('-',1)
|
||||
else: psto_comm = [psto_comm,psto_comm]
|
||||
if not psto_comm[0]: psto_comm[0] = '1'
|
||||
if not psto_comm[1]: psto_comm[1] = str(len(text.split(psto_idn)))
|
||||
if len(psto_comm[0]) > 3: psto_comm[0] = psto_comm[0][:3]
|
||||
if len(psto_comm[1]) > 3: psto_comm[1] = psto_comm[1][:3]
|
||||
msg = ''
|
||||
for tmp in range(int(psto_comm[0]),int(psto_comm[1])+1):
|
||||
try: msg += u'• #%s/%s %s' % (psto_idn,tmp,text.split(splitter)[1].split('#%s/%s' % (psto_idn,tmp))[1].split('#%s/%s' % (psto_idn,tmp+1))[0].replace('\n',' ',1))
|
||||
except: pass
|
||||
new_text += '\n' + msg
|
||||
else: new_text = text.split(splitter)[0][:-1] + ' ' + splitter
|
||||
send_msg(type, jid, nick, new_text)
|
||||
except: pass
|
||||
|
||||
def psto_post(type, jid, nick, text):
|
||||
send_msg('chat', PSTO_JID, '', text)
|
||||
time.sleep(1.2)
|
||||
send_msg(type, jid, nick, L('Message posted to Psto.','%s/%s'%(jid,nick)))
|
||||
|
||||
global execute,message_control
|
||||
|
||||
message_control = [psto_catch]
|
||||
|
||||
execute = [(3, 'psto', psto, 2, 'Miniblogs http://psto.net\npsto [#]post[/[from_comment][-][to_comment]] - show post'),
|
||||
(9, 'psto_post', psto_post, 2, 'Send message to blog at psto.net')]
|
||||
Reference in New Issue
Block a user