2121)
2222
2323
24+ @hook .on_start
25+ def load_cache (db ):
26+ """
27+ :type db: sqlalchemy.orm.Session
28+ """
29+ global tell_cache
30+ tell_cache = []
31+ for row in db .execute (table .select ().where (table .c .is_read == 0 )):
32+ conn = row ["connection" ]
33+ target = row ["target" ]
34+ tell_cache .append ((conn , target ))
35+
36+
2437def get_unread (db , server , target ):
2538 query = select ([table .c .sender , table .c .message , table .c .time_sent ]) \
2639 .where (table .c .connection == server .lower ()) \
@@ -47,7 +60,7 @@ def read_all_tells(db, server, target):
4760 .values (is_read = 1 )
4861 db .execute (query )
4962 db .commit ()
50-
63+ load_cache ( db )
5164
5265def read_tell (db , server , target , message ):
5366 query = table .update () \
@@ -57,6 +70,7 @@ def read_tell(db, server, target, message):
5770 .values (is_read = 1 )
5871 db .execute (query )
5972 db .commit ()
73+ load_cache (db )
6074
6175
6276def add_tell (db , server , sender , target , message ):
@@ -70,6 +84,14 @@ def add_tell(db, server, sender, target, message):
7084 )
7185 db .execute (query )
7286 db .commit ()
87+ load_cache (db )
88+
89+ def tell_check (conn , nick ):
90+ for _conn , _target in tell_cache :
91+ if (conn , nick ) == (_conn , _target ):
92+ return True
93+ else :
94+ continue
7395
7496
7597@hook .event (EventType .message , singlethread = True )
@@ -82,7 +104,10 @@ def tellinput(event, conn, db, nick, notice):
82104 if 'showtells' in event .content .lower ():
83105 return
84106
85- tells = get_unread (db , conn .name , nick )
107+ if tell_check (conn .name , nick ):
108+ tells = get_unread (db , conn .name , nick )
109+ else :
110+ return
86111
87112 if tells :
88113 user_from , message , time_sent = tells [0 ]
0 commit comments