mirror of
https://github.com/eternnoir/pyTelegramBotAPI.git
synced 2023-08-10 21:12:57 +03:00
commit
661218c7e3
@ -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:
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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:
|
||||||
|
@ -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
|
||||||
|
@ -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']
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user