2020-11-23 21:39:51 +00:00
from bot import *
2020-07-02 14:53:56 +00:00
import random
2022-01-27 02:22:42 +00:00
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 :
2022-04-23 16:41:03 +00:00
await self . message ( c , " No keeps found. " )
2022-01-27 02:22:42 +00:00
return
2022-04-23 16:41:03 +00:00
await self . message ( c , keep )
2020-07-02 14:53:56 +00:00
2022-01-27 02:22:42 +00:00
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 :
2022-04-23 16:41:03 +00:00
await self . message ( c , " nothing found to keep " )
2022-01-27 02:22:42 +00:00
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 ) )
2022-04-23 16:41:03 +00:00
await self . message ( c , " keep added! " )
2022-01-27 02:22:42 +00:00
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 (
2022-04-23 16:41:03 +00:00
c , " My backlog does not go back that far ;_;] "
2022-01-27 02:22:42 +00:00
)
return
self . keepdb . insert ( dict ( channel = c , nick = n , keep = m ) )
2022-04-23 16:41:03 +00:00
await self . message ( c , " keep added! " )
2020-07-02 14:53:56 +00:00
2022-01-27 02:22:42 +00:00
async def addkeep ( self , c , n , m ) :
self . keepdb . insert ( dict ( channel = c , nick = n , keep = m ) )
2022-04-23 16:41:03 +00:00
await self . message ( c , " keep added! " )
2020-07-02 14:53:56 +00:00
2022-01-27 02:22:42 +00:00
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 :
2022-04-23 16:41:03 +00:00
await self . message ( c , " wrong syntax " )
2022-01-27 02:22:42 +00:00
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 :
2022-04-23 16:41:03 +00:00
await self . message ( c , " invalid criterea " )
2022-01-27 02:22:42 +00:00
if ou :
2022-04-23 16:41:03 +00:00
await self . message ( c , " removed some keep(s) " )
2022-01-27 02:22:42 +00:00
else :
2022-04-23 16:41:03 +00:00
await self . message ( c , " did not find any to remove " )
2020-07-02 14:53:56 +00:00
else :
2022-04-23 16:41:03 +00:00
await self . message ( c , f " you must have +o in { self . rmkeepchan } " )
2022-01-27 02:22:42 +00:00
2020-07-02 14:53:56 +00:00
async def init ( self ) :
2022-01-27 02:22:42 +00:00
self . keepdb = shared . db [ " keep " ]
2020-07-02 14:53:56 +00:00
2022-01-27 02:22:42 +00:00
shared . commands [ " keep " ] = getkeep
# self.help['keep'] = ['keep - get keeps about keep','lets learn about keep!']
2020-07-02 14:53:56 +00:00
2022-01-27 02:22:42 +00:00
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!']
2020-07-02 14:53:56 +00:00
2022-01-27 02:22:42 +00:00
shared . commands [ " grabkeep " ] = grabkeep
# self.help['grabkeep'] = ['grabkeep [back] - grab something to keep','tooootally did not steal this from bitbot']
2020-07-02 14:53:56 +00:00
2022-01-27 02:22:42 +00:00
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']