Как сделать сообщение в рамочке от своего имени в discord?
Как сделать в чате дискорд сообщение в красивой рамочке от имени своего аккаунта, а не бота? Вот пример:
- Вопрос задан более двух лет назад
- 1046 просмотров
Решения вопроса 1
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
Что бы пользоваться этой библиотекой вам надо её установить разумеется как это делать если не знаете то погуглите там ничего сложного нет.
И так приступим к написанию кода.
- Импортируем библиотеку и с помощью второй строки упрощаем жизнь.
- Также прописывайте это (чтоб дать боту дефолтные разрешения )
реклама
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 разработчиков модуля