mirror of
https://github.com/eternnoir/pyTelegramBotAPI.git
synced 2023-08-10 21:12:57 +03:00
Fix States
This commit is contained in:
parent
7d2915c7f9
commit
cd4a9add68
@ -160,6 +160,13 @@ class StateFilter(AdvancedCustomFilter):
|
||||
|
||||
async def check(self, message, text):
|
||||
if text == '*': return True
|
||||
|
||||
if isinstance(text, list):
|
||||
new_text = [i.name for i in text]
|
||||
text = new_text
|
||||
elif isinstance(text, object):
|
||||
text = text.name
|
||||
|
||||
if message.chat.type == 'group':
|
||||
group_state = await self.bot.current_states.get_state(message.chat.id, message.from_user.id)
|
||||
if group_state == text:
|
||||
|
@ -8,6 +8,8 @@ class StateMemoryStorage(StateStorageBase):
|
||||
|
||||
|
||||
async def set_state(self, chat_id, user_id, state):
|
||||
if isinstance(state, object):
|
||||
state = state.name
|
||||
if chat_id in self.data:
|
||||
if user_id in self.data[chat_id]:
|
||||
self.data[chat_id][user_id]['state'] = state
|
||||
|
@ -47,6 +47,8 @@ class StatePickleStorage(StateStorageBase):
|
||||
file.close()
|
||||
|
||||
async def set_state(self, chat_id, user_id, state):
|
||||
if isinstance(state, object):
|
||||
state = state.name
|
||||
if chat_id in self.data:
|
||||
if user_id in self.data[chat_id]:
|
||||
self.data[chat_id][user_id]['state'] = state
|
||||
|
@ -65,6 +65,8 @@ class StateRedisStorage(StateStorageBase):
|
||||
"""
|
||||
response = await self.get_record(chat_id)
|
||||
user_id = str(user_id)
|
||||
if isinstance(state, object):
|
||||
state = state.name
|
||||
if response:
|
||||
if user_id in response:
|
||||
response[user_id]['state'] = state
|
||||
|
@ -1,5 +1,4 @@
|
||||
from abc import ABC
|
||||
|
||||
class SimpleCustomFilter(ABC):
|
||||
"""
|
||||
Simple Custom Filter base class.
|
||||
@ -159,6 +158,12 @@ class StateFilter(AdvancedCustomFilter):
|
||||
|
||||
def check(self, message, text):
|
||||
if text == '*': return True
|
||||
|
||||
if isinstance(text, list):
|
||||
new_text = [i.name for i in text]
|
||||
text = new_text
|
||||
elif isinstance(text, object):
|
||||
text = text.name
|
||||
if message.chat.type == 'group':
|
||||
group_state = self.bot.current_states.get_state(message.chat.id, message.from_user.id)
|
||||
if group_state == text:
|
||||
|
@ -156,6 +156,7 @@ class State:
|
||||
return self.name
|
||||
|
||||
|
||||
|
||||
class StatesGroup:
|
||||
def __init_subclass__(cls) -> None:
|
||||
# print all variables of a subclass
|
||||
|
@ -8,6 +8,8 @@ class StateMemoryStorage(StateStorageBase):
|
||||
|
||||
|
||||
def set_state(self, chat_id, user_id, state):
|
||||
if isinstance(state, object):
|
||||
state = state.name
|
||||
if chat_id in self.data:
|
||||
if user_id in self.data[chat_id]:
|
||||
self.data[chat_id][user_id]['state'] = state
|
||||
@ -31,6 +33,7 @@ class StateMemoryStorage(StateStorageBase):
|
||||
|
||||
|
||||
def get_state(self, chat_id, user_id):
|
||||
|
||||
if self.data.get(chat_id):
|
||||
if self.data[chat_id].get(user_id):
|
||||
return self.data[chat_id][user_id]['state']
|
||||
|
@ -53,6 +53,8 @@ class StatePickleStorage(StateStorageBase):
|
||||
file.close()
|
||||
|
||||
def set_state(self, chat_id, user_id, state):
|
||||
if isinstance(state, object):
|
||||
state = state.name
|
||||
if chat_id in self.data:
|
||||
if user_id in self.data[chat_id]:
|
||||
self.data[chat_id][user_id]['state'] = state
|
||||
|
@ -1,3 +1,4 @@
|
||||
from pyclbr import Class
|
||||
from telebot.storage.base_storage import StateStorageBase, StateContext
|
||||
import json
|
||||
|
||||
@ -64,6 +65,9 @@ class StateRedisStorage(StateStorageBase):
|
||||
"""
|
||||
response = self.get_record(chat_id)
|
||||
user_id = str(user_id)
|
||||
if isinstance(state, object):
|
||||
state = state.name
|
||||
|
||||
if response:
|
||||
if user_id in response:
|
||||
response[user_id]['state'] = state
|
||||
|
Loading…
Reference in New Issue
Block a user