Top.Mail.Ru
Ответы

Помогите с Python кодом на aiogram3

Написал код с использованием библиотек aiogram, time и logging. Но в чём проблема... Бот не импортируется в Телеграм. Всё потому, что executor был в aiogram2, а в новой версии его уже нет. И так, вопрос... Как исправить код? Чем заменить этот злосчастный executor?

import time import logging from aiogram import Bot,Dispatcher,executor,types TOKEN = ' ' MSG = '{}, напоминание сделать невыполненные дела!' bot = Bot(token=TOKEN) dp = Dispatcher(bot=bot) @dp.message_handler(commands=['start']) async def start_handler(message: types.Message): user_id = message.from_user.id user_name = message.from_user.first_name user_full_name = message.from_user.full_name logging.info(f'{user_id} {user_full_name} {time.asctime()}') await message.reply(f'Привет, {user_full_name}!') for i in range(7): time.sleep(3600) await bot.send_message(user_id,MSG.format(user_name)) if __name__ == '__main__': executor.start_polling(dp)

1
По дате
По рейтингу
Аватар пользователя
Мудрец
1мес

Ну типа как-то так:

123456789101112131415161718192021222324252627282930313233343536
import time
import logging 
import asyncio

from aiogram import Bot,Dispatcher,types
from aiogram.filters import CommandStart
from aiogram.client.default import DefaultBotProperties
from aiogram.enums import ParseMode

TOKEN = ' '

MSG = '{}, напоминание сделать невыполненные дела!'

dp = Dispatcher()


@dp.message(CommandStart())
async def start_handler(message: types.Message, bot: Bot):
    user_id = message.from_user.id
    user_name = message.from_user.first_name
    user_full_name = message.from_user.full_name
    logging.info(f'{user_id} {user_full_name} {time.asctime()}')
    await message.reply(f'Привет, {user_full_name}!')
    
    for i in range(7):
        time.sleep(3600)
        await bot.send_message(user_id,MSG.format(user_name))
        
        
async def main() -> None:
    bot = Bot(token=TOKEN, default=DefaultBotProperties(parse_mode=ParseMode.HTML))
    await dp.start_polling(bot)


if __name__ == "__main__":
    asyncio.run(main())