def get_user_managed_servers(guilds):
try:
return list(filter(lambda g: (g['owner'] is True) or bool((int(g['permissions']) >> 5) & 1), guilds))
except:
print('error with return user managed guilds ;(')
guilds = get_user_guilds()
return list(filter(lambda g: (g['owner'] is True) or bool((int(g['permissions']) >> 5) & 1), guilds))
#return []
File "/app/main.py", line 141, in <lambda>
return list(filter(lambda g: (g['owner'] is True) or bool((int(g['permissions']) >> 5) & 1), user_guilds))
~^^^^^^^^^
TypeError: string indices must be integers, not 'str'
Проблема с типом данных
В фильтре вы используете конструкцию:
int(g['permissions']) >> 5
Это предполагает, что g['permissions'] всегда будет преобразуемо в int. Если g['permissions'] имеет строковый формат или тип None, вызов int() может привести к исключению ValueError или TypeError.
Рекомендация: Перед выполнением битовой операции убедитесь, что данные корректны, например, добавив проверку:
Все работало, а сегодня при повторном запуске скрипта получаю ошибки.
TypeError: string indices must be integers, not 'str'еще раз, тут тебе питон пишет что у тебя не dict