Skip to content

Commit 03056e1

Browse files
committed
Keep working
1 parent b51207c commit 03056e1

File tree

3 files changed

+31
-15
lines changed

3 files changed

+31
-15
lines changed

telegram/ext/basepersistence.py

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -18,35 +18,36 @@
1818
# along with this program. If not, see [http://www.gnu.org/licenses/].
1919
"""This module contains the BasePersistence class."""
2020

21+
2122
class BasePersistence(object):
2223
def __init__(self, store_job_queue=False, store_user_data=False, store_chat_data=False):
2324
self.store_job_queue = store_job_queue
2425
self.store_user_data = store_user_data
2526
self.store_chat_data = store_chat_data
2627

2728
def get_job_queue(self):
28-
raise NotImplemented
29+
raise NotImplementedError
2930

3031
def get_user_data(self):
31-
raise NotImplemented
32+
raise NotImplementedError
3233

3334
def get_chat_data(self):
34-
raise NotImplemented
35+
raise NotImplementedError
3536

3637
def get_conversations(self):
37-
raise NotImplemented
38+
raise NotImplementedError
3839

39-
def change_conversation(self):
40-
raise NotImplemented
40+
def update_conversation(self, conversations):
41+
raise NotImplementedError
4142

4243
def update_job_queue(self):
43-
raise NotImplemented
44+
raise NotImplementedError
4445

45-
def set_user_data(self):
46-
raise NotImplemented
46+
def update_user_data(self, user_data):
47+
raise NotImplementedError
4748

48-
def set_chat_data(self):
49-
raise NotImplemented
49+
def update_chat_data(self, chat_data):
50+
raise NotImplementedError
5051

5152
def flush(self):
52-
raise NotImplemented
53+
raise NotImplementedError

telegram/ext/conversationhandler.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,9 @@ def __init__(self,
142142
if persistent and not self.name:
143143
raise ValueError("Conversations can't be persistent when handler is unnamed.")
144144
self.persistent = persistent
145+
self.persistence = None
146+
""":obj:`telegram.ext.BasePersistance`: The persistence used to store conversations.
147+
Set by dispatcher"""
145148

146149
self.conversations = dict()
147150
self.current_conversation = None
@@ -315,3 +318,6 @@ def update_state(self, new_state, key):
315318

316319
elif new_state is not None:
317320
self.conversations[key] = new_state
321+
322+
if self.persistent:
323+
self.persistence.update_conversation(self.conversations)

telegram/ext/dispatcher.py

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@
3535
from telegram.utils.promise import Promise
3636
from telegram.ext import BasePersistence
3737

38-
3938
logging.getLogger(__name__).addHandler(logging.NullHandler())
4039
DEFAULT_GROUP = 0
4140

@@ -50,6 +49,7 @@ def run_async(func):
5049
Note: Use this decorator to run handlers asynchronously.
5150
5251
"""
52+
5353
@wraps(func)
5454
def async_func(*args, **kwargs):
5555
return Dispatcher.get_instance().run_async(func, *args, **kwargs)
@@ -90,7 +90,8 @@ class Dispatcher(object):
9090
__singleton = None
9191
logger = logging.getLogger(__name__)
9292

93-
def __init__(self, bot, update_queue, workers=4, exception_event=None, job_queue=None, persistence=None):
93+
def __init__(self, bot, update_queue, workers=4, exception_event=None, job_queue=None,
94+
persistence=None):
9495
self.bot = bot
9596
self.update_queue = update_queue
9697
self.workers = workers
@@ -298,6 +299,11 @@ def process_update(self, update):
298299
try:
299300
for handler in (x for x in self.handlers[group] if x.check_update(update)):
300301
handler.handle_update(update, self)
302+
if self.persistence:
303+
if self.persistence.store_chat_data:
304+
self.persistence.update_chat_data(self.chat_data)
305+
if self.persistence.store_user_data:
306+
self.persistence.update_user_data(self.user_data)
301307
break
302308

303309
# Stop processing with any other handler.
@@ -354,8 +360,11 @@ def add_handler(self, handler, group=DEFAULT_GROUP):
354360
raise TypeError('group is not int')
355361
if isinstance(handler, ConversationHandler) and handler.persistent:
356362
if not self.persistence:
357-
raise ValueError("Conversationhandler {} can not be persistent if logger has no persistence", handler.name)
363+
raise ValueError(
364+
"Conversationhandler {} can not be persistent if logger has no persistence",
365+
handler.name)
358366
handler.conversations = self.persistence.get_conversations(handler.name)
367+
handler.persistence = self.persistence
359368

360369
if group not in self.handlers:
361370
self.handlers[group] = list()

0 commit comments

Comments
 (0)