NameError: name 'ActivityType' is not defined

t = ctx.message.author.activity.name 

print('Имя:')
print(t)

activitys_type = str(ctx.author.activities[0].type)
print('Тип:')
print(activitys_type)
    if activitys_type is not None:
        if activitys_type is ActivityType.playing:
            idraw.text((40, 170), f'Играет в {t}', font = normaltext)

Этот код должен показывать мне Деятельность человека. Мучаюсь около часа и не могу понять в чём проблема, помогите пожалуйста! Также if ctx.author.activities[0].type == str('ActivityType.playing'): не выдаёт ошибку в консоль, но также и не выводит деятельность человека.


Ответы (2 шт):

Автор решения: DWolf_19

Вам не нужно преобразовывать ctx.author.activities[0].type в str. В строке if activitys_type is ActivityType.playing: вы сравниваете строку с классом, поэтому там будет априори False.

Так же и в if ctx.author.activities[0].type == str('ActivityType.playing'): будет всегда False, но здесь вы уже зачем-то преобразуете обращение к классу.свойство к строке, в этом состоянии оно не имеет никакого смысла, не говоря уже о том, что преобразуется фактически строка к строке :)

Пример команды:

async def activity(ctx):
    activity_name = ctx.message.author.activity.name 
    activity_type = ctx.author.activities[0].type

    print(f'Имя:\n{activity_name}')
    print(f'Тип:\n{activity_type}')

    if activity_type is not None and activity_type == discord.ActivityType.playing:
        idraw.text((40, 170), f'Играет в {activity_name}', font=normaltext)
→ Ссылка
Автор решения: Влад Новиков

Вот кому нужен готовый, без ошибок код для написания с помощью библиотеки PIL активности игрока:

activity_name = ctx.message.author.activity.name if ctx.message.author.activity is not None else "Не чего не делает"
if activity_name == "Не чего не делает":
    # print('Не во что не играет')
    pass

if activity_name != "Не чего не делает":
    # print('во что то играет!')
    activity_type = ctx.author.activities[0].type



activity_type2 = ctx.message.author.activity # если нету то None
    if activity_type2 is not None and activity_type == discord.ActivityType.playing:
        idraw.text((40, 170), f'Играет в {activity_name}', font=normaltext)
→ Ссылка