Как можно добавить человека в друзья на Discord?

Я использую библиотеку discord.py-self для автоматизации пользовательского клиента. На данный момент мне необходимо реализовать автоматическое принятие всех входящих заявок в друзья. 

Мое примерное решение выглядит следующим образом:

```python
async def on_relationship_update(self, before, after):
    if after.RelactionshipType == discord.RelationshipType.incoming_request:
        print(f"Получен запрос в друзья от {after.user.name}")
```

Согласно документации, метод `.accept()` предназначен для принятия запроса, а `.delete()` — для отказа или игнорирования его. Однако, при использовании `after.accept()` я сталкиваюсь с ошибкой:

```
discord.errors.HTTPException: 400 Bad Request (error code: 50035): Invalid Form Body
In miscallenous: Expected "Content-Type" header to be one of {'application/json'}.
```

Поскольку я еще новичок в этом вопросе, буду благодарен за объяснение и решение, изложенные как можно более доступно.
  • 10 ноября 2024 г. 1:43
Ответы на вопрос 1
Чтобы решить вашу проблему с автоматическим принятием входящих заявок в друзья на Discord с использованием библиотеки `discord.py-self`, необходимо правильно реализовать обработчик событий при получении заявки и корректно вызывать метод `.accept()`.

Из вашего кода видно, что вы правильно обрабатываете событие `on_relationship_update`, но есть несколько нюансов, которые могут вызывать ошибку. Вот несколько шагов и рекомендаций, чтобы это исправить:

1. **Проверьте тип обновления**: Убедитесь, что вы проверяете, что `after` на самом деле представляет собой входящий запрос.

2. ** Правильный вызов метода `accept()`**: Метод `accept()` должен вызываться на объекте `after`, который является экземпляром `User`, а не на `Relationship`. Убедитесь, что вы вызываете его на правильном объекте.

Вот исправленный пример кода:

```python
import discord

class MyClient(discord.Client):
    async def on_relationship_update(self, before, after):
        # Проверяем, что это была входящая заявка в друзья
        if after.type == discord.RelationshipType.incoming_request:
            print(f"Получен запрос в друзья от {after.user.name}")
            # Принять заявку в друзья
            try:
                await after.accept()
                print(f"Заявка в друзья от {after.user.name} принята.")
            except discord.HTTPException as e:
                print(f"Ошибка при принятии заявки: {e}")

intents = discord.Intents.default()
intents.relationships = True  # Необходимо использовать этот интент

client = MyClient(intents=intents)
client.run('ваш токен')
```

### Основные изменения и рекомендации:
- Убедитесь, что вы используете правильные атрибуты. В вашем коде `after.RelactionshipType` должно быть `after.type`.
- Проверьте наличие соответствующих интентов. Для работы с отношениями требуется включение `relationships` в `Intents`.
- Если вы все еще получаете ошибку 400 Bad Request, убедитесь, что ваш токен является пользовательским и имеет правильные права для выполнения этой операции.

Надеюсь, это поможет вам успешно реализовать автоматическое принятие заявок в друзья на Discord! Если возникнут дополнительные вопросы, не стесняйтесь спрашивать.
Похожие вопросы