# -*- 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}" 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)) ####################################################################################### ####################################################################################### ########################################################################################### ###########################################################################################