@state_router.message(MyState.stateA)
async def process_stateA(message: Message, state: FSMContext) -> None:
data = await state.get_data()
result = message.text + str(data['some_key']) # это типа логика обработки
await message.reply(result)
def do_stuff(msgtext: str, some_value) -> str:
return msgtext + str(some_value)
@state_router.message(MyState.stateA)
async def process_stateA(message: Message, state: FSMContext) -> None:
data = await state.get_data()
result = do_stuff(message.text, data['some_key'])
await message.reply(result)
with open(filename, 'rb') as file:
media = MediaFileUpload(
filename, chunksize=1024 * 1024,
mimetype=message.document.mime_type, resumable=True)
request = service.files().create(
body=metadata, media_body=media)
file.close()
# handlers.py
def setup(dp, pool):
# внутри setup уже объявляешь обработчики
@dp.message_handler(content_types=['text'])
def some_handler(message: types.message):
...
# main.py
connection_pool = await create_asyncpg_connection_pool()
dp = ...
import handlers
handlers.setup(dp, connection_pool) # вызывать строго один раз!
from pathlib import Path
import importlib
import sys
SCRIPT = Path(sys.argv[0]).parent.resolve()
IMPORT_FROM = 'webhooks'
for fpath in (SCRIPT / IMPORT_FROM).iterdir():
# импортим .py файлы и подкаталоги c __init__.py внутри
# игнорим __init__.py и подобное, а также файлы, начинающиеся с .
if not fpath.stem.startswith('_') and not fpath.stem.startswith('.') and \
((fpath.suffix == '.py') or (fpath.is_dir() and (fpath / '__init__.py').is_file())):
try:
# эквивалент import webhooks.имяфайла as module
module = importlib.import_module(f'{IMPORT_FROM}.{fpath.stem}')
dp.include_router(module.router)
except Exception as err:
print(err) # журналируй ошибку
@dp.message_handler(text=['Найти группу'])
async def group(message):
To create a line break or new line (<br>), end a line with two or more spaces, and then type return.
' \n'
start_stop(True)
не закончит выполнение, time.sleep() даже не начнёт выполняться, не говоря уже о последующем. А start_stop(True)
не закончит выполнение никогда, потому что ты сделал вечный цикл.await asyncio.sleep(сколько_нужно)
, а за это время бот упал и был перезапущен, бот просто не "вспомнит" о ранее запланированных, но не выполненных рассылках. await bot.send_message(message.chat.id, 'Здравствуйте, какой продукт вы хотите преобрести?')