99 lines
4.2 KiB
Python
99 lines
4.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
import irc3
|
|
import os
|
|
import random
|
|
from string import ascii_lowercase as alpha
|
|
import ipdb
|
|
SED1_RE = "s/"
|
|
SED2_RE = "j/"
|
|
###########################################################################################
|
|
###########################################################################################
|
|
class TCPSED():
|
|
buffer_text=[]
|
|
buffer_nick=[]
|
|
#######################################################################################
|
|
#######################################################################################
|
|
def __init__(self):
|
|
return
|
|
#######################################################################################
|
|
#######################################################################################
|
|
def push(self,data,nick):
|
|
self.buffer_text=self.buffer_text[-1:]+self.buffer_text[:-1]
|
|
self.buffer_text[0]=data
|
|
self.buffer_nick=self.buffer_nick[-1:]+self.buffer_nick[:-1]
|
|
self.buffer_nick[0]=nick
|
|
#######################################################################################
|
|
#######################################################################################
|
|
###########################################################################################
|
|
###########################################################################################
|
|
@irc3.plugin
|
|
class Plugin:
|
|
#######################################################################################
|
|
#######################################################################################
|
|
def __init__(self, bot):
|
|
self.d=TCPSED()
|
|
for _ in range(2000):
|
|
self.d.buffer_text.append('')
|
|
self.d.buffer_nick.append('')
|
|
self.bot = bot
|
|
#######################################################################################
|
|
#######################################################################################
|
|
@irc3.event(irc3.rfc.PRIVMSG)
|
|
def on_privmsg_search_for_sed(self, mask=None, target=None, data=None, **kw):
|
|
if self.bot.config.nick == mask.nick:
|
|
return
|
|
if mask.nick.lower() == 'nickserv':
|
|
return
|
|
flag=0
|
|
offset = -1
|
|
offset = data.find(SED1_RE)
|
|
if not offset == 0:
|
|
offset = data.find(SED2_RE)
|
|
if offset == 0:
|
|
flag=1
|
|
else:
|
|
flag=1
|
|
if flag==0:
|
|
self.d.push(data,mask.nick)
|
|
return
|
|
_data=data.split('/')
|
|
_from=''
|
|
_to=''
|
|
_mode=''
|
|
try:
|
|
_from=_data[1]
|
|
_to=_data[2]
|
|
except Exception as e:
|
|
irc_message = f'TCPDIRECT/SED - Error: {e}'
|
|
self.bot.privmsg(target, self.bot.emo(irc_message))
|
|
return
|
|
itwist=-1
|
|
count=0
|
|
for i,_ in enumerate(self.d.buffer_text):
|
|
if not _ == '':
|
|
itwist=i
|
|
count = len([_i for _i in range(len(_)) if _.startswith(_from, _i)])
|
|
if count == 1:
|
|
self.d.buffer_text[i] = self.d.buffer_text[i].replace(_from,_to)
|
|
break
|
|
elif count > 1:
|
|
self.d.buffer_text[i] = self.d.buffer_text[i].replace(_from,_to,1)
|
|
break
|
|
if count != 0:
|
|
irc_message = "{}: {}".format(self.d.buffer_nick[itwist],self.d.buffer_text[itwist])
|
|
else:
|
|
irc_message = f"TCPDIRECT/SED - Error: no result for: {data}"
|
|
try:
|
|
if irc_message.find('\x01ACTION'):
|
|
nick,msg=irc_message.split(': ')
|
|
msg="\x01ACTION "+nick+": "+msg.split('\x01ACTION ')[1]
|
|
self.bot.privmsg(target,msg)
|
|
else:
|
|
self.bot.privmsg(target,self.bot.emo(irc_message))
|
|
except:
|
|
self.bot.privmsg(target,self.bot.emo(irc_message))
|
|
#######################################################################################
|
|
#######################################################################################
|
|
###########################################################################################
|
|
###########################################################################################
|