Advertisement
FeyMen

HYK

Jan 4th, 2025 (edited)
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.98 KB | None | 0 0
  1. local component = require("component")
  2. local event = require("event")
  3. local computer = require("computer")
  4. local internet = require("internet")
  5.  
  6. -- Путь к файлу логов
  7. local LOG_FILE = "/home/discord_relay.log"
  8.  
  9. -- Функция логирования
  10. local function log(message)
  11.     local file = io.open(LOG_FILE, "a")
  12.     if file then
  13.         file:write(os.date("%Y-%m-%d %H:%M:%S") .. ": " .. tostring(message) .. "\n")
  14.         file:close()
  15.     end
  16.     print(message)
  17. end
  18.  
  19. -- Проверка наличия интернет-карты
  20. if not component.isAvailable("internet") then
  21.     log("Ошибка: Интернет-карта не найдена!")
  22.     return
  23. end
  24.  
  25. -- Функция для чтения вебхука из пастебина
  26. local function getWebhookFromPastebin(pastebinUrl)
  27.     local success, content = pcall(function()
  28.         local http = internet.request(pastebinUrl)  -- Отправляем запрос к пастебину
  29.         local data = ""
  30.         for chunk in http do  -- Читаем ответ
  31.             data = data .. chunk
  32.         end
  33.         return data
  34.     end)
  35.    
  36.     if not success then
  37.         log("Ошибка при получении вебхука из Pastebin: " .. tostring(content))
  38.         return nil
  39.     end
  40.     return content
  41. end
  42.  
  43. -- Замените на URL вашего пастебина
  44. local pastebinUrl = "https://pastebin.com/raw/5YGGcMi2"  -- Ваш новый пастебин с вебхуком
  45. local DISCORD_WEBHOOK = getWebhookFromPastebin(pastebinUrl)
  46.  
  47. if not DISCORD_WEBHOOK then
  48.     log("Ошибка: Не удалось получить вебхук из Pastebin")
  49.     return
  50. end
  51.  
  52. log("Webhook получен: " .. DISCORD_WEBHOOK)
  53.  
  54. -- Функция для кодирования JSON
  55. local function encodeJSON(data)
  56.     if type(data) == "string" then
  57.         return '"' .. data:gsub('"', '\\"'):gsub("\n", "\\n") .. '"'
  58.     elseif type(data) == "number" or type(data) == "boolean" then
  59.         return tostring(data)
  60.     elseif type(data) == "table" then
  61.         local result = "{"
  62.         for k, v in pairs(data) do
  63.             result = result .. '"' .. tostring(k) .. '":' .. encodeJSON(v) .. ","
  64.         end
  65.         result = result:sub(1, -2) .. "}"
  66.         return result
  67.     end
  68.     return "null"
  69. end
  70.  
  71. -- Функция для отправки сообщения в Discord
  72. local function sendToDiscord(username, message)
  73.     if not username or not message then
  74.         log("Ошибка: Пустое имя пользователя или сообщение")
  75.         return
  76.     end
  77.  
  78.     local payload = {content = string.format("**%s**: %s", username, message)}
  79.     local jsonPayload = encodeJSON(payload)
  80.     log("JSON Payload: " .. jsonPayload)
  81.  
  82.     -- Логируем вебхук
  83.     log("Отправляем запрос с вебхуком: " .. DISCORD_WEBHOOK)
  84.  
  85.     -- Отправка запроса
  86.     local success, response = pcall(function()
  87.         local connection = internet.request(DISCORD_WEBHOOK, jsonPayload, {["Content-Type"] = "application/json"})
  88.         local data = ""
  89.         for chunk in connection do
  90.             data = data .. chunk
  91.         end
  92.         return data
  93.     end)
  94.  
  95.     if success then
  96.         log("Сообщение отправлено в Discord")
  97.     else
  98.         log("Не удалось отправить сообщение: " .. tostring(response))
  99.     end
  100. end
  101.  
  102. -- Обработчик события чата
  103. local function onChatMessage(_, _, username, message)
  104.     log(string.format("Получено сообщение от %s: %s", username, message))
  105.     sendToDiscord(username, message)
  106. end
  107.  
  108. -- Регистрация обработчика события
  109. event.listen("chat_message", onChatMessage)
  110.  
  111. log("Discord Chat Relay запущен. Сообщения будут пересылаться в Discord.")
  112.  
  113. -- Основной цикл
  114. while true do
  115.     event.pull("chat_message")
  116. end
  117.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement