oirc/modules/keep.py

97 lines
3.4 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].users
and "o" in self.channels[self.rmkeepchan].users[n].modes
):
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, f"[\x036keep\x0f] you must have +o in {self.rmkeepchan}")
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']