Skip to content

Commit b47ecbe

Browse files
committed
Merge pull request #135 from edwardslabs/tell_cache
Add tell_cache to check against
2 parents 65f5f37 + b1cd9aa commit b47ecbe

1 file changed

Lines changed: 27 additions & 2 deletions

File tree

plugins/tell.py

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,19 @@
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+
2437
def 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

5265
def 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

6276
def 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

Comments
 (0)