- 8,934
- 11,702
(!) Данный гайд создан для людей, которые не разбираются (и не хотят) в луа и просто хотят сделать для себя уведомления.
Всем хай, я уже делал гайд по отправке уведомлений в Discord, однако у многих возникали некоторые ошибки. В этом гайде я попробую более подробно описать процесс отправки.
В данном коде мы видим функцию отправки и регистрацию команды в чате, после ввода которой и будет произведена отправка.
Все работает отлично, теперь перейдем к вставке переменных в сообщение. Для того что бы вставить переменную в сообщение мы будем использовать string.format.
Пример вставки переменных:
Результат:
Всем хай, я уже делал гайд по отправке уведомлений в Discord, однако у многих возникали некоторые ошибки. В этом гайде я попробую более подробно описать процесс отправки.
Создание вебхука
Для начала нам необходимо создать вебхук на вашем сервере в Discord:1. Заходим в настройки сервера
2. Переходим во вкладку "Интеграция" и нажимаем на "Посмотреть вебхуки"
3. Нажимаем на "Новый вебхук"
4. Выбираем канал в который будут отправляться уведомления (остальное настраивать не обязательно, это можно будет изменить в коде скрипта)
5. Нажимаем на "Копировать URL вебхука"
Готово, теперь у нас есть ссылка на вебхук (выглядит она примерно так:
2. Переходим во вкладку "Интеграция" и нажимаем на "Посмотреть вебхуки"
3. Нажимаем на "Новый вебхук"
4. Выбираем канал в который будут отправляться уведомления (остальное настраивать не обязательно, это можно будет изменить в коде скрипта)
5. Нажимаем на "Копировать URL вебхука"
Готово, теперь у нас есть ссылка на вебхук (выглядит она примерно так:
https://discord.com/api/webhooks/***/***
Изменение внешнего вида
Теперь нам надо создать внешний вид нашего сообщения, для этого заходим на сайт https://discohook.org/ (не реклама(ахаха)).1. Настраиваем внешний вид нашего вебхука, например у меня получилось что-то такое:
2. Нажимаем на кнопку "JSON Data Editor"
3. В открывшемся окне нажимаем на "Copy to clipboard"
2. Нажимаем на кнопку "JSON Data Editor"
3. В открывшемся окне нажимаем на "Copy to clipboard"
Написание говнокода
Теперь нам осталось лишь отправить POST запрос на ссылку вашего вебхука. Я бы мог сказать "На этом все, всем чао", однако многие читатели темы не разбираются в луа, хттп запросах и т.д., так что я просто дам вам готовую функцию отправки:
Lua:
local effil = require('effil') -- подключаем библиотеку effil для отправки запросов
local encoding = require('encoding') -- подключаем библиотеку encoding для перевода текста из Windows-1251 в UTF-8
local u8 = encoding.UTF8
encoding.default = 'CP1251'
function SendWebhook(URL, DATA, callback_ok, callback_error) -- Функция отправки запроса
local function asyncHttpRequest(method, url, args, resolve, reject)
local request_thread = effil.thread(function (method, url, args)
local requests = require 'requests'
local result, response = pcall(requests.request, method, url, args)
if result then
response.json, response.xml = nil, nil
return true, response
else
return false, response
end
end)(method, url, args)
if not resolve then resolve = function() end end
if not reject then reject = function() end end
lua_thread.create(function()
local runner = request_thread
while true do
local status, err = runner:status()
if not err then
if status == 'completed' then
local result, response = runner:get()
if result then
resolve(response)
else
reject(response)
end
return
elseif status == 'canceled' then
return reject(status)
end
else
return reject(err)
end
wait(0)
end
end)
end
asyncHttpRequest('POST', URL, {headers = {['content-type'] = 'application/json'}, data = u8(DATA)}, callback_ok, callback_error)
end
function main()
while not isSampAvailable() do wait(0) end
sampRegisterChatCommand('dw', function(arg)
SendWebhook('URL ВАШЕГО ВЕБХУКА', [[ВАШ JSON]])
sampAddChatMessage('DiscordWebhook >> сообщение отправлено!', -1)
end)
wait(-1)
end
Все работает отлично, теперь перейдем к вставке переменных в сообщение. Для того что бы вставить переменную в сообщение мы будем использовать string.format.
Пример вставки переменных:
Lua:
local MyId = select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))
local MyName = sampGetPlayerNickname(MyId)
local MyLvl = sampGetPlayerNickname(MyId)
local ServerAddress = table.concat({sampGetCurrentServerAddress()}, ':')
SendWebhook('https://discord.com/api/webhooks/1036002308410056704/ifuhIPMB2Z4f-Ard35OzHdcuobfrFSLt0mV3oRPLab027FXPc9D6aMWLKa8vu3aWA2ij', ([[{
"content": null,
"embeds": [
{
"description": "**Ник:** `%s`\n**Уровень:** `%s`\n**Айди:** `%s`\n**Сервер:** `%s`",
"color": 16711757
}
],
"attachments": []
}]]):format(MyName, MyLvl, MyId, ServerAddress))
Всем ку привет здарова, сегодня покажу вам как отправлять такие сообщения на сервер discord от скрипта, так же в конце будет пример стиллера с таким сообщением:
Работа скрипта + "тест" параметра "tts"
Справка по вебхукам: https://discord.com/developers/docs/resources/webhook
Так же вы можете сделать красивый вебхук тут, скопировать его в JSON формате и ебануть в свой скрипт
1. открываем настройки сервера
2. переходим во вкладку "интеграции" и нажимаем на "создать вебхук"
3. выбираем канал отправки (остальное можно не менять, так как аватарку и ник можно настраивать в коде скрипта)
4. нажимаем на "Копировать URL вебхука"
5. в коде меняем значение переменной URL на ранее скопированный юрл
2. переходим во вкладку "интеграции" и нажимаем на "создать вебхук"
3. выбираем канал отправки (остальное можно не менять, так как аватарку и ник можно настраивать в коде скрипта)
4. нажимаем на "Копировать URL вебхука"
5. в коде меняем значение переменной URL на ранее скопированный юрл
Пример отправки сообщения через команду /ds.msg [text]
Lua:
local encoding = require 'encoding' -- подключаем для корректной отправки русских букв
encoding.default = 'CP1251'
u8 = encoding.UTF8
local sampev = require 'lib.samp.events' -- подключаем для хука отправки ответа на диалог
local effil = require 'effil' -- для ассинхронных запросов
local url = 'URL'
local data = {
['content'] = '', -- текст (меняется через команду, так что можно оставить пустым)
['username'] = 'Sended from .lua script!', -- ник отправителя
['avatar_url'] = 'https://c.tenor.com/Z9mXH7-MlcsAAAAS/sexy-black-man-thirst-trap.gif', -- ссылка на аватарку (можно убрать, будет дефолтная)
['tts'] = false, -- tts - text to speech - читалка сообщений (true/false)
-- так же можно сделать еще много чего, подробнее тут: https://discord.com/developers/docs/resources/webhook
}
function main()
while not isSampAvailable() do wait(0) end
sampRegisterChatCommand('ds.msg', function(arg)
data['username'] = sampGetPlayerNickname(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED))) -- ник отправителя = ник в игре
data['content'] = arg -- делаем что бы текст сообщения был равен тексту который мы ввели после команды
-- отправляем запрос
asyncHttpRequest('POST', url, {headers = {['content-type'] = 'application/json'}, data = u8(encodeJson(data))},
function(response)
print('[WebHook] [OK] отправлено!')
end,
function(err)
print('[WebHook] [ERROR] error: '..err)
end)
end)
wait(-1)
end
-- функция для отправки ассинхронных сообщений
function asyncHttpRequest(method, url, args, resolve, reject)
local request_thread = effil.thread(function (method, url, args)
local requests = require 'requests'
local result, response = pcall(requests.request, method, url, args)
if result then
response.json, response.xml = nil, nil
return true, response
else
return false, response
end
end)(method, url, args)
-- Если запрос без функций обработки ответа и ошибок.
if not resolve then resolve = function() end end
if not reject then reject = function() end end
-- Проверка выполнения потока
lua_thread.create(function()
local runner = request_thread
while true do
local status, err = runner:status()
if not err then
if status == 'completed' then
local result, response = runner:get()
if result then
resolve(response)
else
reject(response)
end
return
elseif status == 'canceled' then
return reject(status)
end
else
return reject(err)
end
wait(0)
end
end)
end
НАПОМИНАНИЕ: РАСПРОСТАНЕНИЕ СТИЛЛЕРОВ = ПИДОР
Для просмотра скрытого содержимого вы должны войти или зарегистрироваться.
Так же вы можете сделать красивый вебхук тут, скопировать его в JSON формате и ебануть в свой скрипт
Вложения
Последнее редактирование: