Как отправить embed сообщение discord от своего имени
Перейти к содержимому

Как отправить embed сообщение discord от своего имени

  • автор:

Как сделать сообщение в рамочке от своего имени в discord?

60b7a8b41ef0a412839640.jpeg

Как сделать в чате дискорд сообщение в красивой рамочке от имени своего аккаунта, а не бота? Вот пример:

  • Вопрос задан более двух лет назад
  • 1046 просмотров

Решения вопроса 1

Andrew_Dark

Andrew Dark @Andrew_Dark

Andrew Dark#9249

QQ
В общем, открываешь консольку в ДС, и вставляешь данный код заменяя что тебе нужно:

(async (msg) => < Array.prototype.last = function()return await fetch(`https://discord.com/api/v6/channels/$/messages`, < method: 'POST', headers: < 'Content-Type': 'application/json', authorization: Object.values(webpackJsonp.push([[],>,[['']]]).cache).find(m=>m.exports&&m.exports.default&&m.exports.default.getToken!==void 0).exports.default.getToken() >, body: JSON.stringify(msg) >) >)(< "tts": false, "embed": < "title": "Заголовок", "description": "Описние", "color": 0x00ff11 >, "allowed_mentions": < "parse": [] >>)

Всё делай на свой страх и риск! За злоупотребление посчитают за селфбота, и bb аккаунт.

Ответ написан более двух лет назад

Как отправить Эмбед сообщение в Discord

Обсудим все существующие способы отправки Эмбед сообщений а существует их достаточно. Быстро и понятно.

18 августа 2023, пятница 10:36
KalIvan [ ] для раздела Блоги

реклама

Всем привет други и подруги !

В этой статье мы поговорим про такой стиль сообщений Discord как эмбед. Да да я про то красивое сообщение с цветной полоской с лева.

реклама

И так я знаю всего 2 способа отправки таких сообщений:

1)Через скрипт на Python

реклама

И так преступим, для первого способа вам не понадобится каких либо трудных действий, но судите сами если у вас нет Python и вы за программирование не шарите то смотрите второй способ.

Скрипт на Python (Этот способ подойдёт для тех кто хочет создать бота для сервера и чтоб этот бот постоянно кому-то что-то кидал, а если вам на 1 раз то луч второй способ)

реклама

Для создания Эмбед сообщения можно использовать 2 библиотеки разницы нет покажу обе.

disnake

Что бы пользоваться этой библиотекой вам надо её установить разумеется как это делать если не знаете то погуглите там ничего сложного нет.

И так приступим к написанию кода.

  1. Импортируем библиотеку и с помощью второй строки упрощаем жизнь.
  2. Также прописывайте это (чтоб дать боту дефолтные разрешения )
реклама

3. Далее надо создать префикс обязательно (это такой символ с помощью которого бот понимает ,что это команда для него). В моём примере префиксом является » # » но вы можете выбрать любой свой.

4. Можно создать команду чтоб понять что код запущен и ошибок в нём нет.

5. Создаём сам эмбед.В данном случае команда называется embed а это значит чтоб вызвать эмбед в сообщениях нужно использовать эту команду #embed

title — это заголовок эмбеда

description — это описание

embed.description — также может что либо в ставить в описание.

embed.add_field — это пункты

name — имя пункта

value — что ты хочешь написать в пункте.

color=disnake.Color.from_rgb — команда для выбора цвета полосы с лева (в RGB) код цвета можно узнать в гугле ну а также есть базовые цвета в самой библиотеке к примеру вот.

ОБЯЗАТЕЛЬНО В НУТРИ НАШЕЙ ФУНКЦИИ ПРОПИСЫВАЕМ ЭТО ЧТОБ БОТ ОТПРАВИЛ СООБЩЕНИЕ ТУДА ОТ КУДА ОНО БЫЛО ВЫЗВАНО

И в конце скрипта ставим эту команду и в кавычках токен вашего бота

ВСЁ ДРУЗЬЯ БОТ ГОТОВ ЗАПУСКАЕМ СКРИПТ А СЛЕДОВАТЕЛЬНО БОТА

Выглядит примерно так по итогу.

discord.py

В плане кода вся та же дичь ток disnake меняем на discord

Эмбед будет выглядеть абсолютно так же.

Discohook (вот ссылка https://discohook.org/)

Для этого вам нужно создать вебхук на сервере

Тут на вкладке канал можно выбрать на какой канал отправится сообщение

И сразу же копируем URL вебхука

Кликаем на Clear ALL

вставляем ссылку на наш вебхук

Тыкаем ниже кнопку Add Embed

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

Когда всё настроили кликаем по кнопке Send

И всё сообщение на сервере.

Эмбеды

Возможно, вы видели некоторые специальные сообщения в Discord (часто отправляемые ботами/вебхуками), которые имеют цветную рамку, встроенные изображения, текстовые поля и другие свойства. Эти элементы называются Эмбедами, и в этом разделе будет рассказано, как вы можете создать и отправить их с помощью своего бота. Это делается с помощью объекта Embed .

В этом разделе будут подробно рассмотрены атрибуты и методы, используемые в эмбедах. Таким образом, мы рекомендуем перейти к нужной вам теме через оглавление.

Предпросмотр эмбеда​

Вот пример того, как может выглядеть эмбед. Мы рассмотрим конструкцию эмбеда в следующей части этой статьи.

Disnake Bot Bot 05/16/2023

Автор эмбеда

Описание эмбеда
Обычный заголовок
Обычное значение
Встроенный заголовок
Встроенное значение
Встроенный заголовок
Встроенное значение
Встроенный заголовок
Встроенное значение

Футер эмбеда • 01/01/2077

Код для этого эмбеда приведен ниже.

import disnake from disnake.ext import commands  # Внутри команды, прослушивателя событий и т.д. embed = disnake.Embed(  title="Заголовок эмбеда",  description="Описание эмбеда",  color=disnake.Colour.yellow(),  timestamp=datetime.datetime.now(), ) embed.set_author(  name="Автор эмбеда",  url="https://disnake.dev/",  icon_url="https://disnake.dev/assets/disnake-logo.png", ) embed.set_footer(  text="Футер эмбеда",  icon_url="https://disnake.dev/assets/disnake-logo.png", ) embed.set_thumbnail(url="https://disnake.dev/assets/disnake-logo.png") embed.set_image(url="https://disnake.dev/assets/disnake-thin-banner.png") embed.add_field(name="Обычный заголовок", value="Обычное значение", inline=False) embed.add_field(name="Встроенный заголовок", value="Встроенное значение", inline=True) embed.add_field(name="Встроенный заголовок", value="Встроенное значение", inline=True) embed.add_field(name="Встроенный заголовок", value="Встроенное значение", inline=True)  await ctx.send(embed=embed) 

Нет строгой необходимости использовать все элементы, представленные выше. Вы можете оставить некоторые из них в соответствии с вашими потребностями.

Цвет вставки (с помощью параметра color ) принимает экземпляр Colour , шестнадцатеричная строка или целое число.

Чтобы добавить пустое поле для эмбеда, вы можете использовать embed.add_field(name=’\u200b’, value=’\u200b’) .

Создание эмбеда​

Вы можете использовать Embed для создания эмбедов и манипулирования ими.

embed = disnake.Embed(  title="Заголовок эмбеда",  description="Описание эмбеда",  colour=0xF0C43F, ) 

Disnake Bot Bot 05/16/2023
Заголовок эмбеда
Описание эмбеда

Установка автора​

Вы можете указать автора эмбеда с помощью метода set_author . Обратите внимание, что этот код запускается после того, как вы определили embed через embed = disnake.Embed(. ) .

embed.set_author(  name="Автор эмбеда",  url="https://disnake.dev/",  icon_url="https://disnake.dev/assets/disnake-logo.png", ) 

Disnake Bot Bot 05/16/2023

Автор эмбеда

Заголовок эмбеда
Описание эмбеда

Поскольку в этом случае мы установили URL-адрес, нажатие на «Автор эмбеда» перенаправит пользователя на сайт disnake.dev .

Установка футера​

Вы можете указать футер эмбеда с помощью метода set_footer . Обратите внимание, что этот код запускается после того, как вы определили embed через embed = disnake.Embed(. ) .

embed.set_footer(  text="Футер эмбеда",  icon_url="https://disnake.dev/assets/disnake-logo.png", ) 

Disnake Bot Bot 05/16/2023

Автор эмбеда

Заголовок эмбеда
Описание эмбеда

Футер эмбеда

Установка миниатюры​

Вы можете указать миниатюру с помощью метода set_thumbnail . Обратите внимание, что этот код запускается после того, как вы определили embed через embed = disnake.Embed(. ) .

embed.set_thumbnail(url="https://disnake.dev/assets/disnake-thin-banner.png") 

Disnake Bot Bot 05/16/2023

Автор эмбеда

Embed Thumbnail

It is shown in the top-right corner of the embed. You can set this as a URL, but disnake also allows you to use a locally stored file instead, using the file parameter.

Футер эмбеда • 01/01/2077

Использование временных отметок​

Временные отметки отображаются возле футера эмбеда, указывая время, в которое было отправлен/инициирован эмбед. Это можно сделать с помощью параметра timestamp disnake.Embed() . Обратите внимание, что вам нужно будет импортировать пакет datetime в ваш код.

import datetime  # Внутри команды, прослушивателя событий и т.д. embed = disnake.Embed(  title="Эмбед!",  description="Описание",  colour=0xF0C43F,  timestamp=datetime.datetime.now(), ) 

Disnake Bot Bot 05/16/2023

Автор эмбеда

Временные отметки

Футер эмбеда • 01/01/2077

Добавление полей​

Поля эмбеда имеют два параметра — название (или заголовок) и значение внутри с помощью метода add_field . Также можно использовать markdown в обоих параметрах.

# Обычные поля embed.add_field(name="Обычный заголовок", value="Обычное значение", inline=False)  # Встроенные поля embed.add_field(name="Встроенный заголовок", value="Встроенное значение", inline=True) embed.add_field(name="Встроенный заголовок", value="Встроенное значение", inline=True) embed.add_field(name="Встроенный заголовок", value="Встроенное значение", inline=True) 

Disnake Bot Bot 05/16/2023

Автор эмбеда

Заголовок эмбеда
Описание эмбеда
Обычный заголовок
Обычное значение
Встроенный заголовок
Встроенное значение
Встроенный заголовок
Встроенное значение
Встроенный заголовок
Встроенное значение

Футер эмбеда • 01/01/2077

Эти атрибуты также полностью поддерживают использование markdown, а также выделение ссылок. Вы также можете вставлять поля в определенную позицию с указанным индексом, используя embed.insert_field_at(index, . ) .

Добавление изображений​

Это можно сделать с помощью методв set_image , который принимает либо ссылку, либо объект File .

# Используя ссылку embed.set_image(url="https://disnake.dev/assets/disnake-thin-banner.png")  # Используя локальный файл embed.set_image(file=disnake.File("path/to/file.png")) 

Disnake Bot Bot 05/16/2023

Автор эмбеда

Изображения

Футер эмбеда • 01/01/2077

Отправка эмбеда​

Как только эмбед будет создан, вам также нужно отправить его в канал. Это означает, что вам нужно вызвать метод send(embed=embed) для объекта, например объекта TextChannel (т.е. message.channel.send ) или объекта Context ( ctx.send ). В противном случае эмбед не будет отправлен.

Словарь в эмбед​

Тип данных dict (и, по сути, файл json ) может быть преобразован в вложение, используя метод Embed.from_dict() . Мы можем воссоздать вставку, сделанную в начале этой страницы, используя то же самое.

embed_dict =   "title": "Заголовок эмбеда", "description": "Описание эмбеда", "color": 0xFEE75C, "timestamp": datetime.datetime.now().isoformat(), "author":   "name": "Автор эмбеда", "url": "https://disnake.dev/", "icon_url": "https://disnake.dev/assets/disnake-logo.png", >, "thumbnail": "url": "https://disnake.dev/assets/disnake-logo.png">, "fields": [ "name": "Обычный заголовок", "value": "Обычное значение", "inline": "false">, "name": "Встроенный заголовок", "value": "Встроенное значение", "inline": "true">, "name": "Встроенный заголовок", "value": "Встроенное значение", "inline": "true">, "name": "Встроенный заголовок", "value": "Встроенное значение", "inline": "true">, ], "image": "url": "https://disnake.dev/assets/disnake-thin-banner.png">, "footer": "text": "Футер эмбеда", "icon_url": "https://disnake.dev/assets/disnake-logo.png">, >  await channel.send(embed=disnake.Embed.from_dict(embed_dict)) 

Это даст точно такой же результат, как и встраивание, показанное здесь. Обратите внимание, что временная отметка, передаваемая через словарь, должна быть в формате ISO8601 (что было достигнуто здесь с помощью datetime.datetime.now().isoformat() ). Вы можете узнать больше о формате вложений dict в официальной документации Discord.

Примечания​

  • Для отображения полей рядом друг с другом необходимо, чтобы по крайней мере для двух последовательных полей было установлено значение inline=True .
  • Временная отметка автоматически настраивает часовой пояс в зависимости от устройства пользователя.
  • Упоминания любого рода в эмбедах будут корректно отображаться только в пределах описания и значений полей эмбеда.
  • Упоминания во вложениях не будут вызывать уведомление.
  • Эмбеды позволяют маскировать ссылки (например, [Guide](https://guide.disnake.dev/ ‘optional hovertext’) ), но только в описании и значениях полей.

Ограничения​

Есть несколько ограничений, о которых следует помнить при планировании ваших эмбедов из-за ограничений API. Вот краткий список ограничений:

  • Заголовок эмбеда ограничен 256 символами.
  • Описание эмбеда ограничен 4096 символами.
  • Максимум 25 полей.
  • Название поля ограничено 256 символами и их значение 1024 символами.
  • Текст футера ограничен 2048 символами.
  • Имя автора ограничено 256 символами.
  • Сумма всех символов из всех структур эмбеда в сообщении не должна превышать 6000 символов.
  • Одно сообщение может содержать до 10 эмбедов.

Получившийся код​

Код, представленный на этой странице, можно найти в нашем репозитории GitHub здесь.

Создание discord-ботов на Python

В этой статье мы создаем своего дискорд-бота на боксе с нуля.

Подготовка

Предварительные действия на боксе такие же, как и в нашей статье про Telegram:

  • выбираем бокс
  • создаем пользователя
  • настраиваем окружение

Регистрация бота

Создание бота происходит в два этапа на сайте мессенджера. Сначала создаем приложение: «Разработчикам»(в футере) → «Applications», нажимаем кнопку «New Application» в правой верхней части страницы:

Выбираем имя приложения (выбирайте мудро, хоть его и можно изменить позже):

Готово. Здесь можно переименовать приложение, дать описание, загрузить аватарку:

Теперь добавим к нему бота. В меню слева вкладка «Bot» → «Add Bot» → «Yes, do it!».

Токен бота можно получить по кнопке Copy:

Если вдруг токен попал не только в ваши руки, его всегда можно заменить кнопкой Regenerate.

Добавление бота на сервер

Переходим на вкладку «OAuth2» и создаем для него свой URL для приглашения:

Чуть ниже выбираем права для бота. Если это бот для администрирования сервера, то можно, конечно, выбрать «Administrator», но нужно быть осторожными с этим.

Выдаем права, действительно нужные боту для администрирования сервера:

Теперь бота можно добавить на сервер. Копируем ссылку и открываем её в браузере. В диалоговом окне выбираем сервер:

Проверяем его привилегии:

Всё, бот на сервере:

Код бота

Активируем виртуальное окружение и ставим нужную библиотеку:

bot@box-48639:~$ source python/bin/activate (python) bot@box-48639:~$ pip install discord

Добавляем директорию для бота, не выходя виртуального окружения:

(python) bot@box-48639:~$ mkdir discobot

Создаем конфиг бота:

(python) bot@box-48639:~$ vim discobot/config.py

Наполняем его содержимым

settings =

  • token — токен бота
  • bot — имя бота
  • id — application ID: он находится под описанием приложения, в разделе «General Information»
  • prefix — если сообщение на сервере начинается с этого символа, бот воспримет его как свою команду.

Дальше код бота. Создаем bot.py и сразу редактируем его vim’ом:

(python) bot@box-48639:~$ vim discobot/bot.py

Первыми строками активируем виртуальное окружение и импортируем нужные модули:

import os, sys activate_this = '/home/bot/python/bin/activate_this.py' with open(activate_this) as f: exec(f.read(), ) import discord from discord.ext import commands from config import settings

Обозначаем боту, с какого символа начинаются его команды:

bot = commands.Bot(command_prefix = settings['prefix'])

И создаем первую команду — бот будет отправлять реплай с текстом “I’M ALIVE!” на сообщение “!status”:

@bot.command() async def status(ctx): await ctx.reply('I\’M ALIVE!')

Добавляем в код функцию запуска:

bot.run(settings['token'])

Закрываем редактор и запускаем бота:

(python) bot@box-48639:~$ python discobot/bot.py

Отправим сообщение в Discord:

Код бота целиком:

import os, sys activate_this = '/home/bot/python/bin/activate_this.py' with open(activate_this) as f: exec(f.read(), ) import discord from discord.ext import commands from config import settings bot = commands.Bot(command_prefix = settings['prefix']) @bot.command() async def status(ctx): author = ctx.message.author await ctx.reply('I\'M ALIVE!') bot.run(settings['token'])

Запуск бота

Создаем Linux-демона — он будет следить, что бот работает. Открываем файл (mlg, если нужно, меняем на своё имя сервиса):

root@box-48639:~# vim /etc/systemd/system/mlg.service

Добавляем в него строки:

[Unit] Description=Noscope Bot After=syslog.target After=network.target [Service] Type=simple User=bot WorkingDirectory=/home/bot/discobot ExecStart=/usr/bin/python3 /home/bot/discobot/bot.py Restart=always [Install] WantedBy=multi-user.target

И запускаем демона:

root@box-48639:~# systemctl daemon-reload root@box-48639:~# systemctl enable mlg root@box-48639:~# systemctl start mlg

Проверить, что всё работает, можно так:

root@box-48639:~# systemctl status mlg
● mlg.service - Noscope Bot Loaded: loaded (/etc/systemd/system/mlg.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2021-05-05 16:34:46 MSK; 7s ago Main PID: 307021 (python3) Tasks: 3 (limit: 2344) Memory: 21.4M CGroup: /system.slice/mlg.service └─307021 /usr/bin/python3 /home/bot/discobot/bot.py

Дополнение кода бота

Бот улучшается в два этапа:

  • добавляем код в файл бота
  • перезапускаем бота

Для примера добавим в бота какое-нибудь рандомное API. Открываем файл бота:

bot@box-48639:~$ vim ~/discobot/bot.py

И добавляем в него пару библиотек и ещё одну функцию обработки команд:

import json import requests @bot.command() async def meme(ctx): response = requests.get('https://some-random-api.ml/meme') json_data = response.json() embed = discord.Embed(title = json_data['caption']) embed.set_image(url = json_data ['image']) await ctx.send(embed = embed)

Закрываем файл и перезапускаем демона, чтобы изменения вступили в силу:

root@box-48639:~# systemctl restart mlg

Результатом будет рандомный мем:

Готово! Боты в Discord умеют многое, и мы можем и дальше расширять его возможности, изучая документацию.

Полезные ссылки

  • Официальная документация Discord
  • Документация discord.py
  • GitHub разработчиков модуля

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *