Pull to refresh

Comments 12

Жду искренне в 3 части разбор мидлварей aiogram и их настройки

К сожалению или к счатью, но в третьей части у меня разбор CallBack (если время будет сегодня напишу и завтра утром выложу). А после фильтры, так как это более "попсовая" штука в разработке ботов, но до всего дойдем) Скажу честно, примерно в половине своих проектов я не использую мидлвари, но, конечно, в будущих статьях и это обсудим)

Спасибо за статью. Подписался.

вопрос не ради разжигания холивара на национальной почве, а скорее из соображений безопасности. Aiogram создан украинцем и им же модерируется. документация доступна только на двух языках - украинском и английском, при том, что, очевидно, у библиотеки есть огромное количество русскоязычных пользователей.

нет ли тут потенциальной угрозы отключения всего и вся или неочевидного поведения для русскоязычных пользователей?

Никто не мешает клонировать-проверить, а также пользоваться англ. документацией. Тем более, что автор оперативно и адекватно отвечает на вопросы.

да. я понимаю, что всегда можно смотреть все обновления библиотеки. но ведь никто так не делает. и 90% пользователей не будут, потому что это требует очень глубокого погружения и опыта исследований кода.

про документацию никаких вопросов. мне и англ хватит.

Думаю, что в современном мире заблокировать доступ к чему-либо по территориальному признаку невозможно. Яркий тому пример ВК в Украине, Instagram, FB, Openai, RuTracker в РФ и так далее. Кроме установки библиотеки и копирования (клонирования) - всегда можно воспользоваться ВПН (писал недавно как свой ВПН за 5 минут развернуть на ВПС). Так что причин для беспокойств тут не вижу)

пример: вы развернули бота на сервере в РФ. библиотека по ip узнает, где произошло развёртывание и дальше делает что-то (скачивает доп скрипты какие-то и тд)

да, можно установить VPN. но тогда на этом серваке будут недоступны какие-то российские сервисы...

"Асинхронная функция используется, потому что взаимодействие с API Telegram требует выполнения асинхронных запросов" - режет глаз )

Добрый день. Я чего-то никак не пойму....

Ведь await dp.start_polling(bot) запускает бесконечный цикл обработки апдейтов. Каким образом (в какой момент) выполнится следующий за этой строчкой код, а именно await set_commands()?

async def main():

dp.include_router(start_router)

await bot.delete_webhook(drop_pending_updates=True)

await dp.start_polling(bot) # Запуск бесконечного цикла

await set_commands() # Никогда не выполнится.

Да, вы абсолютно правы. В данном месте кода косяк. Установил и забыл корректный код прописать. Данный момент должен закрываться следующим образом.


# Функция, которая настроит командное меню (дефолтное для всех пользователей)
async def set_commands():
    commands = [BotCommand(command='start', description='Старт'),
                BotCommand(command='profile', description='Мой профиль')]
    await bot.set_my_commands(commands, BotCommandScopeDefault())


# Функция, которая выполнится когда бот запустится
async def start_bot():
    await set_commands()



async def main():
    # регистрация роутеров
    dp.include_router(start_router)
    dp.startup.register(start_bot)
    
    # запуск бота в режиме long polling при запуске бот очищает все обновления, которые были за его моменты бездействия
    try:
      await bot.delete_webhook(drop_pending_updates=True)
      await dp.start_polling(bot, allowed_updates=dp.resolve_used_update_types())
    finally:
      await bot.session.close()


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

Sign up to leave a comment.

Articles