Задать вопрос
@kefirich

Return list выводит ошибку. Как исправить?

есть функция, которая выводит список. Все работает корректно, но иногда может появиться ошибка:
TypeError: string indices must be integers, not 'str'

Как я могу ее исправить?
def get_user_guilds():
    oauth2_token = session.get('oauth2_token')
    discord = make_session(token=oauth2_token)
    guilds = discord.get(API_BASE_URL + '/users/@me/guilds').json()

    return guilds


def get_user_managed_servers(guilds):
    return list(
        filter(
            lambda g: (g['owner'] is True) or
            bool((int(g['permissions']) >> 5) & 1),
            guilds)
    )

@app.route('/servers')
def servers():
    guilds = get_user_guilds()
    user_servers = get_user_managed_servers(guilds)
    return render_template('select-server.html', user_servers=user_servers)
  • Вопрос задан
  • 104 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 2
Mike_Ro
@Mike_Ro
Python, JS, WordPress, SEO, Bots, Adversting
А дебажить кто будет, а логгирование ошибок кто будет вести? Походу guilds не всегда является списком словарей.
Все работает корректно, но иногда может появиться ошибка:
TypeError: string indices must be integers, not 'str'

Хорошо бы полный traceback ошибки (втч. номера строк) видеть.
Ответ написан
fenrir1121
@fenrir1121
Начни с документации
Потому что вместо словаря приходит строка, где вы пытаетесь обратиться по строковому индексу.
Где именно - разбирайтесь, в вопросе информации недостаточно, но вероятно в
filter(
            lambda g: (g['owner'] is True) or
            bool((int(g['permissions']) >> 5) & 1),
            guilds)

Читайте что может возвращать метод discord.get()
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы