1
0
mirror of https://github.com/eternnoir/pyTelegramBotAPI.git synced 2023-08-10 21:12:57 +03:00

Merge pull request #1434 from coder2020official/master

Fix States
This commit is contained in:
Badiboy 2022-02-02 13:57:08 +03:00 committed by GitHub
commit 661218c7e3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 29 additions and 1 deletions

View File

@ -160,6 +160,13 @@ class StateFilter(AdvancedCustomFilter):
async def check(self, message, text): async def check(self, message, text):
if text == '*': return True 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': if message.chat.type == 'group':
group_state = await self.bot.current_states.get_state(message.chat.id, message.from_user.id) group_state = await self.bot.current_states.get_state(message.chat.id, message.from_user.id)
if group_state == text: if group_state == text:

View File

@ -8,6 +8,8 @@ class StateMemoryStorage(StateStorageBase):
async def set_state(self, chat_id, user_id, state): async def set_state(self, chat_id, user_id, state):
if isinstance(state, object):
state = state.name
if chat_id in self.data: if chat_id in self.data:
if user_id in self.data[chat_id]: if user_id in self.data[chat_id]:
self.data[chat_id][user_id]['state'] = state self.data[chat_id][user_id]['state'] = state

View File

@ -47,6 +47,8 @@ class StatePickleStorage(StateStorageBase):
file.close() file.close()
async def set_state(self, chat_id, user_id, state): async def set_state(self, chat_id, user_id, state):
if isinstance(state, object):
state = state.name
if chat_id in self.data: if chat_id in self.data:
if user_id in self.data[chat_id]: if user_id in self.data[chat_id]:
self.data[chat_id][user_id]['state'] = state self.data[chat_id][user_id]['state'] = state

View File

@ -65,6 +65,8 @@ class StateRedisStorage(StateStorageBase):
""" """
response = await self.get_record(chat_id) response = await self.get_record(chat_id)
user_id = str(user_id) user_id = str(user_id)
if isinstance(state, object):
state = state.name
if response: if response:
if user_id in response: if user_id in response:
response[user_id]['state'] = state response[user_id]['state'] = state

View File

@ -1,5 +1,4 @@
from abc import ABC from abc import ABC
class SimpleCustomFilter(ABC): class SimpleCustomFilter(ABC):
""" """
Simple Custom Filter base class. Simple Custom Filter base class.
@ -159,6 +158,12 @@ class StateFilter(AdvancedCustomFilter):
def check(self, message, text): def check(self, message, text):
if text == '*': return True 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': if message.chat.type == 'group':
group_state = self.bot.current_states.get_state(message.chat.id, message.from_user.id) group_state = self.bot.current_states.get_state(message.chat.id, message.from_user.id)
if group_state == text: if group_state == text:

View File

@ -156,6 +156,7 @@ class State:
return self.name return self.name
class StatesGroup: class StatesGroup:
def __init_subclass__(cls) -> None: def __init_subclass__(cls) -> None:
# print all variables of a subclass # print all variables of a subclass

View File

@ -8,6 +8,8 @@ class StateMemoryStorage(StateStorageBase):
def set_state(self, chat_id, user_id, state): def set_state(self, chat_id, user_id, state):
if isinstance(state, object):
state = state.name
if chat_id in self.data: if chat_id in self.data:
if user_id in self.data[chat_id]: if user_id in self.data[chat_id]:
self.data[chat_id][user_id]['state'] = state self.data[chat_id][user_id]['state'] = state
@ -31,6 +33,7 @@ class StateMemoryStorage(StateStorageBase):
def get_state(self, chat_id, user_id): def get_state(self, chat_id, user_id):
if self.data.get(chat_id): if self.data.get(chat_id):
if self.data[chat_id].get(user_id): if self.data[chat_id].get(user_id):
return self.data[chat_id][user_id]['state'] return self.data[chat_id][user_id]['state']

View File

@ -53,6 +53,8 @@ class StatePickleStorage(StateStorageBase):
file.close() file.close()
def set_state(self, chat_id, user_id, state): def set_state(self, chat_id, user_id, state):
if isinstance(state, object):
state = state.name
if chat_id in self.data: if chat_id in self.data:
if user_id in self.data[chat_id]: if user_id in self.data[chat_id]:
self.data[chat_id][user_id]['state'] = state self.data[chat_id][user_id]['state'] = state

View File

@ -1,3 +1,4 @@
from pyclbr import Class
from telebot.storage.base_storage import StateStorageBase, StateContext from telebot.storage.base_storage import StateStorageBase, StateContext
import json import json
@ -64,6 +65,9 @@ class StateRedisStorage(StateStorageBase):
""" """
response = self.get_record(chat_id) response = self.get_record(chat_id)
user_id = str(user_id) user_id = str(user_id)
if isinstance(state, object):
state = state.name
if response: if response:
if user_id in response: if user_id in response:
response[user_id]['state'] = state response[user_id]['state'] = state