Discord – это одна из самых популярных платформ для общения геймеров в мире. Discord для общения возможно, но Discord API, которая открывает доступ к различным аспектам Discord, таким как текстовые каналы, голосовые каналы и т. д., является ключевым фактором для популярности Discord. Есть целый ряд библиотек Python, которые позволяют создавать ботов и интегрировать Discord в свою игру или приложение. Discord.py – это одна из таких библиотек, которая позволяет создавать ботов для Discord. В этой статье мы обсудим, как редактировать Embed в Discord.py.
Discord.py позволяет создавать встроенные сообщения с помощью класса Discord.Embed. Embeds могут использоваться для представления информации об игре, статистике игрока и любой другой информации, которую вы хотите поделиться с пользователем Discord. Embed может содержать заголовок, описание, изображение, ссылки, цвет, поля и дополнительные флаги. Но прежде чем мы начнем, необходимо убедиться в двух вещах:
– Вы знаете, как создать Embed в Discord.py.
БОТ для Discord [ 7 ] | Embed. Красивый вывод
– Вы установили Discord.py и имеете доступ к Discord API.
В этой статье мы используем Python 3.7 и Discord.py 1.7.3. Также мы будем редактировать Embed, которая уже создана.
Шаг 1. Получить объект сообщения и Embed для редактирования
Первым шагом является получение объекта сообщения и Embed, который мы хотим отредактировать. Это можно сделать с помощью методов discord.Client.get_channel() и discord.Message.get_embeds().
import discord client = discord.Client() channel_id = 123456789 # ID of the channel where the message is located message_id = 987654321 # ID of the message you want to edit async def edit_embed(): channel = await client.get_channel(channel_id) message = await channel.fetch_message(message_id) # Get the first embed of the message embed = message.embeds[0] # Your code here client.run(‘your_bot_token’)
Шаг 2. Редактирование заголовка и описания
async def edit_embed(): channel = await client.get_channel(channel_id) message = await channel.fetch_message(message_id) # Get the first embed of the message embed = message.embeds[0] # Set a new author name embed.set_author(name=’New Author Name’) # Set a new description embed.set_description(‘New description for the Embed’) # Update the message with the new Embed await message.edit(embed=embed)
Шаг 3. Добавление изображений и ссылок
Вы можете добавить изображения и ссылки к Embed с помощью метода Discord.Embed.set_image() и Discord.Embed.set_url(). Как и в предыдущем шаге, необходимо пересоздать Embed в сообщении с помощью метода discord.Message.edit().
import io import requests async def edit_embed(): channel = await client.get_channel(channel_id) message = await channel.fetch_message(message_id) # Get the first embed of the message embed = message.embeds[0] # Set a new image response = requests.get(‘https://i.imgur.com/Ux6VFnq.png’) # Use your own image URL here image_bytes = io.BytesIO(response.content).read() embed.set_image(url=’attachment://image.png’) # Set a new URL embed.set_url(‘https://www.example.com’) # Update the message with the new Embed and image await message.edit(embed=embed, files=[discord.File(image_bytes, ‘image.png’)])
В коде выше мы загружаем изображение из внешнего источника, сохраняем его в BytesIO и передаем его в метод files при обновлении Embed. Также мы устанавливаем значение url в set_image(), чтобы изображение было правильно отображено в Embed.
Как создать бота для Discord? #3 | Эмбеды (Embed) | discord.py
Шаг 4. Добавление порядкового номера поля
Вы можете добавлять поля в Embed с помощью метода Discord.Embed.add_field(). Вы также можете добавить порядковый номер к полям с помощью параметра inline. inline определяет, будут ли поля расположены на одной строке или на разных строках. Его значение по умолчанию равно False. Как и в предыдущих шагах, необходимо пересоздать Embed с помощью метода discord.Message.edit() после редактирования полей.
async def edit_embed(): channel = await client.get_channel(channel_id) message = await channel.fetch_message(message_id) # Get the first embed of the message embed = message.embeds[0] # Add a new field with an order number embed.add_field(name=’New Field’, value=’This is a new field which has an order number’, inline=False) # Update the message with the new Embed await message.edit(embed=embed)
Шаг 5. Изменение цвета Embed
Вы можете изменять цвет Embed с помощью параметра color в Discord.Embed(). Метод Discord.Colour.from_rgb() используется для создания цвета на основе RGB-значений. Как и в предыдущих шагах, необходимо пересоздать Embed с помощью метода discord.Message.edit() после установки нового цвета.
async def edit_embed(): channel = await client.get_channel(channel_id) message = await channel.fetch_message(message_id) # Get the first embed of the message embed = message.embeds[0] # Set a new color embed.color = discord.Colour.from_rgb(255, 0, 0) # Update the message with the new Embed await message.edit(embed=embed)
Это была подробная статья по редактированию Embed в Discord.py. Discord.py является замечательной библиотекой для создания ботов для Discord, которая позволяет взаимодействовать с многими аспектами Discord. Embeds – это широко используемый способ передачи информации в Discord, и их редактирование очень важно при создании бота. В этой статье мы рассмотрели основные шаги редактирования Embed в Discord.py, такие как изменение заголовка и описания, добавление изображений и ссылок, добавление порядкового номера поля и изменение цвета Embed.
Похожие записи:
- Как редактировать embed message? [Discord.js]
- Не выводится embed.set_footer Discord.py
- discord embed форматирование
- Как использовать Passport-Discord для аутентификации через Discord в Node.js?
- Создание Discord-ботов на Ruby: Как создать Discord-ботов на Ruby.
Источник: qaa-engineer.ru
Вставить изображение
Я выбираю случайную строку из списка (которая является ссылкой на изображение кота), а затем вставка должна публиковать это изображение, однако это не так, и это выглядит следующим образом:
Если я положу ссылки в свой браузер, они будут работать нормально.
Я попытался использовать random и random.choice но это тоже не сработало.
python python-3.x discord discord.py
1 ответ
0 Tristo [2018-09-07 13:23:00]
Поэтому, чтобы заставить ваш код работать, вы должны изменить URL-адрес своего изображения на что-нибудь еще
Например, я повторно загрузил одну и ту же картинку в imgur и вставил ссылку, и теперь она работает
Это может иметь какое-то отношение к прямым ссылкам imgur, но я точно не знаю
Полный рабочий код:
Источник: qarchive.ru
Discord.py Изменение размера файла для добавления пользовательских смайлов
Что я пытаюсь сделать: У меня есть событие on_message для созданной мной команды «глобального чата». Это будет отправлять сообщения на любой сервер, который был в json, в настоящее время поддерживая изображения, несколько строк текста и настраиваемые смайлы (при условии, что бот совместно использует сервер с указанными смайликами).
Моя проблема: Как вы можете видеть на изображении выше, у одного человека, «S o u p», изображение профиля заменено на смайлик с уткой. Ради контекста, их аватар — это не смайлик-утка. Однако, если вы просматриваете самое последнее сообщение, отображается изображение профиля. Я считаю, что проблема в размере аватара message.author . Библиотека PIL может быть хорошим решением, но я, не, хочу сохранить изображение.
Код, который я пробовал:
avatar_bytes = await message.author.avatar_url.read() guildem = client.get_guild(738285544911405107) try: em = await guildem.create_custom_emoji(name=f», image=avatar_bytes) except: em = ‘?’
Приведенный выше код — это тот, который я использовал в приведенном мной примере изображения.
avatar = message.author.avatar_url_as(size=128) # resize avatar avatar_bytes = await avatar.read() # then read as bytes?
Приведенный выше код дает точно такие же результаты. Аватары превращаются в смайлики уток.
Другие, на которые я смотрел:
- Как обрезать изображение до формы, например. круг с помощью подушки в Discord.py?: сообщения не отправлялись при использовании кода здесь. Я предположил, что использование библиотеки PIL поможет значительно уменьшить размер файла в ту или иную сторону без сохранения изображения.
- Как уменьшить размер файла изображения с помощью PIL: Все ответы требовали сохранения изображения, чего я не хочу делать. Я попытался немного подправить код, но все аватары превратились в смайлики уток.
При необходимости включу все мероприятие on_message . Однако это не кажется уместным и необязательным, поскольку смайлики являются лишь небольшой частью указанного события.
Обновлено: вот код всего события on_message .
Комментарии (6)
Вы можете поделиться своим кодом?
Код события on_message был отредактирован, включая комментарии для чтения.
Источник: reddeveloper.ru