Как я могу проверить, есть ли у участника аватар по умолчанию?

Я видел несколько сообщений по этой теме, но они мне не особо помогли. Я хочу проверить событие on_member_join, является ли аватар пользователя default или нет. Если это default, то пользователя следует забанить, если нет, то нет.

Я уже разработал код, но он блокирует участника, даже если изображение профиля не по умолчанию:

@client.event
async def on_member_join(member):
    has_avatar = client.check(lambda ctx: ctx.avatar_url != ctx.author.default_avatar_url) # Seen from another post
    if has_avatar:
        await member.ban(reason = "Default avatar")
    else:
        channel1 = client.get_channel(ChannelID)
        await channel1.send("No default avatar")

Я также пытался сравнить member.avatar с аватаром default, но это не сработало. Что я делаю неправильно?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
25
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Я огляделся в поисках тебя. Я проверил документацию по членам и пользовательским классам. Я ничего не нашла на аватарке. Я не уверен, возможно ли это.

вопрос, на который я смотрел, имел это как решение. Однако это для команды, а не для события. Вот почему я подумал, что это возможно.

Mike Teston 09.04.2021 19:35

Это невозможно с помощью обычной библиотеки discord.py, но я бы предложил альтернативу. Используйте PIL для сравнения аватара пользователя (с помощью discord.py вы действительно можете загрузить аватар).

Что я имею в виду? Допустим, у вас есть папка «Аватары по умолчанию» со всеми аватарами по умолчанию. Вы сравниваете аватар пользователя с каждым файлом в папке, если он соответствует любому из изображений, аватар используется по умолчанию, в противном случае - пользовательский.

Я никогда не работал с PIL, но нашел вот что: Сравнить изображения Python PIL может быть, и, может быть, это поможет вам с вашей проблемой. Я бы посоветовал подробнее изучить PIL, поскольку это интересная библиотека.

Неужели невозможно? Я нашел еще один вопрос, который немного устарел, но имел это как решение для команды, и, похоже, он работал. Однако я просто хочу это как event

Mike Teston 09.04.2021 19:36
Ответ принят как подходящий

Есть возможность проверить, есть ли у пользователя аватар. Для этого вам понадобится только member.avatar.

Вы можете построить свой код на основе этого:

@client.event
async def on_member_join(member):
    channel1 = client.get_channel(YourChannelID)
    if not member.avatar: # If there is no avatar
        await member.ban(reason = "No avatar!")
    else:
        await channel1.send("Avatar!")

Ознакомьтесь с документы для получения дополнительной информации.

Спасибо, это помогло!

Mike Teston 09.04.2021 20:34

Другие вопросы по теме