oirc/modules/keep.py

90 lines
3.0 KiB
Python

from bot import *
import random
async def getkeep(self,c,n,m):
m = m.strip()
if len(m) < 1:
keep = random.choice([i['keep'] for i in self.keepdb.find()])
else:
try:
keep = random.choice([i['keep'] for i in self.keepdb.find(keep={'like':"%{}%".format(m)})])
except IndexError:
await self.message(c,'[\x036keep\x0f] No keeps found.')
return
await self.message(c,'[\x036keep\x0f] {}'.format(keep))
async def grabkeep(self,c,n,m):
if len(m) < 1:
m="1"
try:
back = int(m)+0
except:
m = m.strip().split(' ')
if c in self.owolog:
backlog = [i for i in self.owolog[c] if m[0] == i[0]]
if len(backlog) < 1:
await self.message(c,'[\x036keep\x0f] nothing found to keep')
return
try:
ms = backlog[0-int(m[1])]
except:
ms = backlog[-1]
m = "<{}> {}".format(ms[0],ms[1])
self.keepdb.insert(dict(channel=c,nick=n,keep=m))
await self.message(c,'[\x036keep\x0f] keep added!')
return
if c in self.owolog and len(self.owolog[c]) >= back:
ms = self.owolog[c][0-back]
m = "<{}> {}".format(ms[0],ms[1])
else:
await self.message(c,'[\x036keep\x0f] My backlog does not go back that far ;_;]')
return
self.keepdb.insert(dict(channel=c,nick=n,keep=m))
await self.message(c,'[\x036keep\x0f] keep added!')
async def addkeep(self,c,n,m):
self.keepdb.insert(dict(channel=c,nick=n,keep=m))
await self.message(c,'[\x036keep\x0f] keep added!')
async def rmkeep(self,c,n,m):
if n in self.channels[self.rmkeepchan]['modes']['o']:
co = m.strip().split(' ')
if len(co) < 2:
await self.message(c,'[\x036keep\x0f] wrong syntax')
return
crit = co.pop(0)
filt = ' '.join(co)
if crit == 'nick' or crit == 'n':
ou = self.keepdb.delete(nick=filt)
elif crit == 'quote' or crit == 'q':
ou = self.keepdb.delete(keep={'like':filt})
else:
await self.message(c,'[\x036keep\x0f] invalid criterea')
if ou:
await self.message(c, '[\x036keep\x0f] removed some keep(s)')
else:
await self.message(c, '[\x036keep\x0f] did not remove any')
else:
await self.message(c,'[\x036keep\x0f] you must have +o in #balun')
async def init(self):
self.keepdb = shared.db['keep']
shared.commands['keep'] = getkeep
#self.help['keep'] = ['keep - get keeps about keep','lets learn about keep!']
shared.commands['addkeep'] = addkeep
#self.help['addkeep'] = ['addkeep <keep> - add a new keep (more)','if you find something offensive contact lickthecheese, he can remove it and/or tell you who added it so watch out!']
shared.commands['grabkeep'] = grabkeep
#self.help['grabkeep'] = ['grabkeep [back] - grab something to keep','tooootally did not steal this from bitbot']
self.rmkeepchan = "#balun"
shared.commands['rmkeep'] = rmkeep
#self.help['rmkeep'] = ['rmkeep <criteria> <pattern> - remove some keep(s). criteria types in (more)','types of criteria: n|nick q|quote eg "rmkeep nick spammer" to get rid of all keeps created by nick spammer']