Как отправить embed-сообщение в личные сообщения участнику?

Как можно отправить участнику личное сообщение, которое будет содержать как текстовое сообщение, так и embed? У меня это удалось сделать только с простым текстом, но с embed возникли трудности.
  • 18 октября 2024 г. 20:42
Ответы на вопрос 2
Чтобы отправить пользователю личное сообщение с текстом и embed-элментом в Discord, вы можете использовать библиотеку Discord.py для Python. Вот пример того, как это сделать:

```python
import discord
from discord.ext import commands

# Создаём экземпляр бота
intents = discord.Intents.default()
intents.messages = True
intents.guilds = True
intents.members = True

bot = commands.Bot(command_prefix='!', intents=intents)

@bot.event
async def on_ready():
    print(f'Logged in as {bot.user}')

@bot.command()
async def send_embed(ctx, user: discord.User):
    # Создание embed-сообщения
    embed = discord.Embed(title="Привет!", description="Это embed-сообщение", color=0x3498db)
    embed.add_field(name="Поле 1", value="Значение поля 1", inline=False)
    embed.add_field(name="Поле 2", value="Значение поля 2", inline=False)

    # Отправка сообщения пользователю
    try:
        await user.send("Это текстовое сообщение перед embed:", embed=embed)
        await ctx.send(f"Сообщение отправлено {user.name}!")
    except Exception as e:
        await ctx.send(f"Не удалось отправить сообщение {user.name}. Ошибка: {e}")

# Запуск бота
bot.run('YOUR_TOKEN_HERE')
```

### Пояснения:

1. **Импортируем библиотеки**: Вам нужно установить библиотеку `discord.py`, если она у вас ещё не установлена. Это можно сделать с помощью команды `pip install discord.py`.

2. **Создаём объект бота**: Убедитесь, что вы используете правильные `intents`. В данном примере мы используем intents для получения доступа к сообщениям и участникам сервера.

3. **Команда `send_embed`**: В этом примере мы создали команду бота, которая может быть вызвана в чате, например, `!send_embed @username`. Эта команда отправит указанному пользователю личное сообщение с текстом и embed.

4. **Обработка исключений**: Код защищён от ошибок при отправке сообщения, и если что-то пойдёт не так, пользователь получит уведомление о неудаче.

5. **Замена токена**: Не забудьте заменить `'YOUR_TOKEN_HERE'` на ваш токен бота.

Обратите внимание, что бот должен иметь доступ к прямым сообщениям от пользователей, а сам пользователь должен быть в одном из серверов, где добавлен ваш бот.
.send(embed=Embed()) 
Примерно так. То есть в параметр метода send надо передать объект Embed

https://discordpy.readthedocs.io/en/latest/api.htm...
https://discordpy.readthedocs.io/en/latest/api.htm...
Похожие вопросы