m4pl1mp/plugins/quote_plugin.py
2022-02-02 23:04:48 -06:00

86 lines
3.8 KiB
Python

# -*- coding: utf-8 -*-
from irc3.plugins.command import command
import irc3
import random
import uuid
###########################################################################################
###########################################################################################
@irc3.plugin
class Plugin:
#######################################################################################
#######################################################################################
def __init__(self,bot):
self.bot=bot
#######################################################################################
#######################################################################################
@irc3.event(irc3.rfc.JOIN)
def quote_user_join(self, mask, channel, **kw):
"""quote a user when they join"""
quote_list=self.bot.db.getlist("quotes")
if not quote_list:
quote_list=[]
self.bot.db.setlist('quotes',[])
quote_user=[]
for i in range(len(quote_list)):
user=mask.nick.lower()
if mask.nick==self.bot.nick: user=self.bot.original_nick.lower()
if(quote_list[i]['user']==user):
quote_user.append(quote_list[i]['message'])
if quote_user:
msg=random.choice(quote_user)+' \x02\x0303▶\x0F '+user
msg=self.bot.emo(msg)
print(f'\n{msg}\n')
self.bot.privmsg(channel,msg)
#######################################################################################
#######################################################################################
@command(permission='view')
def quote(self,mask,target, args):
"""quote user message
%%quote <noise>...
"""
noise=' '.join(args['<noise>'])
user=noise.split(' ')[0]
noise=noise.split(' ')[1:]
message=' '.join(noise)
status=''
try:
quote_list=self.bot.db.getlist("quotes")
if not quote_list:
quote_list=[]
self.bot.db.setlist("quotes",quote_list)
quote_uuid=uuid.uuid4().hex
quote={"user":user.lower(),"message":message,"uuid":quote_uuid}
quote_list.append(quote)
self.bot.db.setlist("quotes",quote_list)
status=f"TCPDIRECT/QUOTED: {user} "
status+=f"\x02\x0303▶\x0F {message} "
status+=f"\x02\x0303▶\x0F {quote_uuid}"
except Exception as e:
status=f"\x02\x0304error \x02\x0303▶\x0F {e.message[0]['message']}'"
msg=self.bot.emo(status)
self.bot.privmsg(target,msg)
#######################################################################################
#######################################################################################
@command(permission='view')
def quotes(self, mask, target, args):
"""quotes user
%%quotes <nick>
"""
user=args.get("<nick>")
quote_list=self.bot.db.getlist("quotes")
if not quote_list:
quote_list=[]
self.bot.db.setlist('quotes',[])
quote_user=[]
for i in range(len(quote_list)):
if(quote_list[i]['user']==user):
quote_user.append(quote_list[i]['message'])
for i in range(len(quote_user)):
msg=user+' \x02\x0303▶\x0F '+quote_user[i]
msg=self.bot.emo(msg)
self.bot.privmsg(target,msg)
#######################################################################################
#######################################################################################
###########################################################################################
###########################################################################################