Discord API: Как упомянуть роль в Embed?
Пишу в эмбеде <@id-роли>но выходит это @id-роли>
Отслеживать
задан 8 авг 2022 в 19:03
Dirfect Gigi Dirfect Gigi
3 1 1 серебряный знак 3 3 бронзовых знака
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Как же я сам до этого не додумался.
Отслеживать
ответ дан 8 авг 2022 в 19:46
Dirfect Gigi Dirfect Gigi
3 1 1 серебряный знак 3 3 бронзовых знака
2022. ухх. Вот, да. Написано на Disnake, пойдет 100% на Discord.Py. я нашел этот вопрос в вкладке текущие.
@bot.slash_command() async def hichat(inter): role = inter.guild.get_role(1184492430813298710) embed = disnake.Embed( title = "hichat", description=f" hi chat" ) await inter.send(embed=embed)
Отслеживать
ответ дан 19 дек 2023 в 17:16
Forevor Base Forevor Base
343 1 1 серебряный знак 9 9 бронзовых знаков
- api
- discord
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.3.8.5973
Как сделать так что бы дискорд бот упомянул роль?
Не работает. Выдает вот это
Sonada, полностью кусок кода можешь написать ? и попробуй еще через @&role_id
Sonada @Sonada Автор вопроса
Алексей, Извини что так долго не отвечал, были проблемы с инетом. В общем попробовал через @&role_id, ничего не выходит, а выдает @deleted-role роль (хотя роль на месте и не удалена) .
Sonada, в настройках у этой роли точно стоит «Позволить всем упомянать эту роль» ?
Sonada, можно попробовать и такой вариант
bot.guild.roles.find("name", "Название роли").name || '';
Sonada @Sonada Автор вопроса
Алексей, Да, в настройках стоит »Позволить всем @упомянуть эту роль»/ Не до конца понял что делать с bot.guild.roles.find(«name», «Название роли»).name || »;
Sonada, у тебя както странно, в первом комменте 1 ид, во втором, где роль удалена уже другой ид.
вобщем чтото вроде такого var role = message.guild.roles.get(«role_id»); , ну и потом role.name
Sonada @Sonada Автор вопроса
Алексей, Разные id из-за того что я пробовал с разными ролями, прости что усложняю?. Подожди, я что-то совсем запутался, мы создаем переменную role, а куда её потов девать?
Sonada, да куда хочешь девай, например так
bot.on("message", (message) => < if (. ) < var role = message.guild.roles.get("540638821612650517"); message.channel.send(< embed: < color: 3447003, description: ( role.name || 'такой роли не существует' ) >>); > >);
Sonada @Sonada Автор вопроса
Алексей, походу я слишком глуп для этого. Что я не так сделал?
Sonada, делаешь скриншоты кода, вместо копипаста
bot.on("message", (message) => < console.log(message.guild.roles); >);
сюда скопируй че у тебя выведется
Sonada @Sonada Автор вопроса
PS C:\Users\User\Desktop\MyBot> node index.js I am ready! C:\Users\User\Desktop\MyBot\index.js:114 description: ( role.name || 'такой роли не существует' ) ^ TypeError: Cannot read property 'name' of undefined at Client.hytale.on (C:\Users\User\Desktop\MyBot\index.js:114:29) at Client.emit (events.js:187:15) at MessageCreateHandler.handle (C:\Users\User\Desktop\MyBot\node_modules\discord.js\src\client\websocket\packets\handlers\MessageCreate.js:9:34) at WebSocketPacketManager.handle (C:\Users\User\Desktop\MyBot\node_modules\discord.js\src\client\websocket\packets\WebSocketPacketManager.js:103:65) at WebSocketConnection.onPacket (C:\Users\User\Desktop\MyBot\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:333:35) at WebSocketConnection.onMessage (C:\Users\User\Desktop\MyBot\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:296:17) at WebSocket.onMessage (C:\Users\User\Desktop\MyBot\node_modules\ws\lib\event-target.js:120:16) at WebSocket.emit (events.js:182:13) at Receiver._receiver.onmessage (C:\Users\User\Desktop\MyBot\node_modules\ws\lib\websocket.js:137:47) at Receiver.dataMessage (C:\Users\User\Desktop\MyBot\node_modules\ws\lib\receiver.js:409:14) PS C:\Users\User\Desktop\MyBot>
Sonada @Sonada Автор вопроса
Алексей, Я просто хочу что-бы бот выдавал что-то типо этого.
Как сделать так, чтобы бот упомянул роль?
Заголовки полей в embed’ах Discord’а поддерживают не весь Markdown.
Вы можете поместить упоминание роли в значение поля ( .addField(«Field name», «» ).
Помните: Упоминания в embed’ах не работают. Даже если они будут кликабельны, они не будут никого призывать. Призывание упоминаниями работает только в теле сообщения (content)
Ответ написан более трёх лет назад
Mikle123456789 @Mikle123456789 Автор вопроса
Блин, жалко. Просто я хотел сделать магазин в боте. Пример:
Роль.
Цена.
С помощью .addField(«», «Цена»)
Может есть выход как нибудь?
Mikle123456789, указывать название роли, например, вместо упоминания роли?
Mikle123456789 @Mikle123456789 Автор вопроса
Максим Невзоров, нет. Роль не красиво выглядит. И смайлики не те.
Ваш ответ на вопрос
Войдите, чтобы написать ответ
- Node.js
- +1 ещё
Как собрать проект чтобы в конце бандла были лицензии всех пакетов?
- 2 подписчика
- 17 часов назад
- 106 просмотров
Как упомянуть роль в вебхуке в Discord
Если у вас еще отсутствуют вебхуки для Discord, при помощи которых нужно отправлять сообщения на сервер, сначала понадобится создать интеграцию. Вместе с этим уже при наличии готового приложения надо скопировать на него ссылку, поскольку это нужно для будущей отправки сообщений. Осуществляется задача следующим образом:
- Откройте настройки сервера, слева выберите раздел «Интеграции», затем перейдите к настройке «Вебхуки».
- Создайте новый вебхук, что мы упомянем немного ниже, или выберите уже существующий для просмотра детальной информации.
- У каждого приложения есть свой URL, при помощи которого осуществляется его интеграция на разные сайты. Как раз эту ссылку и нужно скопировать для дальнейшего использования.
Если вы задались вопросом упоминания роли в вебхуке, но при этом еще ни разу не создавали собственную интеграцию или только находитесь на данном этапе, крайне полезно будет ознакомиться с другим нашим материалом по ссылке ниже. В нем вы получите всю информацию о создании первого вебхука на сервере и его правильном использовании. Это позволит далее полноценно использовать все инструкции, поняв, как упоминать роль при уже имеющихся знаниях в создании сообщений от бота.
Шаг 2: Копирование ID роли
Роль в вебхуке не получится упомянуть просто по ее названию, как это осуществляется непосредственно в Discord при отправке сообщений. Для этого необходимо использовать специальный код со вставкой ID роли. Скопировать такой идентификатор можно только при включенном режиме разработчика в Дискорде, об активации которого читайте в статье ниже.
Следующие действия заключаются в поиске необходимой роли и копировании ее идентификатора. Это можно сделать почти из любого места на сервере, где отображается информация о присвоенных ролях участникам, однако в большинстве случаев удобнее будет использовать настройки сообщества. В них есть как поиск, так и полный список всех ролей, что позволит без проблем скопировать ID нужной для дальнейшего упоминания в вебхуке.
- Разверните меню сервера, нажав по его названию. Из появившегося списка выберите пункт «Настройки сервера».
- Слева щелкните по категории «Роли».
- Для простоты можете использовать поиск, введя в соответствующей строке название роли для копирования ID.
- Теперь, когда режим разработчика включен, можно вызвать контекстное меню роли, кликнув по ее названию правой кнопкой мыши. Из него следует выбрать «Копировать ID роли». Числовой уникальный идентификатор сохранен в буфере обмена и может использоваться для самых разных целей.
Дополнительно отметим, что выше был показан исключительно один пример копирования ID роли. На самом деле в Discord можно копировать еще много разных идентификаторов, включая и отдельных пользователей. Это позволит по ID упоминать участников сервера через вебхуки, что осуществляется точно так же, как и при работе с ролями. Единственное — необходимо подобрать оптимальный вариант копирования этого самого ID.
Шаг 3: Упоминание роли в вебхуке
Основные подготовительные действия выполнены: у вас теперь есть как вебхук, так и идентификатор роли, через который ее можно будет упомянуть в автоматически отправляемом сообщении. Вы можете использовать самые разные сайты для подобных взаимодействий, но мы рассмотрим всего один общий пример, чтобы вы понимали, как работает синтаксис в таких настройках автоматизированных сообщений.
- Поскольку сообщение будет тестовым, на сайте по настройке рассылки можно удалить все заранее заданные настройки, используя кнопку «Clear All» или путем ручного удаления всех заполненных полей.
- В строку «Webhook URL» понадобится вставить ту самую ссылку на вебхук, которая была определена еще при помощи первой инструкции из нашего материала.
- В поле заполнения сообщения, которое обычно называется как «Content», вставьте код, имеющий вид . Соответственно id-role понадобится заменить на идентификатор роли, что видно на следующем изображении.
- Если используемый вам сайт поддерживает предпросмотр сообщения, то упоминание отобразится в формате @role. Это значит, что роль корректно упоминается, просто сам сайт не может отобразить ее текущее название, а на сервере все покажется корректно.
- Нажмите кнопку для теста или самостоятельно отправьте сообщение от вебхука при помощи кнопки «Send».
- Перейдите в чат, который настроен для принятия сообщений от интеграции, и посмотрите на появившееся уведомление. Указанная вами роль была успешно упомянута, а далее отображается введенное содержимое сообщения.
- Точно таким же образом, отдельно или через запятую, можно упомянуть в рамках одного сообщения неограниченное количество ролей, если это понадобится.
- В этом случае все тоже сработает корректно и вебхук выведет сообщение в таком виде, в котором оно и задумывалось.
- Если сообщение вроде бы было послано, но в Discord не отображается, откройте настройку интеграции и проверьте заданный канал, куда приходят сообщения от бота. Убедитесь в том, что в нем нет никаких отдельных ограничений для вебхуков или всех пользователей.