Ну еще мне кажется последний if там повторяется несколько раз проверка d == 256, нельзя ее поставить в начале if один раз? Просто как-то совсем некрасиво...
Александр Лях, ну, дебажить за тебя твой код я не могу, по ряду причин (во-первых, лень; во-вторых, нет некоторых твоих функций; в-третьих, лень);
я бы предложил разделить всё на части и, во-первых, каждую часть пробовать заменить заглушкой, возвращающей что-то ожидаемое и вменяемое, и смотреть, как работает остальная часть;
и, во-вторых, проверять каждую часть, верно ли она работает на типичных значениях и на крайних и других нетипичных значениях.
А то эту простыню ну трудно даже удержать в голове, особенно нетренированной...
EGORIKEBOLIK, в общем, суть такая: в python всё есть объект. У объектов есть атрибуты, которые суть тоже объекты. Каждый из них или параметр (значение какое-либо), или метод (точнее, ссылка на метод), который ченьть с родительским объектом делает (меняет его параметры или ещё ченьть.)
Так вот у вас объект groups не обладает таким атрибутом, как vk_api.
Более того, как раз объект groups является одним из атрибутов атрибута объекта vk_api. Внутри объект groups представляет из себя словарь (dict).
10farid10, согласен. Однако, за один день не надо бросаться сразу писать такой код. Начните с относительно простых вещей - разберитесь в объектной модели языка, это гораздо важнее, чем кажется.