lexxand, парочку. Выбирал регистратора перечитав кучу обзоров и отзывов. DirectNic - самый независимый и безконфликтный, на сколько у меня сложилось впечатление.
nevantain, и, я так понимаю, сохраняет результат своей работы на диск? Вот только вызов асинхронной функции возвращает сопрограмму, которая может быть выполнена асинхронно, а не результат её выполнения. BuildGraph же напротив синхронная и может заблокировать бот, если будет вызвана в цикле событий. Вам стоит или разобраться с асинхронностью или использовать синхронный фреймворк.
Дмитрий, во-первых, выбирать более конкретные имена для моделей и переменных. Во-вторых, сомневаюсь, что в вашей доменной области вообще нужна модель для возврата.
Да, книг будет достаточно, если с ними правильно работать и практиковать прочитанное.
Горевать и пытаться это исправить, так как нечитающих программистов не бывает.