@Bezola

Как снять с пользователя роль с помощью id в discord.py?

Хочу снять роли со всех записанных пользователей в базе

JSON:
[{"author": 606893698198011913, "exp": 5, "hero": 0}], [{"author": 400230840417779712, "exp": 0, "hero": 0}]  # и т.д.


Пробовал вписывать id:
def load_stats_data():
    with open("stats.json", "r") as read_file:
        data = json.load(read_file)
        return data

users_data = list(load_stats_data())  # Получаем json

        with open("stats.json", "w") as f:
            for user in users_data:
                role_1 = user['author'].guild.get_role(834011803486257174)  # Снятие ролей
                await user['author'].remove_roles(role_1)
            json.dump(users_data, f)

Но выдает ошибку
AttributeError: 'int' object has no attribute 'guild'

Пробовал записывать в JSON ctx.author вместо ctx.author.id:
@bot.command()  # Регистрация
async def reg(ctx):
    author = ctx.author
    users_data = list(json_checker.load_stats_data())  # получаем данные со stats.json
    with open("stats.json", "w") as f:
        users_data.append({'author': ctx.author, 'exp': 0, 'hero': 0})
        json.dump(users_data, f)

Ошибка:
TypeError: Object of type Member is not JSON serializable
  • Вопрос задан
  • 617 просмотров
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Записывайте id, по id уже получайте объект пользователя, и потом делайте что нужно.

from discord.utils import get
user = get(bot.get_all_members(), id=user['author'])
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы