mirror of
https://github.com/eternnoir/pyTelegramBotAPI.git
synced 2023-08-10 21:12:57 +03:00
Code base cleanup
This commit is contained in:
parent
2e9947277a
commit
4166fb229e
2
.github/workflows/setup_python.yml
vendored
2
.github/workflows/setup_python.yml
vendored
@ -20,7 +20,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
python-version: [ '3.6','3.7','3.8','3.9', 'pypy-3.6', 'pypy-3.7' ] #'pypy-3.8', 'pypy-3.9' NOT SUPPORTED NOW
|
python-version: [ '3.7','3.8','3.9', 'pypy-3.7', 'pypy-3.8' ] #'pypy-3.9' NOT SUPPORTED NOW
|
||||||
name: ${{ matrix.python-version }} and tests
|
name: ${{ matrix.python-version }} and tests
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
@ -9,7 +9,7 @@ import telebot
|
|||||||
from telebot import types
|
from telebot import types
|
||||||
|
|
||||||
# Initialize bot with your token
|
# Initialize bot with your token
|
||||||
bot = telebot.TeleBot(TOKEN)
|
bot = telebot.TeleBot('TOKEN')
|
||||||
|
|
||||||
# The `users` variable is needed to contain chat ids that are either in the search or in the active dialog, like {chat_id, chat_id}
|
# The `users` variable is needed to contain chat ids that are either in the search or in the active dialog, like {chat_id, chat_id}
|
||||||
users = {}
|
users = {}
|
||||||
@ -47,7 +47,7 @@ def find(message: types.Message):
|
|||||||
if message.chat.id not in users:
|
if message.chat.id not in users:
|
||||||
bot.send_message(message.chat.id, 'Finding...')
|
bot.send_message(message.chat.id, 'Finding...')
|
||||||
|
|
||||||
if freeid == None:
|
if freeid is None:
|
||||||
freeid = message.chat.id
|
freeid = message.chat.id
|
||||||
else:
|
else:
|
||||||
# Question:
|
# Question:
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
import telebot
|
|
||||||
from telebot import asyncio_filters
|
from telebot import asyncio_filters
|
||||||
from telebot.async_telebot import AsyncTeleBot
|
from telebot.async_telebot import AsyncTeleBot
|
||||||
|
|
||||||
# list of storages, you can use any storage
|
# list of storages, you can use any storage
|
||||||
from telebot.asyncio_storage import StateRedisStorage,StateMemoryStorage,StatePickleStorage
|
from telebot.asyncio_storage import StateMemoryStorage
|
||||||
|
|
||||||
# new feature for states.
|
# new feature for states.
|
||||||
from telebot.asyncio_handler_backends import State, StatesGroup
|
from telebot.asyncio_handler_backends import State, StatesGroup
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
# Just a little example of middleware handlers
|
# Just a little example of middleware handlers
|
||||||
|
|
||||||
import telebot
|
|
||||||
from telebot.asyncio_handler_backends import BaseMiddleware
|
from telebot.asyncio_handler_backends import BaseMiddleware
|
||||||
from telebot.async_telebot import AsyncTeleBot
|
from telebot.async_telebot import AsyncTeleBot
|
||||||
from telebot.async_telebot import CancelUpdate
|
from telebot.async_telebot import CancelUpdate
|
||||||
|
@ -4,7 +4,7 @@ from telebot import custom_filters
|
|||||||
from telebot.handler_backends import State, StatesGroup #States
|
from telebot.handler_backends import State, StatesGroup #States
|
||||||
|
|
||||||
# States storage
|
# States storage
|
||||||
from telebot.storage import StateRedisStorage, StatePickleStorage, StateMemoryStorage
|
from telebot.storage import StateMemoryStorage
|
||||||
|
|
||||||
|
|
||||||
# Beginning from version 4.4.0+, we support storages.
|
# Beginning from version 4.4.0+, we support storages.
|
||||||
|
@ -18,7 +18,6 @@ def send_welcome(message):
|
|||||||
def beep(chat_id) -> None:
|
def beep(chat_id) -> None:
|
||||||
"""Send the beep message."""
|
"""Send the beep message."""
|
||||||
bot.send_message(chat_id, text='Beep!')
|
bot.send_message(chat_id, text='Beep!')
|
||||||
return schedule.CancelJob # Run a job once
|
|
||||||
|
|
||||||
|
|
||||||
@bot.message_handler(commands=['set'])
|
@bot.message_handler(commands=['set'])
|
||||||
|
@ -5,6 +5,7 @@
|
|||||||
# Documenation to Tornado: http://tornadoweb.org
|
# Documenation to Tornado: http://tornadoweb.org
|
||||||
|
|
||||||
import signal
|
import signal
|
||||||
|
from typing import Optional, Awaitable
|
||||||
|
|
||||||
import tornado.httpserver
|
import tornado.httpserver
|
||||||
import tornado.ioloop
|
import tornado.ioloop
|
||||||
@ -33,12 +34,18 @@ bot = telebot.TeleBot(API_TOKEN)
|
|||||||
|
|
||||||
|
|
||||||
class Root(tornado.web.RequestHandler):
|
class Root(tornado.web.RequestHandler):
|
||||||
|
def data_received(self, chunk: bytes) -> Optional[Awaitable[None]]:
|
||||||
|
pass
|
||||||
|
|
||||||
def get(self):
|
def get(self):
|
||||||
self.write("Hi! This is webhook example!")
|
self.write("Hi! This is webhook example!")
|
||||||
self.finish()
|
self.finish()
|
||||||
|
|
||||||
|
|
||||||
class webhook_serv(tornado.web.RequestHandler):
|
class WebhookServ(tornado.web.RequestHandler):
|
||||||
|
def data_received(self, chunk: bytes) -> Optional[Awaitable[None]]:
|
||||||
|
pass
|
||||||
|
|
||||||
def get(self):
|
def get(self):
|
||||||
self.write("What are you doing here?")
|
self.write("What are you doing here?")
|
||||||
self.finish()
|
self.finish()
|
||||||
@ -93,7 +100,7 @@ tornado.options.parse_command_line()
|
|||||||
signal.signal(signal.SIGINT, signal_handler)
|
signal.signal(signal.SIGINT, signal_handler)
|
||||||
application = tornado.web.Application([
|
application = tornado.web.Application([
|
||||||
(r"/", Root),
|
(r"/", Root),
|
||||||
(r"/" + WEBHOOK_SECRET, webhook_serv)
|
(r"/" + WEBHOOK_SECRET, WebhookServ)
|
||||||
])
|
])
|
||||||
|
|
||||||
http_server = tornado.httpserver.HTTPServer(application, ssl_options={
|
http_server = tornado.httpserver.HTTPServer(application, ssl_options={
|
||||||
|
@ -9,7 +9,7 @@ import time
|
|||||||
import traceback
|
import traceback
|
||||||
from typing import Any, Callable, List, Optional, Union
|
from typing import Any, Callable, List, Optional, Union
|
||||||
|
|
||||||
# this imports are used to avoid circular import error
|
# these imports are used to avoid circular import error
|
||||||
import telebot.util
|
import telebot.util
|
||||||
import telebot.types
|
import telebot.types
|
||||||
|
|
||||||
@ -33,13 +33,11 @@ from telebot.handler_backends import MemoryHandlerBackend, FileHandlerBackend
|
|||||||
from telebot.custom_filters import SimpleCustomFilter, AdvancedCustomFilter
|
from telebot.custom_filters import SimpleCustomFilter, AdvancedCustomFilter
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
REPLY_MARKUP_TYPES = Union[
|
REPLY_MARKUP_TYPES = Union[
|
||||||
types.InlineKeyboardMarkup, types.ReplyKeyboardMarkup,
|
types.InlineKeyboardMarkup, types.ReplyKeyboardMarkup,
|
||||||
types.ReplyKeyboardRemove, types.ForceReply]
|
types.ReplyKeyboardRemove, types.ForceReply]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Module : telebot
|
Module : telebot
|
||||||
"""
|
"""
|
||||||
@ -156,7 +154,6 @@ class TeleBot:
|
|||||||
:param parse_mode: default parse_mode
|
:param parse_mode: default parse_mode
|
||||||
:return: Telebot object.
|
:return: Telebot object.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self.token = token
|
self.token = token
|
||||||
self.parse_mode = parse_mode
|
self.parse_mode = parse_mode
|
||||||
self.update_listener = []
|
self.update_listener = []
|
||||||
@ -196,7 +193,6 @@ class TeleBot:
|
|||||||
|
|
||||||
self.current_states = state_storage
|
self.current_states = state_storage
|
||||||
|
|
||||||
|
|
||||||
if apihelper.ENABLE_MIDDLEWARE:
|
if apihelper.ENABLE_MIDDLEWARE:
|
||||||
self.typed_middleware_handlers = {
|
self.typed_middleware_handlers = {
|
||||||
'message': [],
|
'message': [],
|
||||||
@ -251,8 +247,7 @@ class TeleBot:
|
|||||||
|
|
||||||
:param filename: Filename of saving file
|
:param filename: Filename of saving file
|
||||||
"""
|
"""
|
||||||
|
self.current_states = StatePickleStorage(file_path=filename)
|
||||||
self.current_states = StatePickleStorage(filename=filename)
|
|
||||||
self.current_states.create_dir()
|
self.current_states.create_dir()
|
||||||
|
|
||||||
def enable_save_reply_handlers(self, delay=120, filename="./.handler-saves/reply.save"):
|
def enable_save_reply_handlers(self, delay=120, filename="./.handler-saves/reply.save"):
|
||||||
@ -520,7 +515,6 @@ class TeleBot:
|
|||||||
if chat_join_request:
|
if chat_join_request:
|
||||||
self.process_new_chat_join_request(chat_join_request)
|
self.process_new_chat_join_request(chat_join_request)
|
||||||
|
|
||||||
|
|
||||||
def process_new_messages(self, new_messages):
|
def process_new_messages(self, new_messages):
|
||||||
self._notify_next_handlers(new_messages)
|
self._notify_next_handlers(new_messages)
|
||||||
self._notify_reply_handlers(new_messages)
|
self._notify_reply_handlers(new_messages)
|
||||||
@ -590,7 +584,6 @@ class TeleBot:
|
|||||||
for listener in self.update_listener:
|
for listener in self.update_listener:
|
||||||
self._exec_task(listener, new_messages)
|
self._exec_task(listener, new_messages)
|
||||||
|
|
||||||
|
|
||||||
def infinity_polling(self, timeout: int=20, skip_pending: bool=False, long_polling_timeout: int=20, logger_level=logging.ERROR,
|
def infinity_polling(self, timeout: int=20, skip_pending: bool=False, long_polling_timeout: int=20, logger_level=logging.ERROR,
|
||||||
allowed_updates: Optional[List[str]]=None, *args, **kwargs):
|
allowed_updates: Optional[List[str]]=None, *args, **kwargs):
|
||||||
"""
|
"""
|
||||||
@ -778,7 +771,7 @@ class TeleBot:
|
|||||||
logger.info('Stopped polling.')
|
logger.info('Stopped polling.')
|
||||||
|
|
||||||
def _exec_task(self, task, *args, **kwargs):
|
def _exec_task(self, task, *args, **kwargs):
|
||||||
if kwargs.get('task_type') == 'handler':
|
if kwargs and kwargs.get('task_type') == 'handler':
|
||||||
pass_bot = kwargs.get('pass_bot')
|
pass_bot = kwargs.get('pass_bot')
|
||||||
kwargs.pop('pass_bot')
|
kwargs.pop('pass_bot')
|
||||||
kwargs.pop('task_type')
|
kwargs.pop('task_type')
|
||||||
@ -956,7 +949,6 @@ class TeleBot:
|
|||||||
"""
|
"""
|
||||||
Use this method to send text messages.
|
Use this method to send text messages.
|
||||||
|
|
||||||
|
|
||||||
Warning: Do not send more than about 4000 characters each message, otherwise you'll risk an HTTP 414 error.
|
Warning: Do not send more than about 4000 characters each message, otherwise you'll risk an HTTP 414 error.
|
||||||
If you must send more than 4000 characters,
|
If you must send more than 4000 characters,
|
||||||
use the `split_string` or `smart_split` function in util.py.
|
use the `split_string` or `smart_split` function in util.py.
|
||||||
@ -1419,7 +1411,6 @@ class TeleBot:
|
|||||||
allow_sending_without_reply, protect_content)
|
allow_sending_without_reply, protect_content)
|
||||||
return [types.Message.de_json(msg) for msg in result]
|
return [types.Message.de_json(msg) for msg in result]
|
||||||
|
|
||||||
|
|
||||||
# TODO: Rewrite this method like in API.
|
# TODO: Rewrite this method like in API.
|
||||||
def send_location(
|
def send_location(
|
||||||
self, chat_id: Union[int, str],
|
self, chat_id: Union[int, str],
|
||||||
@ -1434,8 +1425,6 @@ class TeleBot:
|
|||||||
proximity_alert_radius: Optional[int]=None,
|
proximity_alert_radius: Optional[int]=None,
|
||||||
allow_sending_without_reply: Optional[bool]=None,
|
allow_sending_without_reply: Optional[bool]=None,
|
||||||
protect_content: Optional[bool]=None) -> types.Message:
|
protect_content: Optional[bool]=None) -> types.Message:
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Use this method to send point on the map.
|
Use this method to send point on the map.
|
||||||
:param chat_id:
|
:param chat_id:
|
||||||
@ -1736,7 +1725,6 @@ class TeleBot:
|
|||||||
"""
|
"""
|
||||||
return apihelper.set_chat_administrator_custom_title(self.token, chat_id, user_id, custom_title)
|
return apihelper.set_chat_administrator_custom_title(self.token, chat_id, user_id, custom_title)
|
||||||
|
|
||||||
|
|
||||||
def ban_chat_sender_chat(self, chat_id: Union[int, str], sender_chat_id: Union[int, str]) -> bool:
|
def ban_chat_sender_chat(self, chat_id: Union[int, str], sender_chat_id: Union[int, str]) -> bool:
|
||||||
"""
|
"""
|
||||||
Use this method to ban a channel chat in a supergroup or a channel.
|
Use this method to ban a channel chat in a supergroup or a channel.
|
||||||
@ -1767,7 +1755,6 @@ class TeleBot:
|
|||||||
"""
|
"""
|
||||||
return apihelper.unban_chat_sender_chat(self.token, chat_id, sender_chat_id)
|
return apihelper.unban_chat_sender_chat(self.token, chat_id, sender_chat_id)
|
||||||
|
|
||||||
|
|
||||||
def set_chat_permissions(
|
def set_chat_permissions(
|
||||||
self, chat_id: Union[int, str], permissions: types.ChatPermissions) -> bool:
|
self, chat_id: Union[int, str], permissions: types.ChatPermissions) -> bool:
|
||||||
"""
|
"""
|
||||||
@ -2262,7 +2249,6 @@ class TeleBot:
|
|||||||
:param protect_content:
|
:param protect_content:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if isinstance(question, types.Poll):
|
if isinstance(question, types.Poll):
|
||||||
raise RuntimeError("The send_poll signature was changed, please see send_poll function details.")
|
raise RuntimeError("The send_poll signature was changed, please see send_poll function details.")
|
||||||
|
|
||||||
@ -2445,7 +2431,6 @@ class TeleBot:
|
|||||||
self.token, user_id, name, title, emojis, png_sticker, tgs_sticker,
|
self.token, user_id, name, title, emojis, png_sticker, tgs_sticker,
|
||||||
contains_masks, mask_position)
|
contains_masks, mask_position)
|
||||||
|
|
||||||
|
|
||||||
def add_sticker_to_set(
|
def add_sticker_to_set(
|
||||||
self, user_id: int, name: str, emojis: str,
|
self, user_id: int, name: str, emojis: str,
|
||||||
png_sticker: Optional[Union[Any, str]]=None,
|
png_sticker: Optional[Union[Any, str]]=None,
|
||||||
@ -2466,7 +2451,6 @@ class TeleBot:
|
|||||||
return apihelper.add_sticker_to_set(
|
return apihelper.add_sticker_to_set(
|
||||||
self.token, user_id, name, emojis, png_sticker, tgs_sticker, mask_position)
|
self.token, user_id, name, emojis, png_sticker, tgs_sticker, mask_position)
|
||||||
|
|
||||||
|
|
||||||
def set_sticker_position_in_set(self, sticker: str, position: int) -> bool:
|
def set_sticker_position_in_set(self, sticker: str, position: int) -> bool:
|
||||||
"""
|
"""
|
||||||
Use this method to move a sticker in a set created by the bot to a specific position . Returns True on success.
|
Use this method to move a sticker in a set created by the bot to a specific position . Returns True on success.
|
||||||
@ -2542,8 +2526,9 @@ class TeleBot:
|
|||||||
def set_state(self, user_id: int, state: Union[int, str], chat_id: int=None) -> None:
|
def set_state(self, user_id: int, state: Union[int, str], chat_id: int=None) -> None:
|
||||||
"""
|
"""
|
||||||
Sets a new state of a user.
|
Sets a new state of a user.
|
||||||
:param chat_id:
|
:param user_id:
|
||||||
:param state: new state. can be string or integer.
|
:param state: new state. can be string or integer.
|
||||||
|
:param chat_id:
|
||||||
"""
|
"""
|
||||||
if chat_id is None:
|
if chat_id is None:
|
||||||
chat_id = user_id
|
chat_id = user_id
|
||||||
@ -2557,10 +2542,12 @@ class TeleBot:
|
|||||||
"""
|
"""
|
||||||
if chat_id is None:
|
if chat_id is None:
|
||||||
chat_id = user_id
|
chat_id = user_id
|
||||||
|
|
||||||
self.current_states.reset_data(chat_id, user_id)
|
self.current_states.reset_data(chat_id, user_id)
|
||||||
def delete_state(self, user_id: int, chat_id: int=None) -> None:
|
def delete_state(self, user_id: int, chat_id: int=None) -> None:
|
||||||
"""
|
"""
|
||||||
Delete the current state of a user.
|
Delete the current state of a user.
|
||||||
|
:param user_id:
|
||||||
:param chat_id:
|
:param chat_id:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
@ -2576,6 +2563,7 @@ class TeleBot:
|
|||||||
def get_state(self, user_id: int, chat_id: int=None) -> Optional[Union[int, str]]:
|
def get_state(self, user_id: int, chat_id: int=None) -> Optional[Union[int, str]]:
|
||||||
"""
|
"""
|
||||||
Get current state of a user.
|
Get current state of a user.
|
||||||
|
:param user_id:
|
||||||
:param chat_id:
|
:param chat_id:
|
||||||
:return: state of a user
|
:return: state of a user
|
||||||
"""
|
"""
|
||||||
@ -2586,6 +2574,7 @@ class TeleBot:
|
|||||||
def add_data(self, user_id: int, chat_id:int=None, **kwargs):
|
def add_data(self, user_id: int, chat_id:int=None, **kwargs):
|
||||||
"""
|
"""
|
||||||
Add data to states.
|
Add data to states.
|
||||||
|
:param user_id:
|
||||||
:param chat_id:
|
:param chat_id:
|
||||||
"""
|
"""
|
||||||
if chat_id is None:
|
if chat_id is None:
|
||||||
@ -2655,8 +2644,8 @@ class TeleBot:
|
|||||||
need_pop = True
|
need_pop = True
|
||||||
self._exec_task(handler["callback"], message, *handler["args"], **handler["kwargs"])
|
self._exec_task(handler["callback"], message, *handler["args"], **handler["kwargs"])
|
||||||
if need_pop:
|
if need_pop:
|
||||||
new_messages.pop(i) # removing message that was detected with next_step_handler
|
# removing message that was detected with next_step_handler
|
||||||
|
new_messages.pop(i)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _build_handler_dict(handler, pass_bot=False, **filters):
|
def _build_handler_dict(handler, pass_bot=False, **filters):
|
||||||
@ -2697,9 +2686,7 @@ class TeleBot:
|
|||||||
print(update.update_id)
|
print(update.update_id)
|
||||||
|
|
||||||
:param update_types: Optional list of update types that can be passed into the middleware handler.
|
:param update_types: Optional list of update types that can be passed into the middleware handler.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def decorator(handler):
|
def decorator(handler):
|
||||||
self.add_middleware_handler(handler, update_types)
|
self.add_middleware_handler(handler, update_types)
|
||||||
return handler
|
return handler
|
||||||
@ -2737,10 +2724,9 @@ class TeleBot:
|
|||||||
|
|
||||||
bot.register_middleware_handler(print_channel_post_text, update_types=['channel_post', 'edited_channel_post'])
|
bot.register_middleware_handler(print_channel_post_text, update_types=['channel_post', 'edited_channel_post'])
|
||||||
|
|
||||||
|
:param callback:
|
||||||
:param update_types: Optional list of update types that can be passed into the middleware handler.
|
:param update_types: Optional list of update types that can be passed into the middleware handler.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
self.add_middleware_handler(callback, update_types)
|
self.add_middleware_handler(callback, update_types)
|
||||||
|
|
||||||
def message_handler(self, commands=None, regexp=None, func=None, content_types=None, chat_types=None, **kwargs):
|
def message_handler(self, commands=None, regexp=None, func=None, content_types=None, chat_types=None, **kwargs):
|
||||||
@ -2782,7 +2768,6 @@ class TeleBot:
|
|||||||
:param content_types: Supported message content types. Must be a list. Defaults to ['text'].
|
:param content_types: Supported message content types. Must be a list. Defaults to ['text'].
|
||||||
:param chat_types: list of chat types
|
:param chat_types: list of chat types
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if content_types is None:
|
if content_types is None:
|
||||||
content_types = ["text"]
|
content_types = ["text"]
|
||||||
|
|
||||||
@ -2856,7 +2841,6 @@ class TeleBot:
|
|||||||
:param kwargs:
|
:param kwargs:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if content_types is None:
|
if content_types is None:
|
||||||
content_types = ["text"]
|
content_types = ["text"]
|
||||||
|
|
||||||
@ -3065,7 +3049,6 @@ class TeleBot:
|
|||||||
:param kwargs:
|
:param kwargs:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def decorator(handler):
|
def decorator(handler):
|
||||||
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
||||||
self.add_inline_handler(handler_dict)
|
self.add_inline_handler(handler_dict)
|
||||||
@ -3099,7 +3082,6 @@ class TeleBot:
|
|||||||
:param kwargs:
|
:param kwargs:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def decorator(handler):
|
def decorator(handler):
|
||||||
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
||||||
self.add_chosen_inline_handler(handler_dict)
|
self.add_chosen_inline_handler(handler_dict)
|
||||||
@ -3133,7 +3115,6 @@ class TeleBot:
|
|||||||
:param kwargs:
|
:param kwargs:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def decorator(handler):
|
def decorator(handler):
|
||||||
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
||||||
self.add_callback_query_handler(handler_dict)
|
self.add_callback_query_handler(handler_dict)
|
||||||
@ -3167,7 +3148,6 @@ class TeleBot:
|
|||||||
:param kwargs:
|
:param kwargs:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def decorator(handler):
|
def decorator(handler):
|
||||||
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
||||||
self.add_shipping_query_handler(handler_dict)
|
self.add_shipping_query_handler(handler_dict)
|
||||||
@ -3201,7 +3181,6 @@ class TeleBot:
|
|||||||
:param kwargs:
|
:param kwargs:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def decorator(handler):
|
def decorator(handler):
|
||||||
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
||||||
self.add_pre_checkout_query_handler(handler_dict)
|
self.add_pre_checkout_query_handler(handler_dict)
|
||||||
@ -3235,7 +3214,6 @@ class TeleBot:
|
|||||||
:param kwargs:
|
:param kwargs:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def decorator(handler):
|
def decorator(handler):
|
||||||
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
||||||
self.add_poll_handler(handler_dict)
|
self.add_poll_handler(handler_dict)
|
||||||
@ -3269,7 +3247,6 @@ class TeleBot:
|
|||||||
:param kwargs:
|
:param kwargs:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def decorator(handler):
|
def decorator(handler):
|
||||||
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
||||||
self.add_poll_answer_handler(handler_dict)
|
self.add_poll_answer_handler(handler_dict)
|
||||||
@ -3303,7 +3280,6 @@ class TeleBot:
|
|||||||
:param kwargs:
|
:param kwargs:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def decorator(handler):
|
def decorator(handler):
|
||||||
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
||||||
self.add_my_chat_member_handler(handler_dict)
|
self.add_my_chat_member_handler(handler_dict)
|
||||||
@ -3337,7 +3313,6 @@ class TeleBot:
|
|||||||
:param kwargs:
|
:param kwargs:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def decorator(handler):
|
def decorator(handler):
|
||||||
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
||||||
self.add_chat_member_handler(handler_dict)
|
self.add_chat_member_handler(handler_dict)
|
||||||
@ -3371,7 +3346,6 @@ class TeleBot:
|
|||||||
:param kwargs:
|
:param kwargs:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def decorator(handler):
|
def decorator(handler):
|
||||||
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
handler_dict = self._build_handler_dict(handler, func=func, **kwargs)
|
||||||
self.add_chat_join_request_handler(handler_dict)
|
self.add_chat_join_request_handler(handler_dict)
|
||||||
@ -3429,14 +3403,6 @@ class TeleBot:
|
|||||||
:param message: Message to test
|
:param message: Message to test
|
||||||
:return: True if filter conforms
|
:return: True if filter conforms
|
||||||
"""
|
"""
|
||||||
# test_cases = {
|
|
||||||
# 'content_types': lambda msg: msg.content_type in filter_value,
|
|
||||||
# 'regexp': lambda msg: msg.content_type == 'text' and re.search(filter_value, msg.text, re.IGNORECASE),
|
|
||||||
# 'commands': lambda msg: msg.content_type == 'text' and util.extract_command(msg.text) in filter_value,
|
|
||||||
# 'func': lambda msg: filter_value(msg)
|
|
||||||
# }
|
|
||||||
# return test_cases.get(message_filter, lambda msg: False)(message)
|
|
||||||
|
|
||||||
if message_filter == 'content_types':
|
if message_filter == 'content_types':
|
||||||
return message.content_type in filter_value
|
return message.content_type in filter_value
|
||||||
elif message_filter == 'regexp':
|
elif message_filter == 'regexp':
|
||||||
@ -3478,8 +3444,3 @@ class TeleBot:
|
|||||||
if self._test_message_handler(message_handler, message):
|
if self._test_message_handler(message_handler, message):
|
||||||
self._exec_task(message_handler['function'], message, pass_bot=message_handler['pass_bot'], task_type='handler')
|
self._exec_task(message_handler['function'], message, pass_bot=message_handler['pass_bot'], task_type='handler')
|
||||||
break
|
break
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -3,7 +3,6 @@ from datetime import datetime
|
|||||||
|
|
||||||
import logging
|
import logging
|
||||||
import re
|
import re
|
||||||
import sys
|
|
||||||
import time
|
import time
|
||||||
import traceback
|
import traceback
|
||||||
from typing import Any, List, Optional, Union
|
from typing import Any, List, Optional, Union
|
||||||
@ -22,17 +21,14 @@ from telebot import logger
|
|||||||
|
|
||||||
from telebot import util, types, asyncio_helper
|
from telebot import util, types, asyncio_helper
|
||||||
import asyncio
|
import asyncio
|
||||||
from telebot import asyncio_handler_backends
|
|
||||||
from telebot import asyncio_filters
|
from telebot import asyncio_filters
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
REPLY_MARKUP_TYPES = Union[
|
REPLY_MARKUP_TYPES = Union[
|
||||||
types.InlineKeyboardMarkup, types.ReplyKeyboardMarkup,
|
types.InlineKeyboardMarkup, types.ReplyKeyboardMarkup,
|
||||||
types.ReplyKeyboardRemove, types.ForceReply]
|
types.ReplyKeyboardRemove, types.ForceReply]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
Module : telebot
|
Module : telebot
|
||||||
"""
|
"""
|
||||||
@ -42,7 +38,6 @@ class Handler:
|
|||||||
"""
|
"""
|
||||||
Class for (next step|reply) handlers
|
Class for (next step|reply) handlers
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def __init__(self, callback, *args, **kwargs):
|
def __init__(self, callback, *args, **kwargs):
|
||||||
self.callback = callback
|
self.callback = callback
|
||||||
self.args = args
|
self.args = args
|
||||||
@ -310,7 +305,6 @@ class AsyncTeleBot:
|
|||||||
return
|
return
|
||||||
except asyncio.CancelledError:
|
except asyncio.CancelledError:
|
||||||
return
|
return
|
||||||
|
|
||||||
except asyncio_helper.RequestTimeout as e:
|
except asyncio_helper.RequestTimeout as e:
|
||||||
logger.error(str(e))
|
logger.error(str(e))
|
||||||
if non_stop:
|
if non_stop:
|
||||||
@ -318,16 +312,12 @@ class AsyncTeleBot:
|
|||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
return
|
return
|
||||||
|
|
||||||
except asyncio_helper.ApiTelegramException as e:
|
except asyncio_helper.ApiTelegramException as e:
|
||||||
logger.error(str(e))
|
logger.error(str(e))
|
||||||
|
|
||||||
if non_stop:
|
if non_stop:
|
||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
break
|
break
|
||||||
except KeyboardInterrupt:
|
|
||||||
return
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error('Cause exception while getting updates.')
|
logger.error('Cause exception while getting updates.')
|
||||||
if non_stop:
|
if non_stop:
|
||||||
@ -336,13 +326,11 @@ class AsyncTeleBot:
|
|||||||
continue
|
continue
|
||||||
else:
|
else:
|
||||||
raise e
|
raise e
|
||||||
|
|
||||||
finally:
|
finally:
|
||||||
self._polling = False
|
self._polling = False
|
||||||
await self.close_session()
|
await self.close_session()
|
||||||
logger.warning('Polling is stopped.')
|
logger.warning('Polling is stopped.')
|
||||||
|
|
||||||
|
|
||||||
def _loop_create_task(self, coro):
|
def _loop_create_task(self, coro):
|
||||||
return asyncio.create_task(coro)
|
return asyncio.create_task(coro)
|
||||||
|
|
||||||
@ -357,8 +345,7 @@ class AsyncTeleBot:
|
|||||||
for message in messages:
|
for message in messages:
|
||||||
middleware = await self.process_middlewares(message, update_type)
|
middleware = await self.process_middlewares(message, update_type)
|
||||||
tasks.append(self._run_middlewares_and_handlers(handlers, message, middleware))
|
tasks.append(self._run_middlewares_and_handlers(handlers, message, middleware))
|
||||||
asyncio.gather(*tasks)
|
await asyncio.gather(*tasks)
|
||||||
|
|
||||||
|
|
||||||
async def _run_middlewares_and_handlers(self, handlers, message, middleware):
|
async def _run_middlewares_and_handlers(self, handlers, message, middleware):
|
||||||
handler_error = None
|
handler_error = None
|
||||||
@ -790,6 +777,7 @@ class AsyncTeleBot:
|
|||||||
def register_edited_message_handler(self, callback, content_types=None, commands=None, regexp=None, func=None, chat_types=None, pass_bot=False, **kwargs):
|
def register_edited_message_handler(self, callback, content_types=None, commands=None, regexp=None, func=None, chat_types=None, pass_bot=False, **kwargs):
|
||||||
"""
|
"""
|
||||||
Registers edited message handler.
|
Registers edited message handler.
|
||||||
|
:param pass_bot:
|
||||||
:param callback: function to be called
|
:param callback: function to be called
|
||||||
:param content_types: list of content_types
|
:param content_types: list of content_types
|
||||||
:param commands: list of commands
|
:param commands: list of commands
|
||||||
@ -861,6 +849,7 @@ class AsyncTeleBot:
|
|||||||
def register_channel_post_handler(self, callback, content_types=None, commands=None, regexp=None, func=None, pass_bot=False, **kwargs):
|
def register_channel_post_handler(self, callback, content_types=None, commands=None, regexp=None, func=None, pass_bot=False, **kwargs):
|
||||||
"""
|
"""
|
||||||
Registers channel post message handler.
|
Registers channel post message handler.
|
||||||
|
:param pass_bot:
|
||||||
:param callback: function to be called
|
:param callback: function to be called
|
||||||
:param content_types: list of content_types
|
:param content_types: list of content_types
|
||||||
:param commands: list of commands
|
:param commands: list of commands
|
||||||
@ -929,6 +918,7 @@ class AsyncTeleBot:
|
|||||||
def register_edited_channel_post_handler(self, callback, content_types=None, commands=None, regexp=None, func=None, pass_bot=False, **kwargs):
|
def register_edited_channel_post_handler(self, callback, content_types=None, commands=None, regexp=None, func=None, pass_bot=False, **kwargs):
|
||||||
"""
|
"""
|
||||||
Registers edited channel post message handler.
|
Registers edited channel post message handler.
|
||||||
|
:param pass_bot:
|
||||||
:param callback: function to be called
|
:param callback: function to be called
|
||||||
:param content_types: list of content_types
|
:param content_types: list of content_types
|
||||||
:param commands: list of commands
|
:param commands: list of commands
|
||||||
@ -979,6 +969,7 @@ class AsyncTeleBot:
|
|||||||
def register_inline_handler(self, callback, func, pass_bot=False, **kwargs):
|
def register_inline_handler(self, callback, func, pass_bot=False, **kwargs):
|
||||||
"""
|
"""
|
||||||
Registers inline handler.
|
Registers inline handler.
|
||||||
|
:param pass_bot:
|
||||||
:param callback: function to be called
|
:param callback: function to be called
|
||||||
:param func:
|
:param func:
|
||||||
:return: decorated function
|
:return: decorated function
|
||||||
@ -1012,6 +1003,7 @@ class AsyncTeleBot:
|
|||||||
def register_chosen_inline_handler(self, callback, func, pass_bot=False, **kwargs):
|
def register_chosen_inline_handler(self, callback, func, pass_bot=False, **kwargs):
|
||||||
"""
|
"""
|
||||||
Registers chosen inline handler.
|
Registers chosen inline handler.
|
||||||
|
:param pass_bot:
|
||||||
:param callback: function to be called
|
:param callback: function to be called
|
||||||
:param func:
|
:param func:
|
||||||
:return: decorated function
|
:return: decorated function
|
||||||
@ -1045,6 +1037,7 @@ class AsyncTeleBot:
|
|||||||
def register_callback_query_handler(self, callback, func, pass_bot=False, **kwargs):
|
def register_callback_query_handler(self, callback, func, pass_bot=False, **kwargs):
|
||||||
"""
|
"""
|
||||||
Registers callback query handler..
|
Registers callback query handler..
|
||||||
|
:param pass_bot:
|
||||||
:param callback: function to be called
|
:param callback: function to be called
|
||||||
:param func:
|
:param func:
|
||||||
:return: decorated function
|
:return: decorated function
|
||||||
@ -1078,6 +1071,7 @@ class AsyncTeleBot:
|
|||||||
def register_shipping_query_handler(self, callback, func, pass_bot=False, **kwargs):
|
def register_shipping_query_handler(self, callback, func, pass_bot=False, **kwargs):
|
||||||
"""
|
"""
|
||||||
Registers shipping query handler.
|
Registers shipping query handler.
|
||||||
|
:param pass_bot:
|
||||||
:param callback: function to be called
|
:param callback: function to be called
|
||||||
:param func:
|
:param func:
|
||||||
:return: decorated function
|
:return: decorated function
|
||||||
@ -1111,6 +1105,7 @@ class AsyncTeleBot:
|
|||||||
def register_pre_checkout_query_handler(self, callback, func, pass_bot=False, **kwargs):
|
def register_pre_checkout_query_handler(self, callback, func, pass_bot=False, **kwargs):
|
||||||
"""
|
"""
|
||||||
Registers pre-checkout request handler.
|
Registers pre-checkout request handler.
|
||||||
|
:param pass_bot:
|
||||||
:param callback: function to be called
|
:param callback: function to be called
|
||||||
:param func:
|
:param func:
|
||||||
:return: decorated function
|
:return: decorated function
|
||||||
@ -1144,6 +1139,7 @@ class AsyncTeleBot:
|
|||||||
def register_poll_handler(self, callback, func, pass_bot=False, **kwargs):
|
def register_poll_handler(self, callback, func, pass_bot=False, **kwargs):
|
||||||
"""
|
"""
|
||||||
Registers poll handler.
|
Registers poll handler.
|
||||||
|
:param pass_bot:
|
||||||
:param callback: function to be called
|
:param callback: function to be called
|
||||||
:param func:
|
:param func:
|
||||||
:return: decorated function
|
:return: decorated function
|
||||||
@ -1177,6 +1173,7 @@ class AsyncTeleBot:
|
|||||||
def register_poll_answer_handler(self, callback, func, pass_bot=False, **kwargs):
|
def register_poll_answer_handler(self, callback, func, pass_bot=False, **kwargs):
|
||||||
"""
|
"""
|
||||||
Registers poll answer handler.
|
Registers poll answer handler.
|
||||||
|
:param pass_bot:
|
||||||
:param callback: function to be called
|
:param callback: function to be called
|
||||||
:param func:
|
:param func:
|
||||||
:return: decorated function
|
:return: decorated function
|
||||||
@ -1210,6 +1207,7 @@ class AsyncTeleBot:
|
|||||||
def register_my_chat_member_handler(self, callback, func=None, pass_bot=False, **kwargs):
|
def register_my_chat_member_handler(self, callback, func=None, pass_bot=False, **kwargs):
|
||||||
"""
|
"""
|
||||||
Registers my chat member handler.
|
Registers my chat member handler.
|
||||||
|
:param pass_bot:
|
||||||
:param callback: function to be called
|
:param callback: function to be called
|
||||||
:param func:
|
:param func:
|
||||||
:return: decorated function
|
:return: decorated function
|
||||||
@ -1243,6 +1241,7 @@ class AsyncTeleBot:
|
|||||||
def register_chat_member_handler(self, callback, func=None, pass_bot=False, **kwargs):
|
def register_chat_member_handler(self, callback, func=None, pass_bot=False, **kwargs):
|
||||||
"""
|
"""
|
||||||
Registers chat member handler.
|
Registers chat member handler.
|
||||||
|
:param pass_bot:
|
||||||
:param callback: function to be called
|
:param callback: function to be called
|
||||||
:param func:
|
:param func:
|
||||||
:return: decorated function
|
:return: decorated function
|
||||||
@ -1276,6 +1275,7 @@ class AsyncTeleBot:
|
|||||||
def register_chat_join_request_handler(self, callback, func=None, pass_bot=False, **kwargs):
|
def register_chat_join_request_handler(self, callback, func=None, pass_bot=False, **kwargs):
|
||||||
"""
|
"""
|
||||||
Registers chat join request handler.
|
Registers chat join request handler.
|
||||||
|
:param pass_bot:
|
||||||
:param callback: function to be called
|
:param callback: function to be called
|
||||||
:param func:
|
:param func:
|
||||||
:return: decorated function
|
:return: decorated function
|
||||||
@ -1403,7 +1403,7 @@ class AsyncTeleBot:
|
|||||||
"""
|
"""
|
||||||
Alternative for delete_webhook but uses set_webhook
|
Alternative for delete_webhook but uses set_webhook
|
||||||
"""
|
"""
|
||||||
self.set_webhook()
|
await self.set_webhook()
|
||||||
|
|
||||||
async def get_webhook_info(self, timeout=None):
|
async def get_webhook_info(self, timeout=None):
|
||||||
"""
|
"""
|
||||||
@ -3061,6 +3061,7 @@ class AsyncTeleBot:
|
|||||||
async def set_state(self, user_id: int, state: str, chat_id: int=None):
|
async def set_state(self, user_id: int, state: str, chat_id: int=None):
|
||||||
"""
|
"""
|
||||||
Sets a new state of a user.
|
Sets a new state of a user.
|
||||||
|
:param user_id:
|
||||||
:param chat_id:
|
:param chat_id:
|
||||||
:param state: new state. can be string or integer.
|
:param state: new state. can be string or integer.
|
||||||
"""
|
"""
|
||||||
@ -3081,6 +3082,7 @@ class AsyncTeleBot:
|
|||||||
async def delete_state(self, user_id: int, chat_id:int=None):
|
async def delete_state(self, user_id: int, chat_id:int=None):
|
||||||
"""
|
"""
|
||||||
Delete the current state of a user.
|
Delete the current state of a user.
|
||||||
|
:param user_id:
|
||||||
:param chat_id:
|
:param chat_id:
|
||||||
:return:
|
:return:
|
||||||
"""
|
"""
|
||||||
@ -3096,6 +3098,7 @@ class AsyncTeleBot:
|
|||||||
async def get_state(self, user_id, chat_id: int=None):
|
async def get_state(self, user_id, chat_id: int=None):
|
||||||
"""
|
"""
|
||||||
Get current state of a user.
|
Get current state of a user.
|
||||||
|
:param user_id:
|
||||||
:param chat_id:
|
:param chat_id:
|
||||||
:return: state of a user
|
:return: state of a user
|
||||||
"""
|
"""
|
||||||
@ -3106,6 +3109,7 @@ class AsyncTeleBot:
|
|||||||
async def add_data(self, user_id: int, chat_id: int=None, **kwargs):
|
async def add_data(self, user_id: int, chat_id: int=None, **kwargs):
|
||||||
"""
|
"""
|
||||||
Add data to states.
|
Add data to states.
|
||||||
|
:param user_id:
|
||||||
:param chat_id:
|
:param chat_id:
|
||||||
"""
|
"""
|
||||||
if not chat_id:
|
if not chat_id:
|
||||||
|
@ -1,8 +1,3 @@
|
|||||||
import os
|
|
||||||
import pickle
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class BaseMiddleware:
|
class BaseMiddleware:
|
||||||
"""
|
"""
|
||||||
Base class for middleware.
|
Base class for middleware.
|
||||||
@ -32,4 +27,3 @@ class StatesGroup:
|
|||||||
if not name.startswith('__') and not callable(value) and isinstance(value, State):
|
if not name.startswith('__') and not callable(value) and isinstance(value, State):
|
||||||
# change value of that variable
|
# change value of that variable
|
||||||
value.name = ':'.join((cls.__name__, name))
|
value.name = ':'.join((cls.__name__, name))
|
||||||
|
|
||||||
|
@ -43,6 +43,7 @@ class SessionManager:
|
|||||||
if self.session.closed:
|
if self.session.closed:
|
||||||
self.session = await self.create_session()
|
self.session = await self.create_session()
|
||||||
|
|
||||||
|
# noinspection PyProtectedMember
|
||||||
if not self.session._loop.is_running():
|
if not self.session._loop.is_running():
|
||||||
await self.session.close()
|
await self.session.close()
|
||||||
self.session = await self.create_session()
|
self.session = await self.create_session()
|
||||||
|
@ -43,11 +43,10 @@ class StateStorageBase:
|
|||||||
async def get_state(self, chat_id, user_id):
|
async def get_state(self, chat_id, user_id):
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
async def save(chat_id, user_id, data):
|
async def save(self, chat_id, user_id, data):
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class StateContext:
|
class StateContext:
|
||||||
"""
|
"""
|
||||||
Class for data.
|
Class for data.
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
from pickle import FALSE
|
|
||||||
from telebot.asyncio_storage.base_storage import StateStorageBase, StateContext
|
from telebot.asyncio_storage.base_storage import StateStorageBase, StateContext
|
||||||
import json
|
import json
|
||||||
|
|
||||||
@ -93,7 +92,6 @@ class StateRedisStorage(StateStorageBase):
|
|||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
async def get_value(self, chat_id, user_id, key):
|
async def get_value(self, chat_id, user_id, key):
|
||||||
"""
|
"""
|
||||||
Get value for a data of a user in a chat.
|
Get value for a data of a user in a chat.
|
||||||
@ -106,7 +104,6 @@ class StateRedisStorage(StateStorageBase):
|
|||||||
return response[user_id]['data'][key]
|
return response[user_id]['data'][key]
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
async def get_state(self, chat_id, user_id):
|
async def get_state(self, chat_id, user_id):
|
||||||
"""
|
"""
|
||||||
Get state of a user in a chat.
|
Get state of a user in a chat.
|
||||||
@ -119,7 +116,6 @@ class StateRedisStorage(StateStorageBase):
|
|||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
async def get_data(self, chat_id, user_id):
|
async def get_data(self, chat_id, user_id):
|
||||||
"""
|
"""
|
||||||
Get data of particular user in a particular chat.
|
Get data of particular user in a particular chat.
|
||||||
@ -131,7 +127,6 @@ class StateRedisStorage(StateStorageBase):
|
|||||||
return response[user_id]['data']
|
return response[user_id]['data']
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
async def reset_data(self, chat_id, user_id):
|
async def reset_data(self, chat_id, user_id):
|
||||||
"""
|
"""
|
||||||
Reset data of a user in a chat.
|
Reset data of a user in a chat.
|
||||||
@ -144,9 +139,6 @@ class StateRedisStorage(StateStorageBase):
|
|||||||
await self.set_record(chat_id, response)
|
await self.set_record(chat_id, response)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
async def set_data(self, chat_id, user_id, key, value):
|
async def set_data(self, chat_id, user_id, key, value):
|
||||||
"""
|
"""
|
||||||
Set data without interactive data.
|
Set data without interactive data.
|
||||||
@ -175,4 +167,3 @@ class StateRedisStorage(StateStorageBase):
|
|||||||
response[user_id]['data'] = dict(data, **response[user_id]['data'])
|
response[user_id]['data'] = dict(data, **response[user_id]['data'])
|
||||||
await self.set_record(chat_id, response)
|
await self.set_record(chat_id, response)
|
||||||
return True
|
return True
|
||||||
|
|
@ -42,7 +42,7 @@ class StateStorageBase:
|
|||||||
def get_state(self, chat_id, user_id):
|
def get_state(self, chat_id, user_id):
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
def save(chat_id, user_id, data):
|
def save(self, chat_id, user_id, data):
|
||||||
raise NotImplementedError
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ import pickle
|
|||||||
|
|
||||||
|
|
||||||
class StatePickleStorage(StateStorageBase):
|
class StatePickleStorage(StateStorageBase):
|
||||||
|
# noinspection PyMissingConstructor
|
||||||
def __init__(self, file_path="./.state-save/states.pkl") -> None:
|
def __init__(self, file_path="./.state-save/states.pkl") -> None:
|
||||||
self.file_path = file_path
|
self.file_path = file_path
|
||||||
self.create_dir()
|
self.create_dir()
|
||||||
|
@ -4,7 +4,6 @@ import re
|
|||||||
import string
|
import string
|
||||||
import threading
|
import threading
|
||||||
import traceback
|
import traceback
|
||||||
import warnings
|
|
||||||
from typing import Any, Callable, List, Dict, Optional, Union
|
from typing import Any, Callable, List, Dict, Optional, Union
|
||||||
|
|
||||||
# noinspection PyPep8Naming
|
# noinspection PyPep8Naming
|
||||||
@ -408,6 +407,7 @@ def OrEvent(*events):
|
|||||||
|
|
||||||
def busy_wait():
|
def busy_wait():
|
||||||
while not or_event.is_set():
|
while not or_event.is_set():
|
||||||
|
# noinspection PyProtectedMember
|
||||||
or_event._wait(3)
|
or_event._wait(3)
|
||||||
|
|
||||||
for e in events:
|
for e in events:
|
||||||
|
Loading…
Reference in New Issue
Block a user