Автор, а подскажи, зачем ты пользуешься асинхронным фреймворком, но самые тяжелые io выполняешь синхронно?
Потому что только на нем умеешь писать бота?
1.Ну, global base, cur вы указали. Но чтобы они работали, объявлять их нужно перед всеми функциями.
2.Не стоит подобным образом подключаться к базе. Если нет каких-то особых требований (а я более чем уверен, что их нет), лучше каждый раз создавать новое подключение, после чего закрывать его (или использовать контекстный менеджер)
Я об этом в предыдущем вопросе говорил уже. Советую сначала уделить внимание основам языка, а потом уже сюда лезть. Сейчас видно, что понабрали разного кода с разных источников и не разбираясь как оно работает, не читая документацию, хотите адаптировать этот код под свои нужды.