Вебхуки
Сообщение
Объект сообщения приходит в ответ на отправку с ?wait=true, на получение и на правку сообщения вебхука. По составу он такой же, как в Discord.
Пример
{
"id": "1053147923963904",
"type": 0,
"channel_id": "1053143874918656",
"webhook_id": "1053143547551872",
"author": {
"id": "1053143547551872",
"username": "CI",
"global_name": null,
"discriminator": "0000",
"avatar": null,
"bot": true,
"public_flags": 0,
"avatar_decoration_data": null,
"collectibles": null
},
"content": "Сборка готова, @everyone",
"timestamp": "2026-10-28T08:30:00+00:00",
"edited_timestamp": null,
"tts": false,
"mention_everyone": true,
"mentions": [],
"mention_roles": [],
"attachments": [],
"embeds": [],
"components": [],
"reactions": [],
"pinned": false,
"flags": 0
}Поля сообщения
| Поле | Тип | Что это |
|---|---|---|
id | строка | Номер сообщения |
type | число | Вид сообщения. 0 обычное, 19 ответ на другое сообщение |
channel_id | строка | Номер канала |
author | объект | Автор сообщения, см. ниже |
webhook_id | строка | Номер вебхука. Есть только у сообщений вебхука |
content | строка | Текст сообщения. У сообщения с файлами это подпись, у сообщения без текста пустая строка |
timestamp | строка | Время отправки |
edited_timestamp | строка или null | Время последней правки, null если сообщение не меняли |
tts | логическое | Всегда false |
mention_everyone | логическое | true, если сообщение упоминает всех через @everyone или @here |
mentions | массив | Упомянутые люди, объекты пользователей |
mention_roles | массив | Номера упомянутых ролей |
attachments | массив | Вложения, см. ниже |
embeds | массив | Карточки |
components | массив | Всегда пустой |
reactions | массив | Реакции участников, см. ниже |
pinned | логическое | Закреплено ли сообщение в канале |
flags | число | Флаги сообщения в виде битовой маски, как в Discord |
message_reference | объект | Есть только у ответа. Номер исходного сообщения message_id и канала channel_id |
Поле message_reference есть только у сообщений вида 19. Самого исходного сообщения в ответе нет, только его номер.
Автор
У сообщения вебхука автором считается сам вебхук, с той подписью, с которой сообщение было отправлено.
| Поле | Что это |
|---|---|
id | Номер вебхука, совпадает с webhook_id |
username | Имя, под которым отправлено сообщение. Это username из запроса или имя вебхука по умолчанию |
discriminator | Всегда "0000", так Discord отмечает авторов-вебхуков |
avatar | Отпечаток аватарки, с которой отправлено сообщение. Ссылку из него собирает библиотека, см. Библиотеки |
bot | Всегда true |
Если имя или аватарку вебхука потом изменить, у уже отправленных сообщений подпись останется прежней.
Вложения
| Поле | Тип | Что это |
|---|---|---|
id | строка | Номер вложения. Уникален только внутри своего сообщения |
filename | строка | Имя файла |
url | строка | Ссылка на файл в хранилище Glitch. Ссылка постоянная, пока существует сообщение |
proxy_url | строка | Та же ссылка, что в url |
size | число | Размер в байтах. У картинок и видео сейчас 0, их размер сервер не сохраняет |
content_type | строка | Тип файла, например image/png. Есть, если его можно определить по имени файла |
width, height | число | Размеры картинки или видео в пикселях |
Реакции
| Поле | Что это |
|---|---|
count | Сколько участников поставили эту реакцию |
me | Есть ли среди них вызывающий. У вебхука всегда false |
emoji | Эмодзи реакции, {"id": null, "name": "👍"} |
Упоминания
Упоминания пишутся прямо в тексте сообщения, как в Discord.
| В тексте | Кого упоминает |
|---|---|
@ник | Человека с таким ником, если он видит канал |
@Роль | Всех, у кого есть эта роль. Вебхук может упомянуть любую роль, даже ту, которую людям упоминать нельзя |
@everyone | Всех, кто видит канал |
@here | Всех, кто видит канал и сейчас в сети |
Упомянутые получают уведомление, а упоминание подсвечивается в тексте. Вебхук, как и в Discord, может упоминать всех через @everyone и @here и любую роль сообщества. Если ваша программа пересылает текст, который пишут посторонние люди (например, комментарии к задачам), ограничьте упоминания полем allowed_mentions. Иначе кто-нибудь напишет @everyone, и уведомление получит весь канал.
allowed_mentions
Поле allowed_mentions говорит серверу, какие упоминания в тексте считать настоящими. Без этого поля работают все упоминания из текста.
| Поле | Тип | Что делает |
|---|---|---|
parse | массив | Какие виды упоминаний разрешены целиком. Возможные значения "users", "roles" и "everyone". Пустой массив запрещает все |
users | массив | Номера людей, которых можно упомянуть, до 100 |
roles | массив | Номера ролей, которые можно упомянуть, до 100 |
Неразрешённое упоминание остаётся обычным текстом, без подсветки и без уведомления. Один и тот же вид нельзя указать и в parse, и поимённо, такой запрос получит отказ 50035.
Запретить все упоминания.
{"content": "@everyone выкладка через 5 минут", "allowed_mentions": {"parse": []}}Разрешить упоминать людей, но не всех сразу.
{"content": "@ivan @everyone проверьте", "allowed_mentions": {"parse": ["users"]}}Разрешить только конкретного человека.
{"content": "@ivan @maria проверьте", "allowed_mentions": {"users": ["1053143547551999"]}}allowed_mentions только сужает упоминания. Человек, который не видит канал, не будет упомянут, даже если его номер есть в users.